瀑布流佈局廣泛應用於圖片牆、商品展示等場景。本文提供一個結合 jQuery Masonry 與 ThinkPHP 的完整前後端實作範例,包含無限滾動載入、動畫效果與資料渲染。
<div id="container" class="container">
<volist name="height" id="vo">
<div class="item" style="height:{$vo}px;">內容</div>
</volist>
</div>
<div id="loading" class="loading-wrap"><span class="loading">載入中...</span></div>
var $container = $('#container');
$container.masonry({ itemSelector: '.item', isAnimated: true });
$(window).scroll(function(){
if(loading.data("on")) return;
if($(document).scrollTop() > $(document).height() - $(window).height() - $('.footer').height()){
loading.data("on", true).fadeIn();
$.get("getMore", function(data){
// 渲染新元素、動畫顯示、masonry appended
loading.data("on", false).fadeOut();
}, "json");
}
});
控制器需提供 getMore 方法回傳 JSON 格式高度陣列,搭配模板輸出初始資料。完整程式碼包含 CSS 樣式、jQuery 1.7.2、Masonry 插件引用,可直接部署測試。