Kampfer的记事本

新blog:www.kampfer-lw.com

导航

CSS实现元素等高自适的几种方法

Posted on 2010-07-26 19:12  Kamfper  阅读(473)  评论(0编辑  收藏  举报

1.使用背景图片实现等高自适。
这种方法感觉上是种视觉上的欺骗,实际是布局元素的高度并不是相等的。原理是:将需要等高自适的块(如A、B)都包含在一个容器C中,给容器C一个背景图片,这张图片包含需要等高自适的块A和B的背景(图片要处理好,像素要算准)。当A、B高度不等时,由于较高的块将容器C给撑开了,那么容器C的背景图片显示的高度就是较高者的高度,导致视觉上A、B两者的高度似乎相等了,实际是不相等的。
实际操作方法和Demo参看:http://www.52css.com/article.asp?id=898

 

2.利用边距和填充实现 (推荐!)
方法:给A和B分别添加CSS属性:padding-bottom:10000px;margin-bottom:-10000px;另外给容器C添加CSS属性:overflow:hidden;
这种方法可以归纳为:“隐藏容器溢出”、“正内补丁”和“负外补丁”结合。
Demo:http://www.hemin.cn/blog/?p=761#more-761


3.使用table
老旧的table布局方式可以方便的实现等高。

 

4.使用javascript
代码如下:

代码
1 function equal_height(ele1,ele2){
2 if(!(document.getElementById(ele1))) return false
3 if(!(document.getElementById(ele2))) return false;
4 var mainCon=document.getElementById(ele1).scrollHeight;
5 var sidebar=document.getElementById(ele2).scrollHeight;
6 layoutHeight=Math.max(mainCon,sidebar);
7 document.getElementById(ele1).style.height=layoutHeight+"px";
8 document.getElementById(ele2).style.height=layoutHeight+"px";
9  }

 

上面是代码的主要部分,作用是判断最大高度并将所有列的高度替换成最高高度。Math的对象的max方法可以接受任意多的参数,所以这个判断函数可以保证多个列等高自适。