假设我有这段代码
<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 />
答案 0 :(得分:9)
Check out this related question和this 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与列表(或者甚至是表格)相结合在语义上更加正确。