标签:
问题的条件有:
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定位下的区别有:
.innerabsolute定位: .inner设置了100%高度,即100%的包含块的高度,即外层容器的padding-edge高度,也就是外层容器的 200px padding高度 + 300px content-box高度 = 500pxIE8浏览器,.innerabsolute定位: .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