图片的延迟加载

    xiaoxiao2021-09-15  81

    <!DOCTYPE html>

    <html>

    <head>

    <meta charset="UTF-8">

    <title>图片延迟加载</title>

    <style type="text/css">

    html,

    body,

    div,

    img {

    margin: 0;

    padding: 0;

    font-family: "微软雅黑";

    -webkit-user-select: none;

    }

    img {

    border: none;

    display: block;

    }

    #box,

    #box1 {

    width: 500px;

    height: 300px;

    margin: 1000px auto 0;

    background: url(img/default.gif)no-repeat center center #e1e1e1;

    }

    #box img,

    #box1 img {

    width: 500px;

    height: 300px;

    }

    </style>

    </head>

    <body>

    <div id="box">

    <img src="" photo="img/jd.jpg" />

    </div>

    <div id="box1">

    <img src="" photo="img/jd.jpg" />

    </div>

    <script src="JS/utils.js" type="text/javascript" charset="utf-8"></script>

    <script type="text/javascript">

    //作用:保证页面的加载速度 一般加载速度超过三秒就判定为死亡页面

    //原理:一般我们第一屏幕的图片我们上来先不加载 而是给它一个背景图片(有时候我们会称它为占位图)一般大小维持在5KB以下

    //等到第一屏幕的资源都加载完成后 我们才开始加载真实图片 或者有时候会通过给他一个延迟时间来实现

    //其他屏幕的时候上来我们也是先不加载 等到滚动条滚到对应位置的时候才开始加载

    var oBox = document.getElementById("box");

    var oImg = oBox.getElementsByTagName("img")[0];

    var winHeight = utils.win("clientHeight");

    var oBoxHeight = oBox.offsetHeight;

    var oBoxTop = utils.offset(oBox).top;

    //window.scroll=function(){}

    function lazyLoad() {

    var trueImg = oImg.getAttribute("photo");

    //我们要考虑自定义属性存储的图片的地址是否为真实地址 或是说能不能加载出来 那么问题来了 

    //我们怎么判断能否加载出来  我想到的是可以借助其他的img来试验一下 如果能加载出来我们就把这个地址给页面上的那个img

    var winScroll = utils.win("scrollTop");

    if (oImg.trueLoad) {

    return;

    }

    if ((winHeight + winScroll) >= (oBoxHeight + oBoxTop)) {

    window.setTimeout(function() {

    var curImg = document.createElement("img");

    curImg.src = trueImg;

    curImg.onload = function() {

    //当curImg 加载成功后执行后面function函数

    oImg.src = trueImg;

    curImg = null;

    }

    }, 2000);

    oImg.trueLoad = true;

    }

    }

    //window.setTimeout(lazyLoad, 3000);

    //window.οnlοad=lazyLoad;

    window.onscroll = lazyLoad;

    </script>

    </body>

    </html>

    转载请注明原文地址: https://ju.6miu.com/read-677626.html

    最新回复(0)