zoukankan      html  css  js  c++  java
  • IntersectionObserver实现图片懒加载

    API:

    https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API

    直接上源码:

    <!DOCTYPE html>
    <html>
        <header>
            <style>
                .list-item{
                    height: 400px; 
                    margin: 5px; 
                    background-color: lightblue; 
                    list-style: none;
                }
            </style>
        </header>
        <body>
            <li class="list-item"><img class="list-item-img" alt="loading" data-src='./images/icon1.png'></li>
            <li class="list-item"><img class="list-item-img" alt="loading" data-src='./images/icon2.png'></li>
            <li class="list-item"><img class="list-item-img" alt="loading" data-src='./images/icon3.png'></li>
            <li class="list-item"><img class="list-item-img" alt="loading" data-src='./images/icon4.png'></li>
            <li class="list-item"><img class="list-item-img" alt="loading" data-src='./images/icon5.png'></li>
            <li class="list-item"><img class="list-item-img" alt="loading" data-src='./images/icon6.png'></li>
    
            <script>
                var observer = new IntersectionObserver(function(changes) {
                    console.log(changes);
                    changes.forEach(function(element, index) {
                        // statements
                        if (element.intersectionRatio > 0 && element.intersectionRatio <= 1) {
                            element.target.src = element.target.dataset.src;
                        }
                    });
                });
    
    
                function addObserver() {
                    var listItems = document.querySelectorAll('.list-item-img');
                    listItems.forEach(function(item) {
                        observer.observe(item);
                    });
                }
    
                addObserver();
            </script>
        </body>
    </html>

     

    运行代码后发现,当滚动滚动轴时,只有当<li>区域完全显示出来后才会触发相应的下载图片的http请求。

    兼容浏览器:

    desktop:

    Mobile:

  • 相关阅读:
    (转)ASP连接sql server实例解析
    (转)ASP与sql存储过程
    将博客搬至CSDN
    详细解析Java中抽象类和接口的区别
    蔬菜销售策划
    医学学习
    mlecms v2.2版权
    网页打印设置
    silverlight RadGridView总结系列(转载)
    silverlight RadGridView总结二(转载)
  • 原文地址:https://www.cnblogs.com/lidgblogs/p/7607582.html
Copyright © 2011-2022 走看看