css实现多列高度自适应的方法

你对CSS布局自适应高度解决方法是否了解,这里和大家分享一下,本文要介绍的方法是采用容器溢出部分隐藏和列的负底边界和正的内补丁相结合的方法来解决列高度相同的问题。
查看DEMO
CSS布局自适应高度解决方法
这是一个比较典型的三行二列布局,每列高度(事先并不能确定哪列的高度)的相同,是每个设计师追求的目标,按一般的做法,大多采用背景图填充、加JS脚本的方法使列的高度相同,本文要介绍的是采用容器溢出部分隐藏和列的负底边界和正的内补丁相结合的方法来解决列高度相同的问题。
先看代码:


  1. #wrap{
  2. overflow:hidden;
  3. }
  4. #sideleft,#sideright{
  5. padding-bottom:32767px;
  6. margin-bottom:-32767px;
  7. }
实现原理:
块元素必须包含在一个容器里。
应用overflow:hidden到容器里的元素。
应用padding-bottom(足够大的值)到列的块元素。
应用margin-bottom(足够大的值)到列的块元素。
padding-bottom将列拉长变的一样高,而负的margin-bottom又使其回到底部开始的位置,同时,溢出部分隐藏掉了。
兼容各浏览器
IEMac5
得到高度正确,所以要过滤掉上面的代码。

  1. /*\*/
  2. #sideleft,#sideright{
  3. padding-bottom:32767px;
  4. margin-bottom:-32767px;
  5. }
  6. /**/
Opera
1.Opera7.0-7.2不能正确清除溢出部分,所以要加:

  1. /*easyclearing*/
  2. #wrap:after
  3. {
  4. content:'[DONOTLEAVEITISNOTREAL]';
  5. display:block;
  6. height:0;
  7. clear:both;
  8. visibility:hidden;
  9. }
  10. #wrap
  11. {
  12. display:inline-block;
  13. }
  14. /*\*/
  15. #wrap
  16. {
  17. display:block;
  18. }
  19. /*endeasyclearing*/
  20. /*\*/
2.Opera8处理overflow:hidden有个BUG,还得加上以下代码:

  1. /*\*/
  2. #sideleft,#sideright
  3. {
  4. padding-bottom:32767px!important;
  5. margin-bottom:-32767px!important;
  6. }
  7. @mediaalland(min-width:0px){
  8. #sideleft,#sideright
  9. {
  10. padding-bottom:0!important;
  11. margin-bottom:0!important;
  12. }
  13. #sideleft:before,#sideright:before
  14. {
  15. content:'[DONOTLEAVEITISNOTREAL]';
  16. display:block;
  17. background:inherit;
  18. padding-top:32767px!important;
  19. margin-bottom:-32767px!important;
  20. height:0;
  21. }
  22. }
  23. /**/
【css实现多列高度自适应的方法】 3.Opera9的B2在修正8的bug.
测试环境:IE5.01、IE5.5、IE6.0、Firefox1.5、Opera8.5、Netscape7.2通过。

    推荐阅读