才子小窝

天生我才必有用,千金散尽还复来

« 解决IE6下PNG图片不透明的问题定义列表+CSS制作的垂直菜单 »

div+css布局中多列等高处理

div+css布局中多列等高的问题可能大家都碰到过,网上也有一系列的处理方法,有的用背景来处理,有的用内外边距相抵来处理,才子觉得都不是非常好用,不太方便。最近帮人改版一个网站,也碰到这个问题,于是就写了一个两列等高的javascript函数来处理。后来想想可能有三列,四列或更多的情况下怎么办呢?改一改函数就行了,当然可以,但显得不通用了,于是写了下面这个函数,理论上是无限列都可以处理,当然实际上不太可能,一个页面最多也不至于多过4,5个列吧。
看代码:

function autoHeight() {
  if (arguments.length > 1) {  //参数个数必须大于1才执行函数
    
    var x = arguments.length;  //计算参数个数
    var elements=[];  //定义一个临时数组容器
    //循环取出各个列的高度值
    for (i=0; i<x; i++) {
      elements.push(document.getElementById(arguments[i]).scrollHeight);
    }
    //用冒泡法取出最大列高的值
    var max = elements[0];
    for(i=0; i<x; i++) {
      if(max < elements[i]) {
        max = elements[i];
      }
    }
    //再用循环将最大列高的值赋予各个列
    for (i=0; i<x; i++) {
      document.getElementById(arguments[i]).style.height = max+"px";
    }
  }
}

用了最原始的冒泡法来取得最大列高的项目,其实冒泡法的效率是比较低的,但想到实际应用中最多也应该不会超过4,5个列,那效率就根本不是问题了,没任何感觉。
如果各位有什么好的算法可以快速的取出一个数组中最大值,请回复告知,谢谢。

做了个演示页面:http://www.54caizi.org/demo/autoHeight.html

风流才子 作品,转帖请保留原文地址链接,谢谢合作!
才子小窝http://www.54caizi.org

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新评论及回复

最近发表


Copyright 2008-? 才子小窝. Some Rights Reserved. 
粤ICP备08040021号  网站地图