我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JavaScript图片懒加载的优化方法详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JavaScript图片懒加载的优化方法详解

一、方法一

在这里插入图片描述

重点:

1.getBoundingClientRect().top > window.innerHeight 图片未出现

2.getBoundingClientRect().top < window.innerHeight 图片出现了

HTML:

<ul>
    ......
    <li>2222222222</li>
    <li>2222222222</li>
    <li>2222222222</li>
    <li>2222222222</li>
    <li>2222222222</li>
    <li>2222222222</li>
    
    <img data-class="lazy" data-src="./img1.jpg" height="200px"><br>
    <img data-class="lazy" data-src="./img2.jpg" height="200px" alt=""><br>
    <img data-class="lazy" data-src="./img3.jpg" height="200px" alt="">
</ul>

JavaScript:

let img = document.querySelectorAll('img')
window.addEventListener('scroll',() => {
	img.forEach((item) => {
		//若图片顶部高度小于视窗高度
		if(item.getBoundingClientRect().top < window.innerHeight) {
			const data_class="lazy" data-src = item.getAttribute('data-class="lazy" data-src')
			//则将自定义属性data-class="lazy" data-src赋值给class="lazy" data-src属性
			item.setAttribute("class="lazy" data-src",data_class="lazy" data-src)
		} 
	})
	console.log("scroll触发了");  //此方法:若加载很多内容,就会导致任务的堆积,影响整体效率
})

请添加图片描述

我们可以看到,虽然图片懒加载已经成功了,但是scroll事件仍在不断触发,非常消耗资源,因此目前最推荐使用的方法还是IntersectionObserver

二、方法二 InterSectionObserver

重点:

1.observer.observe(DOM节点) 观察哪个DOM节点

2.observer.unobserve(DOM节点) 取消观察某DOM节点

3.callback目标能看见触发一次;目标元素看不见了又触发一次

HTML如上

JavaScript:

let img = document.querySelectorAll('img')
//此回调:目标能看见触发一次;目标元素看不见了又触发一次
const callback = (entries) => {   //接收一个数组作为参数,数组每一项都和目标元素相关,比如		isIntersecting判断目标元素是否被观察到了,又比如target属性代表该目标元素
    entries.forEach((item) => {
        //若该目标元素被观察到了
        if(item.isIntersecting) {
            const img = item.target //目标元素
            const data_class="lazy" data-src = img.getAttribute('data-class="lazy" data-src')
            img.setAttribute('class="lazy" data-src',data_class="lazy" data-src)
            observer.unobserve(img)  //observer.unobserve(DOM节点)  取消观察某DOM节点
        }
        console.log('触发');
    })
}
const observer = new IntersectionObserver(callback)
//遍历所有img,使得所有img被观察
img.forEach((item) => {
    observer.observe(item)  //observer.observe(DOM节点)  观察哪个DOM节点
})

思路:

new一个观察实例,并通过观察实例身上的observe属性观察每一个图片。定义callback回调函数,设置 目标图片出现时改变属性

请添加图片描述

此时我们看到,当所有图片都懒加载完之后(observe取消观察DOM节点),scroll事件就不再触发*

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!   。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

JavaScript图片懒加载的优化方法详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

JavaScript实用的图片懒加载优化方法有哪些

这篇文章主要介绍了JavaScript实用的图片懒加载优化方法有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、方法一重点:1.getBoundingClientRec
2023-06-29

详解三种Javascript图片预加载的方法

预加载图片是提高用户体验的一个很好方法。图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度。

VUE懒加载原理详解:一文带你读懂图片懒加载的奥秘

懒加载是一种通过延迟加载资源,以提高网页加载速度和性能的技术。它可以有效减少初始页面加载时间,从而提高用户体验和网站排名。本文将详细讲解 VUE 懒加载的原理,帮助您理解图片懒加载的奥秘。
VUE懒加载原理详解:一文带你读懂图片懒加载的奥秘
2024-02-13

vue3 图片懒加载的两种方式、IntersectionObserver和useIntersectionObserver实例详解

这篇文章主要介绍了vue3 图片懒加载的两种方式、IntersectionObserver和useIntersectionObserver实例详解,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
2023-03-19

如何通过php函数优化图片懒加载效果?

随着互联网的发展,网页中的图片数量越来越多,这给页面加载速度带来了压力。为了提高用户体验,减少加载时间,我们可以采用图片懒加载技术。图片懒加载可以延迟图片的加载,只有当用户滚动到可视区域时才加载图片,这样可以减少页面的加载时间,提升用户体验
2023-10-21

vue3中使用@vueuse/core中的图片懒加载案例详解

这篇文章主要介绍了vue3中使用@vueuse/core中的图片懒加载案例,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
2023-03-19

Android ListView异步加载图片方法详解

本文实例讲述了Android ListView异步加载图片方法。分享给大家供大家参考,具体如下: 先说说这篇文章的优点把,开启线程异步加载图片,然后刷新UI显示图片,而且通过弱引用缓存网络加载的图片,节省了再次连接网络的开销。 这样做无疑是
2022-06-06

详解Android GLide图片加载常用几种方法

这篇文章主要为大家介绍了详解Android GLide图片加载常用几种方法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-11-16

javascript预加载图片、css、js的方法示例介绍

预加载的好处可以让网页更快的呈现给用户,缺点就是可能会增加无用的请求,不多说了,作为一个前端攻城师都懂的,下面分享我做的测试和得到的结果
2022-11-15

Android中RecyclerView 滑动时图片加载的优化

RecyclerView 滑动时的优化处理,在滑动时停止加载图片,在滑动停止时开始加载图片,这里用了Glide.pause 和Glide.resume.这里为了避免重复设置增加开销,设置了一个标志变量来做判断。mRecyclerView.a
2022-06-06

编程热搜

目录