首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么IE (和Firefox4)不能正确地包装它?(hasLayout??)

为什么IE (和Firefox4)不能正确地包装它?(hasLayout??)
EN

Stack Overflow用户
提问于 2011-05-19 08:35:53
回答 4查看 561关注 0票数 2

我有以下(http://jsfiddle.net/gVZwr/4/):

代码语言:javascript
复制
<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之外,没有什么能修复它。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-19 14:22:34

您的问题是,overflow设置为visible以外的任何值的inline-block元素的基线都在框的底部边缘(实际上是框的下边距),而不是文本基线。参见http://www.w3.org/TR/CSS21/visudet.html#propdef-vertical-align最后一段。

然后,该基线(在您的情况下基本上对应于span边框的下边缘)与label的基线对齐,这是标签中文本的实际基线。因此,label的文本在视觉上结束于span文本的下方。

WebKit在这里没有遵循规范,而且似乎不愿意改变这一点,因为有一些特定于WebKit的非Web内容依赖于它当前的行为。这就是为什么您在WebKit中看不到效果的原因。

Opera 11在这里做了与IE和Firefox相同的事情。

哦,至于修复,你可以改变label的垂直对齐方式,或者去掉span上的overflow,假设你实际上需要spaninline-block

票数 5
EN

Stack Overflow用户

发布于 2011-05-19 08:44:57

尝试垂直对齐:http://jsfiddle.net/gVZwr/2/

票数 3
EN

Stack Overflow用户

发布于 2011-05-19 08:46:06

<label> inline-block也做出来怎么样?我认为inline-block会影响元素的垂直对齐方式。

(离开主题,请参阅@josmh’s answer,了解<label>的用途,即标签表单域。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6052573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档