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

Rad*_*adu 29 html forms w3c semantic-markup

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

<form>
    <p><input></p>
</form>
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,这也在规范中描述:

任何表单都以表单元素开头,其中放置控件.大多数控件由input元素表示,默认情况下提供单行文本字段.要标记控件,使用标签元素; 标签文本和控件本身进入label元素.表单的每个部分都被视为段落,并且通常使用p元素与其他部分分开.将这些放在一起,以下是人们可能会询问客户姓名的方式:

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

有没有理由为什么W3C会以这种方式建议表格?我错过了什么吗?

zzz*_*Bov 29

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

<form>
 <p><label for="firstName">Please enter your first name:</label><input id="firstName" type="text" /></p>
</form>
Run Code Online (Sandbox Code Playgroud)

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

<form>
  <p>Hello. My <label for="firstName">name</label> is <input id="firstName" type="text" />...</p>
</form>
Run Code Online (Sandbox Code Playgroud)

一个p元素是不加价形式的唯一途径.如果正在添加/编辑数据矩阵,则在语义上使用表是有效的.

在其他情况下,你可能希望使用一个包装元素.这取决于您想要提供的内容.在完成内容整理后,担心所有样式.