課程
/前端開發
/JavaScript
/瀑布流布局
這個有bug啊,把瀏覽器窗口縮小時滾動式正常的,但是放大后就會有重疊現象出現了,怎么解決呢
2016-06-09
源自:瀑布流布局 2-5
正在回答
縮放頁面并且滾動時會執行waterfall函數,此時clientWidth發生變化,所以列數num也會發生變化;如果是縮小,那么原來在第一行的元素會被擠到下面,變成絕對定位,頁面重排;放大的話,num變大,原來在第二列的元素是絕對定位,不會回到第一排,所以部分i<num的aPin[i]仍在第二排,而在for循環中
for(var?i=0;i<aPin.length;i++){//遍歷數組aPin的每個塊框元素 ????????var?pinH=aPin[i].offsetHeight; ????????if(i<num){ ????????????pinHArr[i]=pinH;?//第一行中的num個塊框pin?先添加進數組pinHArr ????????}else{ ????????????var?minH=Math.min.apply(null,pinHArr);//數組pinHArr中的最小值minH ????????????var?minHIndex=getminHIndex(pinHArr,minH); ????????????aPin[i].style.position='absolute';//設置絕對位移 ????????????aPin[i].style.top=minH+'px'; ????????????aPin[i].style.left=aPin[minHIndex].offsetLeft+'px'; ????????????//數組?最小高元素的高?+?添加上的aPin[i]塊框高 ????????????pinHArr[minHIndex]+=aPin[i].offsetHeight;//更新添加了塊框后的列高 ????????}
會把i<num的aPin[i]當成第一排,導致頁面出現錯誤。
可以在for循環前面加一個
for(var?j?=?0;?j?<?num?;j++){ ????aPin[j].style.position=""; ????}
清除掉i<num的aPin[i]的絕對定位,就ok了。
滿滿肥肉的夏天 提問者
把var cols=Math.floor(document.documentElement.clientWidth/OboxW);改成
var cols=Math.floor(document.documentElement.scrollWidth/OboxW);就好了
舉報
瀑布流布局是網站比較流行的一種布局方式,教你實現三大方式
2 回答窗口比例縮小時滾動滾動條會有bug
2 回答發現BUG!窗口先縮小再放大后拖動滾動條圖片列數沒變,且最右列圖片重疊!
2 回答當瀏覽器窗口縮小或者放大時,列數仍會隨之改變
1 回答為什么在360瀏覽器圖片會重疊啊???火狐瀏覽器有正常顯示。。。。jQuery有兼容么?????
1 回答我再瀑布流窗口加了監聽事件,放大的時候就排列重疊了,縮小的就不會出問題,但是一刷新就可以,怎么實時更新
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-06-09
縮放頁面并且滾動時會執行waterfall函數,此時clientWidth發生變化,所以列數num也會發生變化;如果是縮小,那么原來在第一行的元素會被擠到下面,變成絕對定位,頁面重排;放大的話,num變大,原來在第二列的元素是絕對定位,不會回到第一排,所以部分i<num的aPin[i]仍在第二排,而在for循環中
會把i<num的aPin[i]當成第一排,導致頁面出現錯誤。
可以在for循環前面加一個
清除掉i<num的aPin[i]的絕對定位,就ok了。
2017-05-31
把var cols=Math.floor(document.documentElement.clientWidth/OboxW);改成
var cols=Math.floor(document.documentElement.scrollWidth/OboxW);就好了