懒加载示例

代码

<!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>
        *{
            margin:0;
            padding:0;
        }
        ul,ul li{
            list-style:none;
        }
        #list{
            width:1200px;
            margin:0 auto;
            display:flex;
            flex-wrap:wrap;
        }
        #list li{
            width:350px;
            height:310px;
            border:1px solid #000;
            margin:20px;
        }
        #list li img{
            width:100%;
            height:100%;
        }
    </style>
</head>
<body>
    <ul id="list">
        <li><img abc="images/1.jpg" alt=""></li>
        <li><img abc="images/2.jpg" alt=""></li>
        <li><img abc="images/3.jpg" alt=""></li>
        <li><img abc="images/4.jpg" alt=""></li>
        <li><img abc="images/5.jpg" alt=""></li>
        <li><img abc="images/6.jpg" alt=""></li>
        <li><img abc="images/7.jpg" alt=""></li>
        <li><img abc="images/8.jpg" alt=""></li>
        <li><img abc="images/9.jpg" alt=""></li>
        <li><img abc="images/1.jpg" alt=""></li>
        <li><img abc="images/2.jpg" alt=""></li>
        <li><img abc="images/3.jpg" alt=""></li>
        <li><img abc="images/4.jpg" alt=""></li>
        <li><img abc="images/5.jpg" alt=""></li>
        <li><img abc="images/6.jpg" alt=""></li>
        <li><img abc="images/7.jpg" alt=""></li>
        <li><img abc="images/8.jpg" alt=""></li>
        <li><img abc="images/9.jpg" alt=""></li>
    </ul>


    <script>
        /*
            1.图片路径放在非src属性中 【能阻止加载图片】
            2.加载可视区部分,获取 刚才放有图片路径的属性值
            3.再将可视区部分的img设置成刚才获取的图片路径
        */
        var imgs = document.getElementsByTagName('img');  // 获取所有图片
        var pageHeight = document.documentElement.clientHeight;  // 浏览器可视高度  【固定】

        window.onscroll = lazyLoad;

        function lazyLoad(){  // 窗口滚动事件
            for(var i=0;i<imgs.length;i++){   // 每一张图片距离顶部距离是固定的 不会发生改变 【固定】
                // 用浏览器可视高与页面卷去的高度之和 与 每一张图片距离顶部距离做比较,如果 高度之和大于等于 某一张图片的高度,就显示该图片
                if(pageHeight+ document.documentElement.scrollTop >= imgs[i].offsetTop){
                    imgs[i].src = imgs[i].getAttribute('abc');  // 获取满足条件图片的abc属性,将其值赋给图片的src属性
                }
            }
        }
        lazyLoad();
    </script>
</body>
</html>

 

效果

posted @ 2020-07-09 20:00  石海莹  阅读(267)  评论(0编辑  收藏  举报