2021-06-18图片懒加载

图片懒加载:
图片懒加载主要是用来优化网站的加载性能,降低页面的首屏加载时间,对于图片很多的页面,为了加快页面的加载速度,需要在页面未出现在可视区域内的图片先不做加载,等到滚动条将图片滚动到可视区域后在进行加载。

图片懒加载的实现思路:
页面渲染时将src路径放到自定义属性中去,这样页面加载时图片就不会去请求服务器,当图片滚动到可视区内时,获取它的自定义属性并赋值给src
代码实现:
html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>图片懒加载</title>
    
</head>
<body>
    <p>
        盼望着,盼望着,东风来了,春天的脚步近了。

一切都像刚睡醒的样子,欣欣然张开了眼。山朗润起来了,水涨起来了,太阳的脸红起来了。  小草偷偷地从土地里钻出来,嫩嫩的,绿绿的。园子里,田野里,瞧去,一大片一大片满是的。坐着,躺着,打两个滚,踢几脚球,赛几趟跑,捉几回迷藏。风轻悄悄的,草软绵绵的。

桃树,杏树,梨树,你不让我,我不让你,都开满了花赶趟儿。红的像火,粉的像霞,白的像雪。花里带着甜味;闭了眼,树上仿佛已经满是桃儿,杏儿,梨儿。花下成千成百的蜜蜂嗡嗡的闹着,大小的蝴蝶飞来飞去。野花遍地是:杂样儿,有名字的,没名字的,散在草丛里像眼睛像星星,还眨呀眨的。

“吹面不寒杨柳风”,不错的,像母亲的手抚摸着你,风里带着些新翻的泥土的气息,混着青草味儿,还有各种花的香,都在微微润湿的空气里酝酿。鸟儿将巢安在繁花嫩叶当中,高兴起来了,呼朋引伴的卖弄清脆的歌喉,唱出婉转的曲子,跟清风流水应和着。牛背上牧童的短笛,这时候也成天嘹亮的响着。

雨是最寻常的,一下就是三两天。可别恼。看,像牛毛,像花针,像细丝,密密地斜织着,人家屋顶上全笼着一层薄烟。树叶却绿得发亮,小草也青得逼你的眼。傍晚时候,上灯了,一点点黄晕的光,烘托出一片安静而和平的夜。在乡下,小路上,石桥边,有撑着伞慢慢走着的人,地里还有工作的农民,披着蓑戴着笠。他们的房屋稀稀疏疏的,在雨里静默着。

天上的风筝渐渐多了,地上的孩子也多了。城里乡下,家家户户,老老小小,也赶趟似的,一个个都出来了。舒活舒活筋骨,抖擞抖擞精神,各做各的一份事儿去。“一年之计在于春”,刚起头儿,有的是功夫,有的是希望。

春天像刚落地的娃娃,从头到脚都是新的,它生长着。
春天像小姑娘,花枝招展的,笑着走着。
春天像健壮的青年,有铁一般的胳膊和腰脚,领着我们向前去。
    </p>
    <p>
        盼望着,盼望着,东风来了,春天的脚步近了。

一切都像刚睡醒的样子,欣欣然张开了眼。山朗润起来了,水涨起来了,太阳的脸红起来了。  小草偷偷地从土地里钻出来,嫩嫩的,绿绿的。园子里,田野里,瞧去,一大片一大片满是的。坐着,躺着,打两个滚,踢几脚球,赛几趟跑,捉几回迷藏。风轻悄悄的,草软绵绵的。

桃树,杏树,梨树,你不让我,我不让你,都开满了花赶趟儿。红的像火,粉的像霞,白的像雪。花里带着甜味;闭了眼,树上仿佛已经满是桃儿,杏儿,梨儿。花下成千成百的蜜蜂嗡嗡的闹着,大小的蝴蝶飞来飞去。野花遍地是:杂样儿,有名字的,没名字的,散在草丛里像眼睛像星星,还眨呀眨的。

“吹面不寒杨柳风”,不错的,像母亲的手抚摸着你,风里带着些新翻的泥土的气息,混着青草味儿,还有各种花的香,都在微微润湿的空气里酝酿。鸟儿将巢安在繁花嫩叶当中,高兴起来了,呼朋引伴的卖弄清脆的歌喉,唱出婉转的曲子,跟清风流水应和着。牛背上牧童的短笛,这时候也成天嘹亮的响着。

雨是最寻常的,一下就是三两天。可别恼。看,像牛毛,像花针,像细丝,密密地斜织着,人家屋顶上全笼着一层薄烟。树叶却绿得发亮,小草也青得逼你的眼。傍晚时候,上灯了,一点点黄晕的光,烘托出一片安静而和平的夜。在乡下,小路上,石桥边,有撑着伞慢慢走着的人,地里还有工作的农民,披着蓑戴着笠。他们的房屋稀稀疏疏的,在雨里静默着。

天上的风筝渐渐多了,地上的孩子也多了。城里乡下,家家户户,老老小小,也赶趟似的,一个个都出来了。舒活舒活筋骨,抖擞抖擞精神,各做各的一份事儿去。“一年之计在于春”,刚起头儿,有的是功夫,有的是希望。

春天像刚落地的娃娃,从头到脚都是新的,它生长着。
春天像小姑娘,花枝招展的,笑着走着。
春天像健壮的青年,有铁一般的胳膊和腰脚,领着我们向前去。
<p>
    盼望着,盼望着,东风来了,春天的脚步近了。

一切都像刚睡醒的样子,欣欣然张开了眼。山朗润起来了,水涨起来了,太阳的脸红起来了。  小草偷偷地从土地里钻出来,嫩嫩的,绿绿的。园子里,田野里,瞧去,一大片一大片满是的。坐着,躺着,打两个滚,踢几脚球,赛几趟跑,捉几回迷藏。风轻悄悄的,草软绵绵的。

桃树,杏树,梨树,你不让我,我不让你,都开满了花赶趟儿。红的像火,粉的像霞,白的像雪。花里带着甜味;闭了眼,树上仿佛已经满是桃儿,杏儿,梨儿。花下成千成百的蜜蜂嗡嗡的闹着,大小的蝴蝶飞来飞去。野花遍地是:杂样儿,有名字的,没名字的,散在草丛里像眼睛像星星,还眨呀眨的。

“吹面不寒杨柳风”,不错的,像母亲的手抚摸着你,风里带着些新翻的泥土的气息,混着青草味儿,还有各种花的香,都在微微润湿的空气里酝酿。鸟儿将巢安在繁花嫩叶当中,高兴起来了,呼朋引伴的卖弄清脆的歌喉,唱出婉转的曲子,跟清风流水应和着。牛背上牧童的短笛,这时候也成天嘹亮的响着。

雨是最寻常的,一下就是三两天。可别恼。看,像牛毛,像花针,像细丝,密密地斜织着,人家屋顶上全笼着一层薄烟。树叶却绿得发亮,小草也青得逼你的眼。傍晚时候,上灯了,一点点黄晕的光,烘托出一片安静而和平的夜。在乡下,小路上,石桥边,有撑着伞慢慢走着的人,地里还有工作的农民,披着蓑戴着笠。他们的房屋稀稀疏疏的,在雨里静默着。

天上的风筝渐渐多了,地上的孩子也多了。城里乡下,家家户户,老老小小,也赶趟似的,一个个都出来了。舒活舒活筋骨,抖擞抖擞精神,各做各的一份事儿去。“一年之计在于春”,刚起头儿,有的是功夫,有的是希望。

春天像刚落地的娃娃,从头到脚都是新的,它生长着。
春天像小姑娘,花枝招展的,笑着走着。
春天像健壮的青年,有铁一般的胳膊和腰脚,领着我们向前去。
</p>
<p>
    盼望着,盼望着,东风来了,春天的脚步近了。

一切都像刚睡醒的样子,欣欣然张开了眼。山朗润起来了,水涨起来了,太阳的脸红起来了。  小草偷偷地从土地里钻出来,嫩嫩的,绿绿的。园子里,田野里,瞧去,一大片一大片满是的。坐着,躺着,打两个滚,踢几脚球,赛几趟跑,捉几回迷藏。风轻悄悄的,草软绵绵的。

桃树,杏树,梨树,你不让我,我不让你,都开满了花赶趟儿。红的像火,粉的像霞,白的像雪。花里带着甜味;闭了眼,树上仿佛已经满是桃儿,杏儿,梨儿。花下成千成百的蜜蜂嗡嗡的闹着,大小的蝴蝶飞来飞去。野花遍地是:杂样儿,有名字的,没名字的,散在草丛里像眼睛像星星,还眨呀眨的。

“吹面不寒杨柳风”,不错的,像母亲的手抚摸着你,风里带着些新翻的泥土的气息,混着青草味儿,还有各种花的香,都在微微润湿的空气里酝酿。鸟儿将巢安在繁花嫩叶当中,高兴起来了,呼朋引伴的卖弄清脆的歌喉,唱出婉转的曲子,跟清风流水应和着。牛背上牧童的短笛,这时候也成天嘹亮的响着。

雨是最寻常的,一下就是三两天。可别恼。看,像牛毛,像花针,像细丝,密密地斜织着,人家屋顶上全笼着一层薄烟。树叶却绿得发亮,小草也青得逼你的眼。傍晚时候,上灯了,一点点黄晕的光,烘托出一片安静而和平的夜。在乡下,小路上,石桥边,有撑着伞慢慢走着的人,地里还有工作的农民,披着蓑戴着笠。他们的房屋稀稀疏疏的,在雨里静默着。

天上的风筝渐渐多了,地上的孩子也多了。城里乡下,家家户户,老老小小,也赶趟似的,一个个都出来了。舒活舒活筋骨,抖擞抖擞精神,各做各的一份事儿去。“一年之计在于春”,刚起头儿,有的是功夫,有的是希望。

春天像刚落地的娃娃,从头到脚都是新的,它生长着。
春天像小姑娘,花枝招展的,笑着走着。
春天像健壮的青年,有铁一般的胳膊和腰脚,领着我们向前去。
</p>
<p>
    盼望着,盼望着,东风来了,春天的脚步近了。

一切都像刚睡醒的样子,欣欣然张开了眼。山朗润起来了,水涨起来了,太阳的脸红起来了。  小草偷偷地从土地里钻出来,嫩嫩的,绿绿的。园子里,田野里,瞧去,一大片一大片满是的。坐着,躺着,打两个滚,踢几脚球,赛几趟跑,捉几回迷藏。风轻悄悄的,草软绵绵的。

桃树,杏树,梨树,你不让我,我不让你,都开满了花赶趟儿。红的像火,粉的像霞,白的像雪。花里带着甜味;闭了眼,树上仿佛已经满是桃儿,杏儿,梨儿。花下成千成百的蜜蜂嗡嗡的闹着,大小的蝴蝶飞来飞去。野花遍地是:杂样儿,有名字的,没名字的,散在草丛里像眼睛像星星,还眨呀眨的。

“吹面不寒杨柳风”,不错的,像母亲的手抚摸着你,风里带着些新翻的泥土的气息,混着青草味儿,还有各种花的香,都在微微润湿的空气里酝酿。鸟儿将巢安在繁花嫩叶当中,高兴起来了,呼朋引伴的卖弄清脆的歌喉,唱出婉转的曲子,跟清风流水应和着。牛背上牧童的短笛,这时候也成天嘹亮的响着。

雨是最寻常的,一下就是三两天。可别恼。看,像牛毛,像花针,像细丝,密密地斜织着,人家屋顶上全笼着一层薄烟。树叶却绿得发亮,小草也青得逼你的眼。傍晚时候,上灯了,一点点黄晕的光,烘托出一片安静而和平的夜。在乡下,小路上,石桥边,有撑着伞慢慢走着的人,地里还有工作的农民,披着蓑戴着笠。他们的房屋稀稀疏疏的,在雨里静默着。

天上的风筝渐渐多了,地上的孩子也多了。城里乡下,家家户户,老老小小,也赶趟似的,一个个都出来了。舒活舒活筋骨,抖擞抖擞精神,各做各的一份事儿去。“一年之计在于春”,刚起头儿,有的是功夫,有的是希望。

春天像刚落地的娃娃,从头到脚都是新的,它生长着。
春天像小姑娘,花枝招展的,笑着走着。
春天像健壮的青年,有铁一般的胳膊和腰脚,领着我们向前去。
</p>
    </p>
    <img src=""  data-src="./img/focus.png" alt="">
    <img src=""  data-src="./img/bargin.png" alt="">
    <p>
        盼望着,盼望着,东风来了,春天的脚步近了。

一切都像刚睡醒的样子,欣欣然张开了眼。山朗润起来了,水涨起来了,太阳的脸红起来了。  小草偷偷地从土地里钻出来,嫩嫩的,绿绿的。园子里,田野里,瞧去,一大片一大片满是的。坐着,躺着,打两个滚,踢几脚球,赛几趟跑,捉几回迷藏。风轻悄悄的,草软绵绵的。

桃树,杏树,梨树,你不让我,我不让你,都开满了花赶趟儿。红的像火,粉的像霞,白的像雪。花里带着甜味;闭了眼,树上仿佛已经满是桃儿,杏儿,梨儿。花下成千成百的蜜蜂嗡嗡的闹着,大小的蝴蝶飞来飞去。野花遍地是:杂样儿,有名字的,没名字的,散在草丛里像眼睛像星星,还眨呀眨的。

“吹面不寒杨柳风”,不错的,像母亲的手抚摸着你,风里带着些新翻的泥土的气息,混着青草味儿,还有各种花的香,都在微微润湿的空气里酝酿。鸟儿将巢安在繁花嫩叶当中,高兴起来了,呼朋引伴的卖弄清脆的歌喉,唱出婉转的曲子,跟清风流水应和着。牛背上牧童的短笛,这时候也成天嘹亮的响着。

雨是最寻常的,一下就是三两天。可别恼。看,像牛毛,像花针,像细丝,密密地斜织着,人家屋顶上全笼着一层薄烟。树叶却绿得发亮,小草也青得逼你的眼。傍晚时候,上灯了,一点点黄晕的光,烘托出一片安静而和平的夜。在乡下,小路上,石桥边,有撑着伞慢慢走着的人,地里还有工作的农民,披着蓑戴着笠。他们的房屋稀稀疏疏的,在雨里静默着。

天上的风筝渐渐多了,地上的孩子也多了。城里乡下,家家户户,老老小小,也赶趟似的,一个个都出来了。舒活舒活筋骨,抖擞抖擞精神,各做各的一份事儿去。“一年之计在于春”,刚起头儿,有的是功夫,有的是希望。

春天像刚落地的娃娃,从头到脚都是新的,它生长着。
春天像小姑娘,花枝招展的,笑着走着。
春天像健壮的青年,有铁一般的胳膊和腰脚,领着我们向前去。
    </p>
    <img src=""  data-src="./img/s2.png" alt="">

    <script src="lazyload.js"></script>
</body>
</html>

js代码:

const images=document.querySelectorAll("img");
window.addEventListener('scroll',(e)=>{
    images.forEach(image=>{
        const imageTop=image.getBoundingClientRect().top;
        if(imageTop<window.innerHeight){
            //到视窗的距离小于可是窗口的高度,显示图片
            const data_src=image.getAttribute('data-src');
            image.setAttribute('src',data_src);
        }
        console.log("scroll被触发了")
    })

})

以上代码,再来回滚动时,会多次出发滚动事件,持续加载图片。

解决办法:

const images=document.querySelectorAll("img");
//目标元素和可视窗口会产生交叉区域,进入离开交叉区域会触发callback函数。
const callback=(entries)=>{
    entries.forEach(entry=>{
        if(entry.isIntersecting){
            const image=entry.target;
            const data_src=image.getAttribute('data-src');
            image.setAttribute('src',data_src);
            observer.unobserve(image)
        }
    })

};
const observer=new IntersectionObserver(callback);
images.forEach(image=>{
    observer.observe(image); 
} )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值