首先,感谢一个好问题!
这显然是一个表格,而不是一个表格。它的布局并不重要,表格的重点是指定您正在显示适合列表的数据(将其视为简单列表的组合。)您的用例是收集输入,它它的布局是否有点像一个表单并不重要。
当然,如果您不真正关心语义,这些都不重要。在这种情况下,我说使用你想要的任何东西。无论如何,有很多例子和框架可以做你想做的事,但你自己做也不是特别难。事实上,如果您愿意,它可以非常像布置一张桌子。我会引导你完成它。
( tl;博士)
首先,一些标记:
<form>
<label><span>Name:</span><input name="name" type="text"></label>
<label><span>Surname:</span><input name="surname" type="text"></label>
<label><span>Age:</span><input name="age" type="text"></label>
<label><span>Job:</span><input name="job" type="text"></label>
</form>
这不是特别棘手的标记。如您所见,我没有添加任何类,稍后我会讲到。但首先,我想在没有任何额外标记的情况下向您展示如何将其转换为您要求的布局:
form {
display: table;
}
label {
display: table-row;
}
label > * {
display: table-cell;
}
label > :first-child {
text-align: right;
padding-right: 10px;
}
就是这样。通过使用 css 和table
,table-row
和table-cell
标题作为显示值,创建一个类似于布局的表格非常简单,而不必牺牲语义标记。这个 css 不会改变表单的语义或可访问性,它只是为浏览器提供了如何布局的线索。现在,您还询问了有关为此添加标题的问题。不幸的是,将标记更改为以下内容不会真正起作用:
<form>
<div>
<span>Field</span><span>Value</span>
</div>
<label><span>Name:</span><input name="name" type="text"></label>
<label><span>Surname:</span><input name="surname" type="text"></label>
<label><span>Age:</span><input name="age" type="text"></label>
<label><span>Job:</span><input name="job" type="text"></label>
</form>
这是因为我们的样式规则不包括 div 的任何选择器。现在,有很多方法可以解决这个问题,各有利弊。您可能会遇到对这一领域的最佳实践有不同看法的人,但老实说,这主要取决于什么对您有用。我想说,只要你让人类和机器人都可以访问标记——这确实意味着试图保持语义并利用微格式等——然后在上面添加任何额外的樱桃来完成工作是 A-好的!
无论如何,这是一种方法,可以让您的创意源源不断。首先,标记:
<form>
<div class="form-row">
<span>Field</span><span>Value</span>
</div>
<label class="form-row"><span>Name:</span><input name="name" type="text"></label>
<label class="form-row"><span>Surname:</span><input name="surname" type="text"></label>
<label class="form-row"><span>Age:</span><input name="age" type="text"></label>
<label class="form-row"><span>Job:</span><input name="job" type="text"></label>
</form>
然后是CSS:
form {
display: table;
}
.form-row {
display: table-row;
}
.form-row > * {
display: table-cell;
}
.form-row > :first-child {
text-align: right;
padding-right: 1em;
}
正如你所看到的,所有必须改变的是我们引入了类form-row
来对我们的内容进行分类,并将label
css 中的选择器替换为.form-row
. 现在有很多方法可以解决这个问题,我希望你花一些时间来玩弄它,因为有很多东西要学(语义、微格式、css 实践等)
希望这可以帮助!