JavaScript中的懒加载(原理简单,代码全网最精简)

JavaScript中的懒加载

在这里插入图片描述

一.为什么要使用懒加载?

像淘宝网站等,页面中有着大量图片,一次性全部加载这些图片会使浏览器发送大量请求和造成浪费。采用懒加载技术,即用户浏览到哪儿,就加载该处的图片。这样节省网络资源、提升用户体验、减少服务器压力。

图片懒加载优势:

  • 增强用户体验
  • 优化代码
  • 减少http的请求
  • 减少服务器端压力
  • 服务器的按需加载

图片懒加载原理:

先将图片的src设置为同一张图片或者不设置,同时给img标签设置一个特殊属性,例如:data-src用于存放图片的真实预览地址;若图片未进入可视区域时,展示同一张图片或者直接不展示图片,此时就不会发生http请求,当图片进入可视区域时,将data-src上的值赋给src,此时再发送http请求。

关键:判断图片是否进入到可视区域(关键函数)

二.懒加载源码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        img{
            height: 333px;
            margin-left: -600px;
            transition: all 5s;
        }
    </style>
</head>
<body>
    <ul>
        <li><img src="" alt="" data-src="01.jpg"></li>
        <li><img src="" alt="" data-src="01.jpg"></li>
        <li><img src="" alt="" data-src="01.jpg"></li>
        <li><img src="" alt="" data-src="01.jpg"></li>
        <li><img src="" alt="" data-src="01.jpg"></li>
        <li><img src="" alt="" data-src="01.jpg"></li>
        <li><img src="" alt="" data-src="01.jpg"></li>
        <li><img src="" alt="" data-src="01.jpg"></li>
        <li><img src="" alt="" data-src="01.jpg"></li>
        <li><img src="" alt="" data-src="01.jpg"></li>
    </ul>
    <script>
        // 可见区域高度
        const viewHeight=document.documentElement.clientHeight;
        function lazyload(){
             // 获取图片
            const img=document.getElementsByTagName("img")
            for(let e of img){
                // getBoundingClientRect()方法返回元素的大小及其相对于视口的位置。
                const rect=e.getBoundingClientRect()
                if(rect.bottom>=0&&rect.top<viewHeight){
                    // getAttribute() 方法返回指定属性名的属性值
                    e.src=e.getAttribute("data-src");
                    e.style.marginLeft="0px"
                }
            }
        }
        lazyload(); //刚开始还没有滚动屏幕时,要先触发一次函数,初始化首页的页面图片
        document.addEventListener("scroll",lazyload);//当滚动条移动时,触发事件
    </script>
</body>
</html>

先将图片的src设置为同一张图片或者不设置,同时给img标签设置一个特殊属性,例如:data-src用于存放图片的真实预览地址;若图片未进入可视区域时,展示同一张图片或者直接不展示图片,此时就不会发生http请求,当图片进入可视区域时,将data-src上的值赋给src,此时再发送http请求。

在这里插入图片描述
熟悉以下API的话,任何根据懒加载的原理,就能非常轻松的实现一个网页懒加载

document.documentElement.clientHeight网页可见区域高度

getBoundingClientRect()方法返回元素的大小及其相对于视口的位置。

getAttribute() 方法返回指定属性名的属性值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值