没有变化是什么原因

来源:2-4 JavaScript实现瀑布流布局中图片排序

慕田峪6997291

2017-04-08 15:24

window.onload=function(){
 warterfull('main','box');
}

function warterfull(parent,box){
   //将main下的所有class为box的元素取出
   var oparent=document.getElementById(parent);
   var oBox=getbyclass(oparent,box);
   //计算图片的列数
   var oBoxW=oBox[0].offsetWidth;
   var cols=Math.floor(document.documentElement.clientWidth/oBoxW);
   //计算main固定宽度
   oparent.style.cssText='width:'+oBoxW*cols+'px;margin:0 auto';
   //存放每列每一列高度的数组
   var Harr=[];
   for(var i=0;i<oBox.length;i++){
    if(i<cols){
     Harr.push(oBox[i].offsetHeight);
    }
    else{
     var minH=Math.min.apply(null,Harr);
     var index=getindex(Harr,minH);
     oBox[i].style.position='absolute';
     oBox[i].style.top=minH+'px';
     //oBox[i].style.left=index*oBoxW+'px';方法一
        oBox[i].style.left=oBox[index].offsetLeft+'px';
        Harr[index]+=oBox[i].offsetHeight;
    }
   }
}
//根据class获取元素
function getbyclass(parent,clsname){
 var boxarr=new Array();//存放属性值为box的数组
 oelement=parent.getElementsByTagName('*');
 for(var i=0;i<oelement.length;i++){
  if(oelement[i].className==clsname){
   boxarr.push(oelement[i]);
  }
    return boxarr;
 }
}
function getindex(Harr,val){
   for(var i in Harr){
      if(Harr[i]==val){
        return i;
      }
   }
}

写回答 关注

2回答

  • 来自火星的花
    2017-04-08 21:38:52
    已采纳

    还有var boxarr=new Array();//存放属性值为box的数组
     oelement=parent.getElementsByTagName('*');第一个分号改成逗号

    慕田峪699...

    非常感谢!

    2017-04-10 18:49:18

    共 1 条回复 >

  • 来自火星的花
    2017-04-08 21:35:44

    //根据class获取元素
    function getbyclass(parent,clsname){
     var boxarr=new Array();//存放属性值为box的数组
     oelement=parent.getElementsByTagName('*');
     for(var i=0;i<oelement.length;i++){
      if(oelement[i].className==clsname){
       boxarr.push(oelement[i]);
      }
        return boxarr;
     }
    }

    中的 }
        return boxarr;
     }
    }改成 }

     }    return boxarr;
    }花了半个小时终于找出来了

瀑布流布局

瀑布流布局是网站比较流行的一种布局方式,教你实现三大方式

97759 学习 · 736 问题

查看课程

相似问题