求问:js瀑布流为什么从后台得到的图片加上去没有瀑布流的效果?

来源:3-1 jQuery实现瀑布流布局图片定位

aladdinx

2016-04-21 16:58

window.onload = function(){

waterfall("main","box");

var dataInt={"data":[{"src":'1.jpg'},{"src":'2.jpg'},

{"src":'3.jpg'},{"src":'4.jpg'},]}

window.onscroll=function(){

if (checkScrollSlide()) {

var oParent = document.getElementById('main');

for(var i=0;i<dataInt.data.length;i++){

var oBox = document.createElement('div');

oBox.className='box';

oParent.appendChild(oBox);

var oPic=document.createElement('div');

oPic.className='pic';

oBox.appendChild(oPic);

var oImg = document.createElement('img');

oImg.src=dataInt.data[i].src;

oPic.appendChild(oImg);

}

}

}

}

function checkScrollSlide(){

var oParent = document.getElementById('main');

var oBoxs = getByClass(oParent,'box');

var lastBoxH = oBoxs[oBoxs.length-1].offsetTop+

Math.floor(oBoxs[oBoxs.length-1].offsetHeight/2);

var scrollTop = document.body.scrollTop || 

document.documentElement.scrollTop;

var height = document.body.clientHeight ||

document.documentElement.clientHeight;

return (lastBoxH<scrollTop+height)?true:false;

}

function waterfall(parent,content){

var oParent = document.getElementById(parent);

var oBoxs = getByClass(oParent,content);

var oBoxw = oBoxs[0].offsetWidth;

var cols=Math.floor(

document.documentElement.clientWidth/oBoxw);

oParent.style.cssText="width:"+oBoxw*cols+"px;margin:0 auto";

var hArr = new Array;

for(i=0;i<oBoxs.length;i++){

if(i<cols){

hArr[i]=oBoxs[i].offsetHeight;

}else{

var minH=Math.min.apply(null,hArr);

var index=getMinHindex(hArr,minH);

oBoxs[i].style.position="absolute";

oBoxs[i].style.top=minH+"px";

oBoxs[i].style.left=oBoxs[index].offsetLeft+"px";

hArr[index]+=oBoxs[i].offsetHeight;

}

}


}

function getMinHindex(arr,val){

for(var i in arr){

if (arr[i]==val) {

return i;

}

}

}

function getByClass(parent,clname){

var boxArr = new Array;

var oElements = parent.getElementsByTagName('*');

for(i=0;i<oElements.length;i++){

if (oElements[i].className==clname) {

boxArr.push(oElements[i]);

}

}

return boxArr;

}


写回答 关注

2回答

  • yiduoxiangyanghua
    2016-04-21 17:42:09
    已采纳

    waterfall("main","box");需要在if (checkScrollSlide()) 这个里面再执行一次,并且if (checkScrollSlide())应该写成if (checkScrollSlide)

    aladdi...

    求问:js瀑布流布局每次下拉加载的过程,他会加载几个图片,是不是我如果只拉很小的一个距离,然后触发了lastBoxH>scrollTop+height这个条件,他是不是就只会加载那一张图片。

    2016-04-21 18:45:32

    共 1 条回复 >

  • aladdinx
    2016-04-21 18:44:59

    求问:js瀑布流布局每次下拉加载的过程,他会加载几个图片,是不是我如果只拉很小的一个距离,然后触发了lastBoxH>scrollTop+height这个条件,他是不是就只会加载那一张图片

瀑布流布局

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

97759 学习 · 736 问题

查看课程

相似问题