图片懒加载与预加载

2019-11-25  本文已影响0人  阿凯_8b27

图片预加载
应用创建,前端打印图片,需要所有图片都加载完毕才能打印(增加服务端压力)
varimgLoad =function (url, callback) {

        varimg =new Image();

        img.src = url;

        if (img.complete) { //图片的缓存

            callback(img.width, img.height);

        } else {

            img.onload =function () {

                callback(img.width, img.height);

                img.onload =null;

            };

        };

    };
单纯使用CSS,可容易、高效地预加载图片,代码如下:

#preload-01 { background: url(-01.png) no-repeat -9999px -9999px; }#preload-02 { background: url(-02.png) no-repeat -9999px -9999px; }

懒加载(减少服务端压力) 实现方案
图片设置data-src ,在自己需要的事件中将data-src赋值给src
function lazyload() {

    var images = document.getElementsByTagName('img');

    var len    = images.length;

    var n      = 0;      //存储图片加载到的位置,避免每次都从第一张图片开始遍历

    return function() {

var seeHeight = document.documentElement.clientHeight;

var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;

for(var i = n; i < len; i++) {

    if(images[i].offsetTop < seeHeight + scrollTop) {

        if(images[i].getAttribute('src') === 'images/loading.gif') {

    images[i].src = images[i].getAttribute('data-src');

}

n = n + 1;

    }

}

    }

}

var loadImages = lazyload();

loadImages();          //初始化首页的页面图片

window.addEventListener('scroll', loadImages, false);

上一篇 下一篇

猜你喜欢

热点阅读