【发布时间】:2014-01-16 21:27:08
【问题描述】:
是否有解决方案将每个表单元素移动到新行而不关闭 div 上的这些元素?
我的意思是:
<label for="one">One:</label> <input type="text" id="one">
<label for="two">Two:</label> <select id="two">
<option value="a">a</option>
<option value="b">b</option>
</select>
...
显示:
One: [.......]
Two: [a \/]
and so on...
如果我穿上 CSS:
input, select, label {
display:block;
}
那么标签与表单域不在同一行。
是唯一的解决方案:
<div><label for="one">One:</label> <input type="text" id="one"></div>
...
【问题讨论】:
-
为什么不在表单元素后面加上
<br>? -
这不是使用 CSS 样式的“正确”方式
-
我认为使用 div 进行包装可以让您在设置表单样式时更加灵活,这是一种常见的做法。
-
所以你的意思是在没有额外标记的情况下开始一个新的行或块?
-
在不改变标记的情况下,您可以 (i) 向左浮动所有内容并清除左侧标签;或 (ii) 浮动并清除左侧标签并使控件显示块;或 (iii) 使用 label:before 注入一个换行符;或 (iv) 注入带有标签的块级框:之前;或 (v) 绝对定位一切。