HTML瀑布流布局
js实现瀑布流布局
利用onscroll实现瀑布流
不断加载,实现一直处于加载的底部
滚动加载事件的条件:当到达最后一张图片的时候,也就是蓝线的距离小于黑线的距离,执行加载!
蓝线的距离:页面顶部到最后一个图片高度一半的距离
黑线的距离:top+documentElement.clientHeight(浏览器可视窗口的距离)
下面的情况不允许加载:蓝线.height>黑线.height
//滚动加载的条件 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.documentElement.scrollTop||document.body.scrollTop;//兼容性 var documentH=document.documentElement.clientHeight;//页面高度 return (lastBoxH<scrollTop+documentH)?true:false;//到达指定高度后 返回true,触发waterfall()函数 console.log(documentH) }创建window.οnscrοll=function(){},并将模拟的后台加载数据dataInt放置在页面底部
var dataInt={'data':[{'src':'1.jpg'},{'src':'2.jpg'},{'src':'3.jpg'},{'src':'4.jpg'}]}; window.οnscrοll=function(){ if(checkScrollSlide) { //将数据块渲染到当前页面的尾部 for (var i = 0; i < dataInt.data.length; i++) { //首先找到父对象 var oParent = document.getElementById('main'); var oBox = document.createElement('div'); oBox.className = 'box'; oParent.appendChild(oBox); var oPin = document.createElement('div'); oPin.className = 'pin'; oBox.appendChild(oPin); var oImg = document.createElement('img'); oImg.src = './images/' + dataInt.data[i].src; oPin.appendChild(oImg); } waterfall('main','box'); } }注: 在对加载数据循环之后,需要对加入后的元素,同样需要进行瀑布流布局。