zoukankan      html  css  js  c++  java
  • js可视区域图片懒加载

    可视区域图片懒加载

    实现原理,页面滚动时获取需要懒加载的图片,判断此图片是否在可视区域内,是则设置图片data-src地址为src地址,加载图片。

    html下载地址

    <!DOCTYPE html>
    <html>
    
        <head>
            <meta charset="UTF-8">
            <title>jquery可视区域图片懒加载</title>
            <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
            <style type="text/css">
                * {
                    margin: 0;
                    padding: 0;
                }
                
                img {
                    width: 100%;
                    display: block;
                }
                
                .content {
                    width: 100%;
                }
                
                
            </style>
        </head>
    
        <body>
    
            <div class="content">
                <div class="m1">
                    <img class="J-lazd" src="https://img.alicdn.com/imgextra/i1/94720297/TB2tVFMmYXlpuFjy1zbXXb_qpXa_!!94720297.jpg" data-src="https://img.alicdn.com/imgextra/i1/94720297/TB2jUhMpypnpuFjSZFkXXc4ZpXa_!!94720297.jpg" />
                </div>
                <div class="m1">
                    <img class="J-lazd" src="https://img.alicdn.com/imgextra/i1/94720297/TB2tVFMmYXlpuFjy1zbXXb_qpXa_!!94720297.jpg" data-src="https://img.alicdn.com/imgextra/i1/94720297/TB2jUhMpypnpuFjSZFkXXc4ZpXa_!!94720297.jpg" />
                </div>
                <div class="m1">
                    <img class="J-lazd" src="https://img.alicdn.com/imgextra/i1/94720297/TB2tVFMmYXlpuFjy1zbXXb_qpXa_!!94720297.jpg" data-src="https://img.alicdn.com/imgextra/i1/94720297/TB2jUhMpypnpuFjSZFkXXc4ZpXa_!!94720297.jpg" />
                </div>
                <div class="m1">
                    <img class="J-lazd" src="https://img.alicdn.com/imgextra/i1/94720297/TB2tVFMmYXlpuFjy1zbXXb_qpXa_!!94720297.jpg" data-src="https://img.alicdn.com/imgextra/i1/94720297/TB2jUhMpypnpuFjSZFkXXc4ZpXa_!!94720297.jpg" />
                </div>
                <div class="m1">
                    <img class="J-lazd" src="https://img.alicdn.com/imgextra/i1/94720297/TB2tVFMmYXlpuFjy1zbXXb_qpXa_!!94720297.jpg" data-src="https://img.alicdn.com/imgextra/i3/94720297/TB2T5RFm84lpuFjy1zjXXcAKpXa_!!94720297.png" />
                </div>
                <div class="m1">
                    <img class="J-lazd" src="https://img.alicdn.com/imgextra/i1/94720297/TB2tVFMmYXlpuFjy1zbXXb_qpXa_!!94720297.jpg" data-src="https://img.alicdn.com/imgextra/i3/94720297/TB2T5RFm84lpuFjy1zjXXcAKpXa_!!94720297.png" />
                </div>
                <div class="m1">
                    <img class="J-lazd" src="https://img.alicdn.com/imgextra/i1/94720297/TB2tVFMmYXlpuFjy1zbXXb_qpXa_!!94720297.jpg" data-src="https://img.alicdn.com/imgextra/i3/94720297/TB2T5RFm84lpuFjy1zjXXcAKpXa_!!94720297.png" />
                </div>
                <div class="m1">
                    <img class="J-lazd" src="https://img.alicdn.com/imgextra/i1/94720297/TB2tVFMmYXlpuFjy1zbXXb_qpXa_!!94720297.jpg" data-src="https://img.alicdn.com/imgextra/i3/94720297/TB2T5RFm84lpuFjy1zjXXcAKpXa_!!94720297.png" />
                </div>
                <div class="m1">
                    <img class="J-lazd" src="https://img.alicdn.com/imgextra/i1/94720297/TB2tVFMmYXlpuFjy1zbXXb_qpXa_!!94720297.jpg" data-src="https://img.alicdn.com/imgextra/i3/94720297/TB2T5RFm84lpuFjy1zjXXcAKpXa_!!94720297.png" />
                </div>
            </div>
    
            <script type="text/javascript">
                //调用
                visibleImgLazyload();
                //触发滚动 防止第一屏不加载
                $("body,html").scrollTop(1);
                /**
                 * 可视区域 img 加载
                 */
                function visibleImgLazyload() {
                    //当前窗口高度
                    var winHeight = $(window).height();
                    //整个文档高度
                    var bodyHeight = $(document).height();
                    //如果图片不满屏,直接加载
                    if(bodyHeight <= winHeight) {
                        $(".J-lazd").each(function() {
                            var $this = $(this);
                            if($this.attr("data-url") != $this.attr("src")) {
                                //如果为空,src设置为data-src
                                if($this.attr("data-src")) {
                                    $this.attr("src", $this.attr("data-src"));
                                } else {
                                    $this.attr("data-src", $this.attr("src"));
                                }
                            }
                        });
                    } else {
                        //容差值 预加载上下100像素内的图片
                        var phase = 100;
                        $(document).on("scroll", function(e) {
                            $(".J-lazd").each(function() {
                                var $this = $(this);
                                //窗口的高度+看不见的顶部的高度=屏幕低部距离最顶部的高度  
                                var thisButtomTop = parseInt($(window).height()) + parseInt($(window).scrollTop());
                                //屏幕顶部距离最顶部的高度   减去图片高度,上拉时也会点到图片就加载
                                var thisTop = parseInt($(window).scrollTop()) - parseInt($this.height());
                                var imgTop = parseInt($this.offset().top);
                                if(imgTop >= thisTop - phase && imgTop <= thisButtomTop + phase && $this.attr("data-url") != $this.attr("src")) {
                                    //如果为空,src设置为data-src
                                    if($this.attr("data-src")) {
                                        $this.attr("src", $this.attr("data-src"));
                                    } else {
                                        $this.attr("data-src", $this.attr("src"));
                                    }
                                }
                            });
                        });
                    }
                }
            </script>
    
        </body>
    
    </html>
  • 相关阅读:
    [北大机试C]:走迷宫(BFS)
    [北大机试B][OpenJ_Bailian-2965]:玛雅历(模拟)
    [北大机试A]:有趣的跳跃(模拟)
    [2019北大机试D]:最大上升子序列和(DP)[计蒜客-T1221/HDU1087]
    [牛客练习赛53] A.超越学姐爱字符串 [dp]
    [牛客][北大考研复试]I Wanna Go Home[dijkstra]
    SP1716 GSS3
    牛客小白月赛13_A_小A的签到题
    自习室管理系统,基于B/S模式下的JAVA系统
    基于SSH的聊天室
  • 原文地址:https://www.cnblogs.com/xueshanshan/p/6757490.html
Copyright © 2011-2022 走看看