自己做的一个纯js延迟加载图片小插件

//scrollLoadImg.js

/*
* obj:要加载图片的容器(默认document) * scrollObj:要滚动的容器(默认window) * src:预加载的路径(默认'data-img') * time:延迟加载图片(默认1秒)*/ var t; var scrollLoadImg = function(par){ if(arguments.length==0){ par = { obj:document, scrollObj:window, src:"data-img", time:1000 }; }else{ par = { obj:par.obj?par.obj:document, scrollObj:par.scrollObj?par.scrollObj:window, src:par.src?par.src:"data-img", time:par.time?par.time:1000 }; } this.init = function(){ var isWindow = par.scrollObj.constructor.name==="Window"; var isDocument = par.scrollObj.constructor.name==="HTMLDocument"; var imageObjArr =isWindow?document.images : par.obj.getElementsByTagName("img"); //获取页面所有img标签 var scrollTop = isWindow?document.documentElement.scrollTop || document.body.scrollTop:par.scrollObj.scrollTop; //获取页面滚动位置 var clientHeight = isWindow?window.innerHeight:isDocument?document.documentElement.clientHeight || document.body.clientHeight:par.scrollObj.clientHeight; //根据传入的对象获取对象可视高度(默认是window) for(var i = 0;i<imageObjArr.length;i++){ var currentImg = imageObjArr[i]; var imgTop = currentImg.offsetTop; //获取图片距离顶部位置 if(currentImg.getAttribute("src")!==currentImg.getAttribute(par.src) && currentImg.getAttribute(par.src)!==null){ if(imgTop>=scrollTop-clientHeight/2 && imgTop<scrollTop+clientHeight+clientHeight/2){ imageObjArr[i].setAttribute("src",currentImg.getAttribute(par.src)); } } } } this.yc = function(){ clearTimeout(t); t = setTimeout(function(){ return this.init(); },par.time); } this.yc(); var _this = this; par.scrollObj.onscroll = function(){ _this.yc(); } }
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript" src="scrollLoadImg.js"></script>
    <script>
        window.onload = function() {        
            var content = document.getElementById("content");
            var scrollInfo = document.getElementById("scrollInfo");
            scrollLoadImg({
                   obj: content, //要加载图片的区域
                scrollObj:scrollInfo, //滚动区域,不设置的话默认是window
                time: 1000 //延迟多少毫秒加载图片(1000毫秒等于1秒)
            })  
        }
    </script>
    <style type="text/css">
    #scrollInfo{
        height: 600px;
        overflow: auto;
        border: 1px solid blue;
    }
    #scrollInfo img {
        width: 300px;
        height: 300px;
        display: block;
    }
    </style>
</head>
<body>
    <div id="content">    
        <div id="scrollInfo">
            <img src="image/bgg.jpg" data-img="image/1.jpg" alt="">         
            <img src="image/bgg.jpg" data-img="image/2.jpg" alt="">
            <img src="image/bgg.jpg" data-img="image/3.jpg" alt="">
            <img src="image/bgg.jpg" data-img="image/4.jpg" alt="">
            <img src="image/bgg.jpg" data-img="image/5.jpg" alt="">
            <img src="image/bgg.jpg" data-img="image/6.jpg" alt="">
            <img src="image/bgg.jpg" data-img="image/7.jpg" alt="">
            <img src="image/bgg.jpg" data-img="image/8.jpg" alt="">
            <img src="image/bgg.jpg" data-img="image/9.jpg" alt="">
        </div>
    </div>
</body>
</html>

 

转载于:https://www.cnblogs.com/xingx/p/6890955.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值