需求:
多个等宽的图片进行穿插排序成六列,并且在目前显示的最后一张图片显示之后,再进行下拉时能够在进行加载其他图片,每次下拉显示20-30张图片。
实现原理:
1、利用css多列布局实现瀑布流效果
2、利用js文档高度与滚动距离和窗口高度之间的关系触发内容渲染实现滚动条到窗口底部再加载内容的懒加载效果
实现代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
margin:0 ;
padding: 0;
}
.waterFall{
padding: 0 10px;
column-count: 6;
}
img{
width: 230px;
margin: 10px auto;
}
</style>
</head>
<body>
<div class="waterFall">
</div>
<script>
var waterFall=document.querySelector(".waterFall")
//后端的数组信息
var arr1=["./JS学习/瀑布流img/O1CN01b9ST3r1NrNa4Lb49s_!!0-saturn_solar.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/0584000063A655F22052EE0992830E2E.jfif",
"./JS学习/瀑布流img/O1CN01uruvbI1m07uPSsf16_!!2199304891.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01BxWlGh2EXqM0yNN9l_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01cRHa2i1l9ukQWUB6h_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01GBJXrH1M7kR5HCLFn_!!2130151388.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01hH5h1I1rSacAH46h6_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01IX4byG1pNQxlp5CV5_!!2209064045348.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01JxEaE81GjrnBqszEH_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01K2WD6h1M7kP8B1ajB_!!2130151388.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01LK2LRf2DN1NHTgRvY_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01oaTWGa1MoLFYsVSBM_!!2-saturn_solar.png_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01OuiCDD1UuJRiM4uXY_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01oaTWGa1MoLFYsVSBM_!!2-saturn_solar.png_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01p3lAA822KlbeGPx4d_!!0-saturn_solar.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01pgXbCy1j7VUdewn1C_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01Q1AxYB24LnmLxooqk_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01QeEODI1HCikMaLctc_!!0-saturn_solar.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01QxVR0j1nWTXX7w8pQ_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01R6lnzB28m8yt9BNc9_!!2269027974-0-alimamacc.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/0584000063B7FCB81427220B04BDC108 (1).jfif",
"./JS学习/瀑布流img/O1CN01uJ1sH51RcxVHtgGqE_!!2212292362133.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01U17qR61puPTm0ePxd_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01tL84AJ1ccvLSOzEdI_!!2381733622.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01SzR9cg1jo6JicwU4i_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01SC4IkC1K33BKHxTT1_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01s1ZY1b1D1UakKe4Cp_!!0-saturn_solar.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/ O1CN018FdgfM1adiniiDm7D_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/v_170780671_m_601_m6_260_360.webp",
"./JS学习/瀑布流img/v_170904078_m_601_m2_480_270.webp",
"./JS学习/瀑布流img/TB1JcF0zkY2gK0jSZFgXXc5OFXa.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN015FfXMp2NMhG2uJP1h_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/v_170780671_m_601_m6_260_360.webp",
"./JS学习/瀑布流img/O1CN0179j4IP1sUFg0TICLT_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01xlKK2u1cyRxncXwN7_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN0184d3Py1cmXeTNtqvl_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01wneMoV20EhBCUx1hy_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/0584000063B684A72052EE0992A0D187 (1).jfif",
]
var arr2=["./JS学习/瀑布流img/O1CN01b9ST3r1NrNa4Lb49s_!!0-saturn_solar.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/0584000063A655F22052EE0992830E2E.jfif",
"./JS学习/瀑布流img/O1CN01uruvbI1m07uPSsf16_!!2199304891.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01BxWlGh2EXqM0yNN9l_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01cRHa2i1l9ukQWUB6h_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01GBJXrH1M7kR5HCLFn_!!2130151388.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01hH5h1I1rSacAH46h6_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01IX4byG1pNQxlp5CV5_!!2209064045348.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01JxEaE81GjrnBqszEH_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01K2WD6h1M7kP8B1ajB_!!2130151388.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01LK2LRf2DN1NHTgRvY_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01oaTWGa1MoLFYsVSBM_!!2-saturn_solar.png_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01OuiCDD1UuJRiM4uXY_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01oaTWGa1MoLFYsVSBM_!!2-saturn_solar.png_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01p3lAA822KlbeGPx4d_!!0-saturn_solar.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01pgXbCy1j7VUdewn1C_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01Q1AxYB24LnmLxooqk_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01QeEODI1HCikMaLctc_!!0-saturn_solar.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01QxVR0j1nWTXX7w8pQ_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01R6lnzB28m8yt9BNc9_!!2269027974-0-alimamacc.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/0584000063B7FCB81427220B04BDC108 (1).jfif",
"./JS学习/瀑布流img/O1CN01uJ1sH51RcxVHtgGqE_!!2212292362133.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01U17qR61puPTm0ePxd_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01tL84AJ1ccvLSOzEdI_!!2381733622.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01SzR9cg1jo6JicwU4i_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01SC4IkC1K33BKHxTT1_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01s1ZY1b1D1UakKe4Cp_!!0-saturn_solar.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/ O1CN018FdgfM1adiniiDm7D_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/v_170780671_m_601_m6_260_360.webp",
"./JS学习/瀑布流img/v_170904078_m_601_m2_480_270.webp",
"./JS学习/瀑布流img/TB1JcF0zkY2gK0jSZFgXXc5OFXa.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN015FfXMp2NMhG2uJP1h_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/v_170780671_m_601_m6_260_360.webp",
"./JS学习/瀑布流img/O1CN0179j4IP1sUFg0TICLT_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01xlKK2u1cyRxncXwN7_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN0184d3Py1cmXeTNtqvl_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/O1CN01wneMoV20EhBCUx1hy_!!0-item_pic.jpg_300x300q90.jpg_.webp",
"./JS学习/瀑布流img/0584000063B684A72052EE0992A0D187 (1).jfif",
]
//将数据放射到html中
function renderImg(arr){
for(var i=0;i<arr.length;i++){
var img=document.createElement("img")
img.src=arr[i]
waterFall.appendChild(img)
}
}
renderImg(arr1)
//防止画面渲染在滚动条一滚动就触发
var isloading=false
//滚动滚动条就触发事件
window.onscroll=function(){
var waterFallHeight=waterFall.offsetHeight
var waterFallTop=waterFall.offsetTop
var scrollTop=document.documentElement.scrollTop||document.body.scrollTop
var windowHeight=document.documentElement.clientHeight
if(isloading) return
//计算(div高+距离文档左上角的高)-(窗口高+滚动距离)判断滚动条是否到底部
if((waterFallHeight+waterFallTop)-(scrollTop+windowHeight)<200){
//防止滚动条一动就触发渲染画面的事件
isloading=true
setTimeout(function(){
renderImg(arr2)
//确保内容渲染后再滚动滚动条才能再次触发渲染画面
isloading=false
},500)
}
}
</script>
</body>
</html>
实现效果:
QQ录屏20230113134944