为什么我做的和老师做出的效果不一样

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

程显艺

2015-09-06 17:54

<script type="text/javascript">
window.onload=function(){
waterfall('main','box');
}
function waterfall(parent,box){
//将main下的所有class为box的元素取出来
var oParent=document.getElementById(parent);//取出大盒子
var oBoxs=getByClass(oParent,box);
var oBoxW=oBoxs[0].offsetWidth;
//计算整个页面显示的列数(页面宽/box宽)
var clos=Math.floor(document.documentElement.clientWidth/oBoxW);
//设置大盒子main的宽度
oParent.style.cssText='width:'+oBoxW*clos+'px;margin:0 auto';
var hArr=[];//存放每一列高度的数组
for (var i = 0; i < oBoxs.length;i++) {
if(i<clos){
hArr.push(oBoxs[i].offsetHeight);
}else{
var minH=Math.min.apply(null,hArr);
//console.log(minH);打印
var index=getMinhIndex(hArr,minH)
oBoxs[i].style.position='absolute';
oBoxs[i].style.top=minH+'px';
//oBoxs[i].style.left=oBoxW*index+'px';//方法一
oBoxs[i].style.left=oBoxs[index].offsetLeft+'px';//方法二
hArr[index]+=oBoxs[i].offsetHeight();
}
};
console.log(hArr);
}
//根据class获取元素--封装
function getByClass(parent,clasName){
var boxArr=new Array(),//用来存储获取到的所有class为box的元素
oElements=parent.getElementsByTagName('*');
for (var i = 0; i < oElements.length; i++) {
if (oElements[i].className==clasName) {
boxArr.push(oElements[i]);
};
};
return boxArr;
}
function getMinhIndex(arr,val){
for (var i in arr) {
if (arr[i]==val) {
return i;
} else{};
};
}
</script>

http://img.mukewang.com/55ec0d5a0001bbbe17760662.jpg


写回答 关注

2回答

  • 月光光光
    2015-10-06 18:17:29

    26行:hArr[index]+=oBoxs[i].offsetHeight();

    offsetHeight后面的括号

  • jiujiejie
    2015-10-03 17:06:37

    var oBoxs=getByClass(oParent,box); 这个box打上引号就可以,但是我也不知道为什么函数调用什么时候打引号什么时候不打

瀑布流布局

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

97759 学习 · 736 问题

查看课程

相似问题