JS中图片加载优化方法是什么,有哪些
导读:这篇文章给大家分享的是“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核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: JS中图片加载优化方法是什么,有哪些
本文地址: https://pptw.com/jishu/654355.html
