基础概念: 瀑布流布局是一种页面布局方式,它将页面元素按照不同列进行排列,使得每一列的高度尽可能相近,形似瀑布。当用户滚动页面时,会动态加载更多的图片或其他内容,这种技术被称为滚动加载或无限滚动。
优势:
类型:
应用场景:
遇到的问题及原因:
解决方案:
$(window).on('load', function() {
var $container = $('#masonry');
$container.imagesLoaded(function() {
$container.masonry('layout');
});
});
$('.lazy').lazyload({
effect : "fadeIn"
});
function throttle(func, limit) {
let inThrottle;
return function() {
const args = arguments;
const context = this;
if (!inThrottle) {
func.apply(context, args);
inThrottle = true;
setTimeout(() => inThrottle = false, limit);
}
};
}
$(window).scroll(throttle(function() {
if ($(window).scrollTop() + $(window).height() >= $(document).height() - 100) {
loadMoreContent();
}
}, 200));
示例代码: 以下是一个简单的jQuery瀑布流滚动加载图片的示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>瀑布流滚动加载</title>
<style>
#masonry {
column-count: 3;
column-gap: 1em;
}
.item {
break-inside: avoid;
margin-bottom: 1em;
}
.item img {
width: 100%;
height: auto;
}
</style>
</head>
<body>
<div id="masonry">
<!-- 图片项将通过JavaScript动态添加 -->
</div>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.lazyload/1.9.1/jquery.lazyload.min.js"></script>
<script>
let page = 1;
function loadMoreContent() {
$.ajax({
url: 'get_images.php', // 假设这是获取图片数据的API
data: { page: page },
success: function(data) {
data.forEach(function(imgSrc) {
$('#masonry').append(`<div class="item"><img class="lazy" data-original="${imgSrc}"></div>`);
});
page++;
$('.lazy').lazyload();
}
});
}
$(window).on('load', function() {
loadMoreContent();
$(window).scroll(throttle(function() {
if ($(window).scrollTop() + $(window).height() >= $(document).height() - 100) {
loadMoreContent();
}
}, 200));
});
</script>
</body>
</html>
在这个示例中,我们使用了jQuery和懒加载插件来实现瀑布流滚动加载图片的功能。通过AJAX请求获取图片数据,并在页面滚动到底部时动态加载更多内容。
领取专属 10元无门槛券
手把手带您无忧上云