为了账号安全,请及时绑定邮箱和手机立即绑定

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

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 回答

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

0 回复 有任何疑惑可以回复我~
#1

aladdinx 提问者

求问:js瀑布流布局每次下拉加载的过程,他会加载几个图片,是不是我如果只拉很小的一个距离,然后触发了lastBoxH>scrollTop+height这个条件,他是不是就只会加载那一张图片。
2016-04-21 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
瀑布流布局
  • 参与学习       97756    人
  • 解答问题       736    个

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

进入课程

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信