我在网上看到很多表单的布局都是像这样的:
<form>
<p><input></p>
</form>
令人惊讶的是,这在规范中也有描述:引导任何表单的是一个form元素,在其中放置控件。大多数控件由input元素表示,默认情况下提供了单行文本字段。要为控件设置标签,使用label元素;标签文本和控件本身都位于label元素内部。表单的每个部分都被认为是一个段落,并通常使用p元素与其他部分分隔开来。综合起来,以下是如何询问客户姓名的示例:
尽管该节不具规范性,但我仍然认为这是不好的做法,也不够语义化。我猜想目的是将输入放在自己的一行上,但这些元素的显示应该使用CSS控制,对吗?
W3C为什么建议以这种方式布局表单?我是否遗漏了什么?
<p>
仅用于呈现。HTML5引入了许多标签,如<address>
和<time>
,旨在为标记提供语义含义,但规范使输入和段落等效。 - Raduaddress
在HTML5之前就存在了。</aside>你所创建的内容的意义取决于它被阅读的方式。一系列命令可以是无序列表,也可以是一系列段落,这完全取决于上下文。表单通常是一系列请求:Name__、Email__、Password__、Repeat Password__等。如果您希望它作为一个连续的段落来阅读,请使用一个元素。如果您希望它作为一个列表来阅读,请使用ul
。如果您希望它作为一组语句来阅读,请使用多个p
元素。如果您希望它作为一组名称-值对来阅读,请使用table
。这取决于您。 - zzzzBov