先看效果图
参考demo
<!DOCTYPE html>
<html>
<head>
<title>瀑布流开发</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/masonry/4.2.2/masonry.pkgd.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery.imagesloaded/4.1.4/imagesloaded.min.js"></script>
</head>
<style type="text/css">
.grid{
width: 1200px;
}
.grid-item {
float: left;
width: 300px;
border: 2px solid hsla(0, 0%, 0%, 0.5);
}
</style>
<body>
<div class="grid">
<div class="grid-item">
<img src="https://www.jq22.com/demo/jquery-pubu-150108182449/images/t8.jpg">
</div>
<div class="grid-item">
<img src="https://www.jq22.com/demo/jquery-pubu-150108182449/images/t7.jpg">
</div>
<div class="grid-item">
<img src="https://www.jq22.com/demo/jquery-pubu-150108182449/images/t8.jpg">
</div>
<div class="grid-item">
<img src="https://www.jq22.com/demo/jquery-pubu-150108182449/images/t7.jpg">
</div>
<div class="grid-item">
<img src="https://www.jq22.com/demo/jquery-pubu-150108182449/images/t8.jpg">
</div>
<div class="grid-item">
<img src="https://www.jq22.com/demo/jquery-pubu-150108182449/images/t7.jpg">
</div>
<div class="grid-item">
<img src="https://www.jq22.com/demo/jquery-pubu-150108182449/images/t8.jpg">
</div>
<div class="grid-item">
<img src="https://www.jq22.com/demo/jquery-pubu-150108182449/images/t7.jpg">
</div>
<div class="grid-item">
<img src="https://www.jq22.com/demo/jquery-pubu-150108182449/images/t8.jpg">
</div>
<div class="grid-item">
<img src="https://www.jq22.com/demo/jquery-pubu-150108182449/images/t7.jpg">
</div>
<div class="grid-item">
<img src="https://www.jq22.com/demo/jquery-pubu-150108182449/images/t8.jpg">
</div>
<div class="grid-item">
<img src="https://www.jq22.com/demo/jquery-pubu-150108182449/images/t7.jpg">
</div>
<div class="grid-item">
<img src="https://www.jq22.com/demo/jquery-pubu-150108182449/images/t8.jpg">
</div>
<div class="grid-item">
<img src="https://www.jq22.com/demo/jquery-pubu-150108182449/images/t7.jpg">
</div>
<div class="grid-item">
<img src="https://www.jq22.com/demo/jquery-pubu-150108182449/images/t8.jpg">
</div>
<div class="grid-item">
<img src="https://www.jq22.com/demo/jquery-pubu-150108182449/images/t7.jpg">
</div>
</div>
<script type="text/javascript">
const $grid = $('.grid').masonry({
itemSelector: '.grid-item',
});
$grid.imagesLoaded().progress( function() {
$grid.masonry('layout');
});
</script>
</body>
</html>
使用细节
# masonry插件基于jquery开发,所以先要引入jquery插件
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
# 瀑布流排序插件
<script src="https://cdn.bootcdn.net/ajax/libs/masonry/4.2.2/masonry.pkgd.min.js"></script>
# 监听图片加载插件,此插件可用于监听图片加载状态
<script src="https://cdn.bootcdn.net/ajax/libs/jquery.imagesloaded/4.1.4/imagesloaded.min.js"></script>
# 初始化瀑布流插件 $('.grid')代表瀑布流的容器 ,'.grid-item' 代表需要进行瀑布流排序的item,注意grid-item必须要有float:left样式,更多细节参考官网手册
const $grid = $('.grid').masonry({
itemSelector: '.grid-item',
});
# 监听瀑布流dom下的图片状态,当图片加载成功时,再进行排序
$grid.imagesLoaded().progress( function() {
$grid.masonry('layout');
});