为什么W3C建议在<p>标签中包装输入元素?</p>

时间:2011-08-03 23:17:50

标签: html forms w3c semantic-markup

我在网上看到很多例子,其中的表格如下:

<form>
    <p><input></p>
</form>

令我惊讶的是,spec

中也对此进行了描述
  

任何表单都以表单元素开头,其中放置了表单元素   控制。大多数控件由input元素表示,即by   default提供单行文本字段。标签控件,标签   使用元素;标签文本和控件本身进入   标签元素。表单的每个部分都被视为段落,而且是   通常使用p元素与其他部分分开。把这个   在一起,这是一个人可能会如何询问客户的名字:

虽然这部分是非规范性的,但在我看来,这仍然是不好的做法而不是语义。我想目的是将输入放在他们自己的行上,但不应该使用CSS来控制这些元素的显示吗?

W3C建议表格是否有这样的原因?我错过了什么吗?

4 个答案:

答案 0 :(得分:28)

如果您正在以有意义的(读取:语义)方式编写表单,则需要将文本流引导到元素:

<form>
 <p><label for="firstName">Please enter your first name:</label><input id="firstName" type="text" /></p>
</form>

更好的方法是将表单视为mad-libs脚本:

<form>
  <p>Hello. My <label for="firstName">name</label> is <input id="firstName" type="text" />...</p>
</form>

p元素不是标记表单的唯一方法。如果正在添加/编辑数据矩阵,则使用表格在语义上是有效的。

在其他情况下,您可能想要使用包装元素。这取决于您希望提供的 内容 。担心在 之后将所有内容设置为样式,你已经整理了内容。

答案 1 :(得分:2)

INPUT元素是内联的,因此将它们包装在某种块元素中是有意义的,因此它们之间存在自然的分离。由于默认情况下DIV没有边距,使用段落是否有意义?

答案 2 :(得分:1)

没有一个领先的css / html / grid框架正在使用P标记

点击此处bootstrapfoundation

imho使用fieldset和div。

虽然w3c建议使用段落标签<p>,但遵循他们的建议几乎没有任何意义。原因是:你在限制自己。也就是说:如果您使用p标签编写组件,则无法在其中放置div。 Putting <div> inside <p> is adding an extra <p>

好吧,为什么你要在p标签内加一个div?好吧......为什么不呢?例如,您希望以某种方式设置内容样式,或添加一些信息。使用p代码,您现在就被卡住了。对我来说这似乎也是一个糟糕的建议。

答案:

  

在您的内容整理后担心样式

假设你知道你需要什么,比如说,从现在起1年。

我的建议:你不想成为

&#34;我希望我没有使用限制性P标签&#34;

答案 3 :(得分:0)

这适用于HTML 4,可能不适用于请求的HTML 5。

http://www.w3.org/TR/html401/interact/forms.html#edef-FORM

form需要一个块级元素作为子元素。 input是内联元素。 p可以解决问题。