美文网首页
原生js 图片懒加载

原生js 图片懒加载

作者: xilong | 来源:发表于2019-06-06 15:08 被阅读0次

    1、使用方法

    1、引入下面js
    2、在img添加 class="lazyloadimg" 类名,src 里面是默认图片地址,data-src 里面为真实src地址

    <img class="lazyloadimg" src="img/default.png"  data-src="img/bg_6.jpg">
    

    使用了防抖,原理是 图片进入视口 替换 src 地址

    (function () {
        window.onload = function () {
            //防止抖动
            function throttle(fun, delay, time) {
                var timeout,
                    startTime = new Date();
    
                return function() {
                    var context = this,
                        args = arguments,
                        curTime = new Date();
    
                    clearTimeout(timeout);
                    // 如果达到了规定的触发时间间隔,触发 handler
                    if (curTime - startTime >= time) {
                        fun.apply(context, args);
                        startTime = curTime;
                        // 没达到触发间隔,重新设定定时器
                    } else {
                        timeout = setTimeout(fun, delay);
                    }
                };
            };
            window.onscroll = throttle(watchscroll, 200,500);
            //判断在可视区 就替换图片
            function watchscroll () {
                var bodyScrollHeight = document.documentElement.scrollTop || document.body.scrollTop;// body滚动高度
                var windowHeight = window.innerHeight;// 视窗高度
                var imgs = document.getElementsByClassName('lazyloadimg');
                if(imgs && imgs.length>0){
                    for (var i =0; i < imgs.length; i++) {
                        var imgHeight = imgs[i].offsetTop;// 图片距离顶部高度
                        if (imgHeight  < windowHeight  + bodyScrollHeight) {
                            imgs[i].src = imgs[i].getAttribute('data-src');
                            imgs[i].className = imgs[i].className.replace('lazyloadimg','')
                        }
                    }
                }
            }
        }
    })()
    

    相关文章

      网友评论

          本文标题:原生js 图片懒加载

          本文链接:https://www.haomeiwen.com/subject/uqcuxctx.html