//html
<img class="lazy" data-src="./banner1.png" alt="描述" src="./loading.jfif">
//js
document.querySelectorAll('img.lazy').forEach(img => {
// 创建观察者实例,第二个参数是一个配置对象
let observer = new IntersectionObserver((entries, observer) => {
// entries 是一个数组,包含了所有变化的元素的信息
entries.forEach(entry => {
// 如果元素可见,则加载图片
if (entry.isIntersecting) {
const img = entry.target;
// 将数据属性中的图片地址设置为 src 属性
img.src = img.dataset.src;
// 停止观察当前元素
observer.unobserve(img);
}
});
}, {
// 配置项,可以设置 root、rootMargin 和 threshold
root: null, // 使用浏览器视窗作为参照物
rootMargin: '0px', // 参照物边缘外的区域
threshold: 0.1 // 10% 的交叉就会触发回调
});
// 开始观察图片元素
observer.observe(img);
});
图片懒加载异步优化IntersectionObserver
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- intersectionObserver是一个实用的web api,可以用来监控指定元素和视窗有交互时发生的回调,...
- 基本流程:1.异步任务从指定的网页中获取JSON信息,解析JSON数据,自定义JAVA BEAN对象封装所需要的数...
- 最近研究了一下UITbleView中异步加载网络图片的问题,iOS应用经常会看到这种界面。一个tableView上...