我有以下(http://jsfiddle.net/gVZwr/4/):
<div>
<label>From</label>
<span>Some Content Goes Here</span>
</div>
span {
display: inline-block;
overflow:hidden;
}
在IE8 / 9中,标签和跨度不对齐(标签低于跨度)。
为什么???我可以通过在标签上放置overflow:hidden
来修复它,但我想知道是什么导致了它。我尝试了旧的“hasLayout”修复程序,例如将zoom:1
放在标签上,但除了具体的overflow
之外似乎没有任何修复。
答案 0 :(得分:5)
您的问题是inline-block
overflow
元素设置为visible
以外的任何其他元素的基线位于框的下边缘(实际上,框的下边距)而不是在文本基线处具有基线。见http://www.w3.org/TR/CSS21/visudet.html#propdef-vertical-align最后一段。
然后,那个基本上对应于你情境中span
边界的底边的基线与label
的基线对齐,label
是该文本的实际基线。标签。因此,span
的文字最终会在label
的文字下方结束。
WebKit不遵循此处的规范,似乎不愿意改变它,因为WebKit特定的非Web内容依赖于其当前行为。这就是为什么你没有在WebKit中看到效果。
根据规范,Opera 11在这里与IE和Firefox做同样的事情。
哦,就修复而言,您可以更改overflow
的垂直对齐,也可以取消span
上的span
,假设您确实需要inline-block
1}}为{{1}}。
答案 1 :(得分:3)
尝试vertical-align:http://jsfiddle.net/gVZwr/2/
答案 2 :(得分:2)
如何制作<label>
inline-block
呢?我认为inline-block
会影响元素的垂直对齐。
(并且,偏离主题,请参阅@josmh’s answer了解<label>
的用途,即标记表单字段。)
答案 3 :(得分:0)
这可能是因为<label>
应该是bound to something。以下是some examples。