【发布时间】:2012-01-28 15:10:24
【问题描述】:
所以我看过很多教程,但仍然没有对这个问题提出一个有凝聚力的答案:标记表单的正确/最佳方法是什么,其中我有一个由标签、控件组成的元素的逻辑分组(输入或选择),以及以前的值,即单个字段?
我希望 CSS 布局将每个分组放在新的水平线上。
我见过<div> 包装器、<br> 标签、<ul>、<fieldset>、<tr>,并且没有任何东西(即没有标记标签,只有 CSS)用于此目的。
表格除了在表单布局方面表现不佳外,当行的格式需要变化时也不是很灵活。而br 似乎是一个可怕的想法(即使我在教程中看到过)。我已经在使用fieldset 在表单中创建字段的逻辑分组,但如果它在语义上比div 更正确,我总是可以使用两个不同的类。 ul 方法似乎很奇怪......外部fieldset 将多个字段分组,为什么我需要一个ul 也将它们分组?
我真的很喜欢这个设计中标记的简单性:http://woork.blogspot.com/2008/06/clean-and-pure-css-form-design.html。但是我很难调整 CSS 来处理更复杂的字段,例如逻辑上属于一起的选择和输入。
那么在这个例子中,我在下面的字段 #1 和字段 #2 周围加上什么(如果有的话)?
<form .....>
<fieldset> <legend>Group 1</legend>
<!-- 'field #1' -->
<label for="newName">Name</label>
<input type="text" id="newName">
<!-- oldVal Filled in with Javascript or server-side script -->
<span class="oldVal" id="oldName">Old Name</span>
<!-- 'field #2' -->
<label for="newFood">Favorite Food</label>
<select id="newFood">
<option value="pizza">Pizza</option>
<option value="tacos">Tacos</option>
<option value="other">Other</option>
</select>
<input type="text" id="newFoodOther"> <!-- type here when 'other' is selected -->
<span class="oldVal" id="oldFood">Pizza</span>
</fieldset>
<fieldset> <legend> Group 2</legend>
<!-- more fields here -->
</fieldset>
</form>
控制表单布局最容易使用的是什么,语义上最正确的是什么?我是否有幸拥有这些相同的东西?
【问题讨论】:
-
如果您还没有看到 Twitter Bootstrap 处理表单的方式,那么值得一看:twitter.github.com/bootstrap/#forms。请记住,这将在 Bootstrap 的第 2 版中发生变化。
-
只使用一个 div。 coding.smashingmagazine.com/2011/11/11/…
-