zoukankan      html  css  js  c++  java
  • 懒加载(延迟加载的案例)(单张案例)(多张案例)

      //单张图片的案例

      <!DOCTYPE html>
      <html>
        <head>
          <meta charset="UTF-8">
          <title></title>
          <style>
            .a{
            200px;
            height:200px;
            margin:1000px auto;
            background:#ccc;
            }
            .a img{
            100%;
            height:100%;
            }
          </style>
        </head>
        <body>
          <div class="a">
            <img xsrc="img/1.jpg" alt="" />
          </div>
        </body>
      </html>
    <script>
      var img=document.getElementsByTagName("img")[0];
      //单个图片加载;
      function lazyload(ele){
        var wheight=document.documentElement.scrollTop+document.documentElement.clientHeight;
        var off=offset(ele).top+ele.offsetHeight;
        if(wheight>off){
          if(ele.load){
            return;
          }
          var imge=new Image;
          imge.src=ele.getAttribute("xsrc");
          imge.onload=function(){
            ele.src=imge.src;
          }
          ele.load=true;
        }
      }
      window.onscroll=function(){
        lazyload(img)
      }

      function offset(dom){
        var left=null;
        var top=null;
        var parent=dom.offsetParent;
        var les=dom.offsetLeft;
        var led=dom.offsetTop;
        while(parent){
          les+=parent.offsetLeft;
          led+=parent.offsetTop;
          parent=parent.offsetParent;
        }
        return {left:les,top:led};
      }

    </script>

      //多张图片的案例

      <!DOCTYPE html>
      <html>
        <head>
          <meta charset="UTF-8">
          <title></title>
          <style>
            ul,li{
              list-style:none;
            }
            *{
              margin:0;
              padding:0;
            }
            #news>li{
              100%;
              height:80px;
              padding:5px;
              border-bottom:red 1px dashed;
            }
            #news>li>div:nth-of-type(1){
              77px;
              height:77px;
              background:#ccc;
              position:absolute;
            }
            img{
              100%;
              height:100%;
            }
            #news>li>div:nth-of-type(2){
              margin-left:100px;
            }
          </style>
        </head>
        <body>
          <ul id="news">

          </ul>
        </body>
      </html>
      <script>
        var data=[
          {"img":"img/1.jpg","h3":"新闻","cont":"重要新闻重要新闻重要新闻"},
          {"img":"img/2.jpg","h3":"新闻","cont":"重要新闻重要新闻重要新闻"},
          {"img":"img/3.jpg","h3":"新闻","cont":"重要新闻重要新闻重要新闻"},
          {"img":"img/4.jpg","h3":"新闻","cont":"重要新闻重要新闻重要新闻"},
          {"img":"img/5.jpg","h3":"新闻","cont":"重要新闻重要新闻重要新闻"},
          {"img":"img/6.jpg","h3":"新闻","cont":"重要新闻重要新闻重要新闻"},
          {"img":"img/7.jpg","h3":"新闻","cont":"重要新闻重要新闻重要新闻"},
          {"img":"img/8.jpg","h3":"新闻","cont":"重要新闻重要新闻重要新闻"},
          {"img":"img/9.jpg","h3":"新闻","cont":"重要新闻重要新闻重要新闻"},
          {"img":"img/10.jpg","h3":"新闻","cont":"重要新闻重要新闻重要新闻"},
          {"img":"img/11.jpg","h3":"新闻","cont":"重要新闻重要新闻重要新闻"},
          {"img":"img/12.jpg","h3":"新闻","cont":"重要新闻重要新闻重要新闻"},
          {"img":"img/13.jpg","h3":"新闻","cont":"重要新闻重要新闻重要新闻"},
          {"img":"img/14.jpg","h3":"新闻","cont":"重要新闻重要新闻重要新闻"},
          {"img":"img/15.jpg","h3":"新闻","cont":"重要新闻重要新闻重要新闻"},
          {"img":"img/16.jpg","h3":"新闻","cont":"重要新闻重要新闻重要新闻"},
          {"img":"img/17.jpg","h3":"新闻","cont":"重要新闻重要新闻重要新闻"},
          {"img":"img/18.jpg","h3":"新闻","cont":"重要新闻重要新闻重要新闻"},
          {"img":"img/19.jpg","h3":"新闻","cont":"重要新闻重要新闻重要新闻"} ,
          {"img":"img/20.jpg","h3":"新闻","cont":"重要新闻重要新闻重要新闻"}
        ]
        var st="";
        var news=document.getElementById("news")
        function load(){
          for(var i=0;i<data.length;i++){
            st+="<li>";
              st+="<div>";
                st+="<img xsrc='"+data[i].img+"'/>";
              st+="</div>";
              st+="<div>"
                st+="<h3>"+data[i].h3+"</h3>"
                st+="<p>"+data[i].cont+"</p>"
              st+="</div>";
            st+="</li>";
          }
          news.innerHTML=st;
        }
        load();


        // 多张图片加载

        var img=document.getElementsByTagName("img");

        function lazylod(){
          for(var i=0;i<img.length;i++){
            if(img[i].load==true){
              continue;
            }
          lazyload(img[i]);
          }
        }
        setTimeout(function(){
          lazylod()
        },1000)

        window.onscroll=function(){
          lazylod()
        }
        function lazyload(ele){
          var swidth=document.documentElement.scrollTop+document.documentElement.clientHeight;
          var tops=offset(ele).top+ele.offsetHeight;
          if(swidth>tops){
            if(ele.load==true){
              return;
            }
            var im=new Image;
            im.src=ele.getAttribute("xsrc");
            im.onload=function(){
              ele.src=im.src
            }
            ele.load=true;
          }
        }

        function offset(ele){
          var le=ele.offsetLeft;
          var to=ele.offsetTop;
          var parent=ele.offsetParent;
          while(parent){
            le+=parent.offsetLeft;
            to+=parent.offsetTop;
            parent=parent.offsetParent;
          }
        return {left:le,top:to};
        }

      </script>

  • 相关阅读:
    理解消息循环和窗口过程(转)
    对话框和控件编程(转)
    俄罗斯方块
    男生女生配(抽屉原理)
    翻转吧,字符串
    数塔
    Pseudoprime numbers伪素数(快速幂+判定素数)
    shǎ崽 OrOrOrOrz
    As Easy As A+B
    求素数(筛选法)
  • 原文地址:https://www.cnblogs.com/shangjun6/p/10578175.html
Copyright © 2011-2022 走看看