首页前端开发其他前端知识JS中图片加载优化方法是什么,有哪些

JS中图片加载优化方法是什么,有哪些

时间2024-03-27 17:00:04发布访客分类其他前端知识浏览1472
导读:这篇文章给大家分享的是“JS中图片加载优化方法是什么,有哪些”,文中的讲解内容简单清晰,对大家学习和理解有一定的参考价值和帮助,有这方面学习需要的朋友,接下来就跟随小编一起学习一下“JS中图片加载优化方法是什么,有哪些”吧。...
这篇文章给大家分享的是“JS中图片加载优化方法是什么,有哪些”,文中的讲解内容简单清晰,对大家学习和理解有一定的参考价值和帮助,有这方面学习需要的朋友,接下来就跟随小编一起学习一下“JS中图片加载优化方法是什么,有哪些”吧。

一、方法一

重点:

  • 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>
    
    /*先用data-自定义标签,使图片先不加载*/
    img data-src="./img1.jpg" height="200px">
    br>
    
    img data-src="./img2.jpg" height="200px" alt="">
    br>
    
    img 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_src = item.getattribute('data-src')
			//则将自定义属性data-src赋值给src属性
			item.setattribute("src",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_src = img.getattribute('data-src')
            img.setattribute('src',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事件就不再触发*


以上就是关于JS中图片加载优化方法是什么,有哪些的介绍,本文内容仅供参考,有需要的朋友可以借鉴了解看看,希望对大家学习或工作,想要了解更多欢迎关注网络,小编每天都会为大家更新不同的知识。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

JavaScript

若转载请注明出处: JS中图片加载优化方法是什么,有哪些
本文地址: https://pptw.com/jishu/654355.html
java是怎样复制数组,代码是什么 foreach和for在JS中foreach的用法上的区别在哪

游客 回复需填写必要信息