将表单元素分组为“p”是否可以?

时间:2009-06-08 10:09:18

标签: html xhtml semantics

假设我有这段代码

<form action="#" method="get">
    <p>
        <label for="name">Name:</label>
        <input type="text" name="name" />
    </p>
    <p>
        <input type="submit" />
    </p>
</form>

使用 p 对元素进行分组是否合乎逻辑?因为我的老师(再次......我知道......:P)告诉我, p 应仅用于段落,我应该使用 div ,但我可以看, p 被广泛使用,几乎无处不在。

我能想到的最后一种可能性是<br />,我认为这是最糟糕的方式。

哪一个最好用?

  • <div>
  • 换行
  • <p>
  • 换行 最后
  • <br />

7 个答案:

答案 0 :(得分:9)

Check out this related questionthis one

老实说,我不认为这是一个大问题,但使用<fieldset>可能是最符合语义的方法,可以让老师开心。但是,在现实世界中,我有时会按<p>对表单进行分组。

答案 1 :(得分:5)

我认为最具语义性的方法是使用列表元素来完成,如Prettier Accessible Forms中所述,因为大多数表单实际上很像要填写的字段列表,我觉得它最有意义,语义。

如果你想拥有一组字段,fieldset对此有好处,但我几乎总是将每个表单项放在<li>中。

答案 2 :(得分:1)

从语义上讲,我会(在这种情况下)同意你的老师并且更喜欢&lt; div&gt; over&lt; p&gt;。

答案 3 :(得分:1)

我对单个表单字段使用<div class="field">...</div>,对相关字段组使用<fieldset>...</fieldset>

对于表单末尾的按钮(提交/重置/返回/等),我使用<fieldset class="controls">...</fieldset>


(我还有一组CFML自定义标记脚本,可以为我生成HTML,所以我可以编写,例如<form:edit id="MyField" label="My Field" ...etc... />,它可以生成适当的HTML,而不需要大量重复的源代码。)

答案 4 :(得分:1)

你的老师是对的。 P =段落。那么问问自己这个问题,这是一段文字吗?如果不是不使用它。

你不会因为它是圆的而在板球上踢足球

答案 5 :(得分:0)

我会使用<div/>包装它,然后使用CSS适当地设置样式。

在我看来,页面结构与该页面的布局/样式之间的分离更加清晰。例如你以后可以自由地为不同的设备设计样式,打印ec。

答案 6 :(得分:0)

也不是,IMO。

Fieldset与列表(或者甚至是表格​​)相结合在语义上更加正确。

  • P显然是错误的,因为表格不是段落。
  • DIV没有任何语义含义 - 它只是“某事物的一部分”,因此单独使用它来包含表单毫无意义。
  • BR的拆分没有任何意义,因为您还可以在标签和/或输入字段上提供样式以模拟换行符。