解决思路
IntersectionObservergetBoundingClientRect 进行判断loading="lazy"使用 getBoundingClientRect 方法可以获取元素的尺寸和位置。在页面滚动时,可以计算所有的图片元素,获取元素的距离视图的高度,和视图的高度。如果视图高度大于距离高度,则将懒加载的地址放到 src 中
img.getBoundingClientRect().top < window.innerHeighIntersectionObserver 当元素进入到可视视图时就会触发回调
const imgIntersectionObserver = new IntersectionObserver((entries) => { for (let img of entries) { if(img.isIntersecting) { img.src = img.dataset.src imgIntersectionObserver .unobserve(img) } }})for (let img of imgList) { imgIntersectionObserver .observe(img)}<img loading="lazy" src="" />
