JS实现图片懒加载demo

<!DOCTYPE html>
<html>
<head>
    <script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.js"></script>
    <title>demo lazyload</title>
    <meta charset="utf-8">
    <style type="text/css">
        * {
            padding: 0;
            margin: 0;
            text-decoration: none;
            list-style: none;
        }
        .layout {
            margin: 0 auto;
            width: 1000px;
        }
        .lazyload img {
            width: 300px;
            height: 400px;
        }
        .img-ct {
            margin-left: -50px;
            overflow: auto;
        }
        .item {
            float: left;
            margin-left: 50px;
            margin-bottom: 30px;
        }
    </style>
</head>
<body>
<div class="lazyload">
  <div class="layout">
    <ul class="img-ct">
        <li class="item">
            <a href="javascript:void(0)"><img data-img="1.png" src="default.png"></a>
        </li>
        <li class="item">
            <a href="javascript:void(0)"><img data-img="1.png" src="default.png"></a>
        </li>
        <li class="item">
            <a href="javascript:void(0)"><img data-img="1.png" src="default.png"></a>
        </li>
        <li class="item">
            <a href="javascript:void(0)"><img data-img="1.png" src="default.png"></a>
        </li>
        <li class="item">
            <a href="javascript:void(0)"><img data-img="2.png" src="default.png"></a>
        </li>
        <li class="item">
            <a href="javascript:void(0)"><img data-img="2.png" src="default.png"></a>
        </li>
        <li class="item">
            <a href="javascript:void(0)"><img data-img="2.png" src="default.png"></a>
        </li>
        <li class="item">
            <a href="javascript:void(0)"><img data-img="2.png" src="default.png"></a>
        </li>
        <li class="item">
            <a href="javascript:void(0)"><img data-img="2.png" src="default.png"></a>
        </li>
        <li class="item">
            <a href="javascript:void(0)"><img data-img="3.png" src="default.png"></a>
        </li>
        <li class="item">
            <a href="javascript:void(0)"><img data-img="3.png" src="default.png"></a>
        </li>
        <li class="item">
            <a href="javascript:void(0)"><img data-img="3.png" src="default.png"></a>
        </li>
        <li class="item">
            <a href="javascript:void(0)"><img data-img="3.png" src="default.png"></a>
        </li>
        <li class="item">
            <a href="javascript:void(0)"><img data-img="3.png" src="default.png"></a>
        </li>
    </ul>
  </div>
</div>

<script type="text/javascript">
var lazyLoad = (function(){
    var clock;
    
    function init(){
        $(window).on("scroll", function(){
            if (clock) {
                clearTimeout(clock);
            }
            clock = setTimeout(function(){
                checkShow();
            }, 200);
        })
        checkShow();
    }
    
    function checkShow(){
        $(".lazyload img").each(function(){
            var $cur =$(this);
            if($cur.attr('isLoaded')){
                return;
            }
            if(shouldShow($cur)){
                showImg($cur);
            }
        })
    }

    function shouldShow($node){
        var scrollH = $(window).scrollTop(),
            winH = $(window).height(),
            top = $node.offset().top;

        if(top < winH + scrollH){
            return true;
        }else{
            return false;
        }
    }

    function showImg($node){
        $node.attr('src', $node.attr('data-img'));
        $node.attr('isLoaded', true);
    }

    return {
        init: init
    }
})()

lazyLoad.init();
</script>
</body>
</html>

 

转载于:https://www.cnblogs.com/chenjiacheng/p/7232392.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值