标签:
问题的条件有:
overflow:hidden;
,并同时设置了height
和min-height
,同时height计算值
< min-height
期待结果:
min-height
和height
,同时height计算值
小于min-height
。因为height
权重小于min-height
,最终A元素的content-box高度计算值应以min-height
为准IE8的bug是:
height计算值
小于min-height
的同时,误取了heihgt
值作为其包含块的content-box部分百分比top
/bottom
/百分比height
均受到影响,因此,B元素的位置可能受到影响http://jsfiddle.net/humphry/Xzy28/7/
http://jsfiddle.net/humphry/NSCLa/8/
我们看一下渲染结果的区别。
absolute | static | |
其他浏览器 | 外层高500/内层高500 | 外层高500/内层高300 |
IE8 | 外层高500/内层高220 | 外层高500/内层高20 |
我们先看看外层的计算。
.wrapper
的height
是20px,被min-height
的300px覆盖,最终的高度值为:100px padding-top
+ 100px padding-bottom
+ 200px height计算值
= 500px。这里所有的浏览器都计算正确。
对于内层,IE8/其他正常浏览器,在absolute定位和static定位下的区别有:
.inner
absolute定位: .inner
设置了100%高度,即100%的包含块的高度,即外层容器的padding-edge高度,也就是外层容器的 200px padding高度
+ 300px content-box高度
= 500pxIE8浏览器,.inner
absolute定位: .inner
的包含块的content-box高度
误用了height
值而非min-height值
,计算出来高度值为 200px padding高度
+ 20px height高度
= 220px
正常浏览器,.inner
static定位: .inner
设置了100%高度,即100%的包含块的高度,即外层容器的content-box高度,也就是外层容器的 300px content-box高度
= 300px
.inner
static定位: .inner
的包含块的content-box高度
误用了height
值而非min-height
值,计算出来高度值为 20px height高度
= 20pxoverflow:hidden;
overflow:hidden;
加在不【同时设置height
、min-height
,且height计算值
<min-height
】的元素上参考资料
bug记录:IE8,包含块min-height/height共存时的高度计算bug
标签:
原文地址:http://www.cnblogs.com/calin/p/4551749.html