jQuery 瀑布流Masonry + 動態載入Infinite Scroll
目前的前端介面常見的排版之一
就是瀑布流的排版,但瀑布流就是資料量多排起來才好看
所以通常瀑布流還會再搭配動態載入資料的功能。
1. 瀑布流Masonry
先至Masonry網站下載js檔
於網頁中加入,現在主流Script放法都是於網頁末端
<script src="{依網站路徑}/masonry.pkgd.min.js"></script>
2. 動態載入Infinite Scroll
可至Infinite Scroll下載檔案
(參考連結:https://infinite-scroll.com/)
加入
<script src={依網站路徑}/jquery.infinitescroll.min.js></script>
3. 圖片載入檢查 imagesLoaded
因為動態載入進來,可能圖片尚未載入完全
這時就進行瀑布流的排版,很可能會造成item的重疊 (因為未計算到圖片高度)
這時就需要imagesLoaded來做處理
一樣先至官網下載需要檔案
(參考連結:https://imagesloaded.desandro.com/)
加入
<script src={依網站路徑}/imagesloaded.pkgd.min.js></script>
4. jQuery處理
其實最後重點就在設定瀑布流的時候,先加入imagesLoaded的處理,
Infinite Scroll時利用function(newElements)...執行完成載入動作,一樣加入imagesLoaded處理再進行Masonry,這樣就能避免重疊跑版問題發生。
<script>
$(document).ready(function() {
/** 滾動載入 **/
$('.infinite_div').infinitescroll({
navSelector: 'div.infinite_Link',
nextSelector: 'div.infinite_Link a:first',
itemSelector: '.infinite_div div.flow_square',
},
function(newElements) {
$('.infinite_div').imagesLoaded( function() {
$('.infinite_div').masonry('appended', newElements, true);
});
});
/** 瀑布流布局 **/
$('.grid').imagesLoaded( function() {
$('.grid').masonry({
itemSelector: '.grid-item',
horizontalOrder: true
});
});
}
</script>
留言
張貼留言