方法 #1 的效果要好得多,原因有很多,主要涉及灵活性和 Kevin Boucher 提到的其他观点,以及您自己关于动态创建的观点。
我不建议不要包含元素——即使它很有可能——你否认自己在填充、定位和溢出处理方面有很多额外的能力。它还使动态创建更加棘手。
考虑到您可以通过类为 CSS 中的标签容器设置一个宽度,您使用方法 #2 的论点也不一定有好处,这可以轻松更改或设计为响应式。基本上意味着您只有一个地方可以再次更改标签尺寸。
同样使用#2,虽然使您的水平标签布局更加自动化 - 考虑到您必须为标签和字段容器提供相同的高度才能对齐,垂直布局将变得更加手动和棘手(因为它们不能依赖共同父母)。我猜你会有比列更多的行,所以这只会增加工作;)
CSS:
.field-row {
overflow: hidden;
}
.field-row label {
display: block;
width: 30%;
float: left;
}
.field-row .field-container {
width: 70%;
float: left;
}
标记:
<div class="field-row">
<label>Label Text</label>
<div class="field-container">
<input type="text" />
</div>
</div>
我自己可能会选择上述内容,因为这将涵盖我曾经需要的大部分内容,但是如果您想要对应用程序中可能发生的未来更改进行更多控制,您可以执行以下操作:
CSS 2:
.field-row {
overflow: hidden;
}
.field-row .label-container {
width: 30%;
float: left;
}
.field-row .field-container {
width: 70%;
float: left;
}
标记2:
<div class="field-row">
<div class="label-container"><label>Label Text</label></div>
<div class="field-container">
<input type="text" />
</div>
</div>
只需添加一个额外的包装器,您就可以使用更复杂的标签(即隐藏文本并用图像替换,或使用 js 添加解释性文本) - 您还可以在居中或右对齐方面给予自己更多的控制权。
无论如何只是我的想法:)