先看代码:
#wrap{ overflow: hidden; }#sideleft, #sideright{ padding-bottom: 32767px; margin-bottom: -32767px; }实现原理: 块元素必须包含在一个容器里。 应用overflow: hidden 到容器里的元素。 应用 padding-bottom(足够大的值)到列的块元素 。 应用margin-bottom(足够大的值)到列的块元素。
padding-bottom将列拉长变的一样高,而负的margin-bottom又使其回到底部开始的位置,
同时,溢出部分隐藏掉了。
IE Mac 5
得到高度正确,所以要过滤掉上面的代码。
/*\*/#sideleft, #sideright{ padding-bottom: 32767px; margin-bottom: -32767px; }/**/
Opera
1. Opera7.0-7.2不能正确清除溢出部分,所以要加:
/* easy clearing */#wrap:after { content: '[DO NOT LEAVE IT IS NOT REAL]'; display: block; height: 0; clear: both; visibility: hidden; }#wrap { display: inline-block; }/*\*/#wrap { display: block; }/* end easy clearing *//*\*/
2. Opera8处理overflow: hidden有个BUG,还得加上以下代码:
/*\*/#sideleft, #sideright { padding-bottom: 32767px !important; margin-bottom: -32767px !important; }@media all and (min-width: 0px) {#sideleft, #sideright { padding-bottom: 0 !important; margin-bottom: 0 !important; }#sideleft:before, #sideright:before { content: '[DO NOT LEAVE IT IS NOT REAL]'; display: block; background: inherit; padding-top: 32767px !important; margin-bottom: -32767px !important; height: 0; }}/**/
Opera9的B2在修正8的bug.
测试环境:IE5.01、IE5.5、IE6.0、Firefox1.5、Opera8.5、Netscape 7.2通过。
最终效果
原文:http://www.positioniseverything.net/articles/onetruelayout/equalheight
请注意:网友momomolo测试时发现,当页面长度到2000px,opera中就出问题了,现在还没有解决的办法.