window.onload=function(){ getE('main','box'); var dataint={'data':[{'src':'0.png'},{'src':'1.png'},{'src':'2.png'},{'src':'3.png'},{'src':'4.png'},{'src':'5.png'}]} window.onscroll=function(){ if(sfons){ var oparent=document.getElementById('main'); for(var i=0;i<dataint.data.length;i++){ var cb=document.createElement('div');//创建一个div cb.className='box';//加一个box class属性 oparent.appendChild(cb);//添加到oparent的尾部 var cp=document.createElement('div'); cp.className='pic'; cb.appendChild(cp); var ci=document.createElement('img'); ci.src='./img/'+dataint.data[i].src; cp.appendChild(ci); } getE('main','box'); } } } function getE(parent,box){ //将mian下的box取出来 var oparent=document.getElementById(parent); var boxl=getbcls(oparent,'box'); //获取一个盒子的宽度,看可以分成几列 var boxw=boxl[0].offsetWidth; var clus=Math.floor(document.documentElement.clientWidth/boxw); //设置main的宽 oparent.style.cssText=''+clus*boxw+'px;margin:0 auto'; //取高度最小的盒子,在其后面加下一张呢图片 var arrh=new Array();//存放几列的高度 for(var i=0;i<boxl.length;i++){ if(i<clus){ arrh.push(boxl[i].offsetHeight); } else{ var minh=Math.min.apply(null,arrh); //获取最小高度 var index=getw(arrh,minh); //得到最小高度位于的那列 boxl[i].style.position='absolute'; //绝度定位,把对象卡在那里 boxl[i].style.top=minh+'px'; boxl[i].style.left=index*boxw+'px'; arrh[index]+=boxl[i].offsetHeight; //把新的高度传给arrh } } } //获取class function getbcls(parent,clsnm){ var boxarr=new Array(); //用来存放class数组 var oele=parent.getElementsByTagName('*'); for(var i=0;i<oele.length;i++){ if(oele[i].className==clsnm){ boxarr.push(oele[i]); } } return boxarr; } //找到高度最小的那列 function getw(arr,val){ for(var i in arr){ if(arr[i]==val){ return i; } } } //是否具备加载数据块的条件 function sfons(){ var oparent=document.getElementById('main'); var boxa=getbcls(oparent,'box'); var lasth=boxa[boxa.length-1].offsetTop+Math.floor(boxa[boxa.length-1].offsetHeight/2);//图片高度 var scrl=document.body.scrollTop||document.documentElement.scrollTop;//滚动条滚动的距离 var wh=document.body.clientHeight||document.documentElement.clientHeight;//屏幕的高度 return (lasth<srcl+wh)?true:false;//判断是否具备加载的距离 }