課程
/前端開發(fā)
/JavaScript
/瀑布流布局
在滾動時數(shù)據(jù)塊在重復(fù)加載,是不是我寫的哪里不對???
2016-12-24
源自:瀑布流布局 2-5
正在回答
已解決,在
window.onscroll=function(){ ????if(checkScrollSlide()){
這段語句中if里面的函數(shù)加個括號就可以了。
js代碼 window.onload?=?function(){ ????waterfall('main','box'); ????var?dataInt={"data":[{"src":'24.jpg'},{"src":'25.jpg'},{"src":'26.jpg'},{"src":'27.jpg'},{"src":'28.jpg'},{"src":'29.jpg'},{"src":'30.jpg'},{"src":'31.jpg'},{"src":'32.jpg'},{"src":'33.jpg'},{"src":'34.jpg'}]} ????window.onscroll=function(){ ????????if(checkScrollSlide){//如果返回值為真,那么就具備了加載數(shù)據(jù)塊的條件 ????????????var?oParent=document.getElementById('main'); ????????????//將數(shù)據(jù)塊渲染到當(dāng)前頁面的尾部 ????????????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="images/"+dataInt.data[i].src; ????????????????oPic.appendChild(oImg); ????????????} ????????????waterfall('main','box'); ????????} ????} } function?waterfall(parent,box){ ????//將main下的所有class為box的元素取出來 ????var?oParent=document.getElementById(parent); ????var?oBoxs=getByClass(oParent,box); ????//計算整個頁面顯示的列數(shù)(頁面寬/box的寬) ????var?oBoxW=oBoxs[0].offsetWidth; ????var?cols=Math.floor(document.documentElement.clientWidth/oBoxW); ????//設(shè)置main的寬 ????oParent.style.cssText='width:'+oBoxW*cols+'px;margin:0?auto;'; ????var?hArr=[];//存儲每一列高度的數(shù)組 ????for(var?i=0;i<oBoxs.length;i++){ ????????if(i<cols){ ????????????hArr.push(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=oBoxW*index+'px'; ????????????oBoxs[i].style.left=oBoxs[index].offsetLeft+'px'; ????????????hArr[index]+=oBoxs[i].offsetHeight; ????????} ????} } //根據(jù)class獲取元素 function?getByClass(parent,clsName){ ????var?boxArr?=?new?Array(),//用來存儲獲取到的所有class為box的元素 ????????oElements=parent.getElementsByTagName('*'); ????for(var?i=0;i<oElements.length;i++){ ????????if(oElements[i].className==clsName){ ????????????boxArr.push(oElements[i]); ????????} ????} ????return?boxArr; } //獲取最小高度圖片的index function?getMinhIndex(arr,val){ ????for(var?i?in?arr){ ????????if(arr[i]==val){ ????????????return?i; ????????} ????} } //檢查是否具備了滾動加載數(shù)據(jù)塊的條件 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; }
舉報
瀑布流布局是網(wǎng)站比較流行的一種布局方式,教你實現(xiàn)三大方式
1 回答加載的數(shù)據(jù)重復(fù)顯示怎么辦
2 回答數(shù)據(jù)加載問題
1 回答加載數(shù)據(jù)問題
2 回答JS中,實現(xiàn)圖片不重復(fù)的加載?
2 回答檢測是否加載數(shù)據(jù)塊條件函數(shù)運行不正常
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2016-12-25
已解決,在
這段語句中if里面的函數(shù)加個括號就可以了。
2016-12-24