zoukankan      html  css  js  c++  java
  • 网页图片按需加载

    网页中的图片实现按需加载(滚动条下拉加载)。

    效果如下:可以看到,随着滚动条的下拉,图片资源请求有了变化。

    实现此功能需要思考的部分:

    如何认定某张图片需要进行加载,加载的必要条件是什么?

    动态截图中可以看到,图片进入了狭窄的可视区(被控制台视区挤压了)就会被加载了,那么:

    网页中的图片都有自己距离浏览器窗口顶部的距离,这部分距离可以直接用属性取出:图片距离,img.offsetTop。

    通过判断图片是否进入了可视区即可得出该图片是否应该被加载,一张图解释图片有没有进入可视区:

    可视区范围+滚动条滚动距离: 可视区范围(clientHeight) 滚动条滚动距离(scrolltop)

    如果图片距离浏览器顶部距离小于可视区范围+滚动条滚动距离,那么该图片应该被加载

    其实核心部分就是判断 img.offsetTop < clientHeight+scrolltop.

    主要思路就是这样,代码部分如下。

      1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
      2         "http://www.w3.org/TR/html4/loose.dtd">
      3 <html>
      4 <head>
      5     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
      6     <title>Mking_js_</title>
      7 
      8     <style type="text/css">
      9         ul{ margin: 100px auto; padding: 0; overflow: hidden; }
     10         li{ float: left; list-style: none; margin: 0 0 10px 10px; border: 1px solid #000000;}
     11         img{ width:280px; height: 150px; }
     12     </style>
     13 
     14     <script type="text/javascript">
     15         window.onload = function(){
     16             var oUl = document.getElementById("ul1");
     17             var aImgs = oUl.getElementsByTagName("img");
     18             scroll();
     19             window.onscroll = scroll;
     20              var i = 0;
     21             function scroll(){
     22                 var iScrollTop = document.documentElement.scrollTop || document.body.scrollTop;
     23                 var clientHeight = document.documentElement.clientHeight;  //获取可视区的高
     24                 //alert(iScrollTop+'**'+clientHeight);
     25                  
     26                 for(var i=0;i<aImgs.length;i++){
     27                     //图片距离顶部的距离小于滚动条滚动的距离+可视区的距离,则图片进入可视区范围,
     28                     // 更改图片的scr 
     29                     if(!aImgs[i].isload && getTop(aImgs[i]) < iScrollTop+clientHeight){ 
     30                         aImgs[i].src = aImgs[i].getAttribute("_src");
     31                         aImgs[i].isload = true; 
     32                     }
     33                 }
     34             }
     35 
     36 
     37             function getTop(obj){ 
     38                 var iTop = 0;
     39                 while(obj){
     40                     iTop += obj.offsetTop;
     41                     obj = obj.offsetParent;
     42                 }
     43                 return iTop;
     44             }
     45         };
     46     </script>
     47 </head>
     48 <body>
     49     <ul id="ul1">
     50         <li><img _src="img/1.jpg" src="img/white.jpg"/></li>
     51         <li><img _src="img/2.jpg" src="img/white.jpg"/></li>
     52         <li><img _src="img/3.jpg" src="img/white.jpg"/></li>
     53         <li><img _src="img/4.jpg" src="img/white.jpg"/></li>
     54         <li><img _src="img/5.jpg" src="img/white.jpg"/></li>
     55         <li><img _src="img/6.jpg" src="img/white.jpg"/></li>
     56         <li><img _src="img/7.jpg" src="img/white.jpg"/></li>
     57         <li><img _src="img/1.jpg" src="img/white.jpg"/></li>
     58         <li><img _src="img/2.jpg" src="img/white.jpg"/></li>
     59         <li><img _src="img/3.jpg" src="img/white.jpg"/></li>
     60         <li><img _src="img/4.jpg" src="img/white.jpg"/></li>
     61         <li><img _src="img/5.jpg" src="img/white.jpg"/></li>
     62         <li><img _src="img/6.jpg" src="img/white.jpg"/></li>
     63         <li><img _src="img/7.jpg" src="img/white.jpg"/></li>
     64         <li><img _src="img/1.jpg" src="img/white.jpg"/></li>
     65         <li><img _src="img/2.jpg" src="img/white.jpg"/></li>
     66         <li><img _src="img/3.jpg" src="img/white.jpg"/></li>
     67         <li><img _src="img/4.jpg" src="img/white.jpg"/></li>
     68         <li><img _src="img/5.jpg" src="img/white.jpg"/></li>
     69         <li><img _src="img/6.jpg" src="img/white.jpg"/></li>
     70         <li><img _src="img/7.jpg" src="img/white.jpg"/></li>
     71         <li><img _src="img/1.jpg" src="img/white.jpg"/></li>
     72         <li><img _src="img/2.jpg" src="img/white.jpg"/></li>
     73         <li><img _src="img/3.jpg" src="img/white.jpg"/></li>
     74         <li><img _src="img/4.jpg" src="img/white.jpg"/></li>
     75         <li><img _src="img/5.jpg" src="img/white.jpg"/></li>
     76         <li><img _src="img/6.jpg" src="img/white.jpg"/></li>
     77         <li><img _src="img/7.jpg" src="img/white.jpg"/></li>
     78         <li><img _src="img/1.jpg" src="img/white.jpg"/></li>
     79         <li><img _src="img/2.jpg" src="img/white.jpg"/></li>
     80         <li><img _src="img/3.jpg" src="img/white.jpg"/></li>
     81         <li><img _src="img/4.jpg" src="img/white.jpg"/></li>
     82         <li><img _src="img/5.jpg" src="img/white.jpg"/></li>
     83         <li><img _src="img/6.jpg" src="img/white.jpg"/></li>
     84         <li><img _src="img/7.jpg" src="img/white.jpg"/></li>
     85         <li><img _src="img/1.jpg" src="img/white.jpg"/></li>
     86         <li><img _src="img/2.jpg" src="img/white.jpg"/></li>
     87         <li><img _src="http://photo.enterdesk.com/2008-6-21/200806211628314920.jpg" src="img/white.jpg"/></li>
     88         <li><img _src="img/3.jpg" src="img/white.jpg"/></li>
     89         <li><img _src="img/4.jpg" src="img/white.jpg"/></li>
     90         <li><img _src="img/5.jpg" src="img/white.jpg"/></li>
     91         <li><img _src="img/6.jpg" src="img/white.jpg"/></li>
     92         <li><img _src="img/7.jpg" src="img/white.jpg"/></li>
     93         <li><img _src="img/1.jpg" src="img/white.jpg"/></li>
     94         <li><img _src="img/2.jpg" src="img/white.jpg"/></li>
     95         <li><img _src="img/3.jpg" src="img/white.jpg"/></li>
     96         <li><img _src="img/4.jpg" src="img/white.jpg"/></li>
     97         <li><img _src="img/5.jpg" src="img/white.jpg"/></li>
     98         <li><img _src="img/6.jpg" src="img/white.jpg"/></li>
     99         <li><img _src="img/7.jpg" src="img/white.jpg"/></li>
    100         <li><img _src="img/1.jpg" src="img/white.jpg"/></li>
    101         <li><img _src="img/2.jpg" src="img/white.jpg"/></li>
    102         <li><img _src="img/3.jpg" src="img/white.jpg"/></li>
    103         <li><img _src="img/4.jpg" src="img/white.jpg"/></li>
    104         <li><img _src="img/5.jpg" src="img/white.jpg"/></li>
    105         <li><img _src="img/6.jpg" src="img/white.jpg"/></li>
    106         <li><img _src="img/7.jpg" src="img/white.jpg"/></li>
    107         <li><img _src="img/1.jpg" src="img/white.jpg"/></li>
    108         <li><img _src="img/2.jpg" src="img/white.jpg"/></li>
    109         <li><img _src="img/3.jpg" src="img/white.jpg"/></li>
    110         <li><img _src="img/4.jpg" src="img/white.jpg"/></li>
    111         <li><img _src="img/5.jpg" src="img/white.jpg"/></li>
    112         <li><img _src="img/6.jpg" src="img/white.jpg"/></li>
    113         <li><img _src="img/7.jpg" src="img/white.jpg"/></li>
    114         <li><img _src="img/1.jpg" src="img/white.jpg"/></li>
    115         <li><img _src="img/2.jpg" src="img/white.jpg"/></li>
    116         <li><img _src="img/3.jpg" src="img/white.jpg"/></li>
    117         <li><img _src="img/4.jpg" src="img/white.jpg"/></li>
    118         <li><img _src="img/5.jpg" src="img/white.jpg"/></li>
    119         <li><img _src="img/6.jpg" src="img/white.jpg"/></li>
    120         <li><img _src="img/7.jpg" src="img/white.jpg"/></li>
    121         <li><img _src="img/1.jpg" src="img/white.jpg"/></li>
    122         <li><img _src="img/2.jpg" src="img/white.jpg"/></li>
    123         <li><img _src="img/3.jpg" src="img/white.jpg"/></li>
    124         <li><img _src="img/4.jpg" src="img/white.jpg"/></li>
    125         <li><img _src="img/5.jpg" src="img/white.jpg"/></li>
    126         <li><img _src="img/6.jpg" src="img/white.jpg"/></li>
    127         <li><img _src="img/7.jpg" src="img/white.jpg"/></li>
    128         <li><img _src="img/1.jpg" src="img/white.jpg"/></li>
    129         <li><img _src="img/2.jpg" src="img/white.jpg"/></li>
    130         <li><img _src="img/3.jpg" src="img/white.jpg"/></li>
    131         <li><img _src="img/4.jpg" src="img/white.jpg"/></li>
    132         <li><img _src="img/6.jpg" src="img/white.jpg"/></li>
    133         <li><img _src="img/7.jpg" src="img/white.jpg"/></li>
    134         <li><img _src="img/1.jpg" src="img/white.jpg"/></li>
    135         <li><img _src="img/2.jpg" src="img/white.jpg"/></li>
    136         <li><img _src="img/3.jpg" src="img/white.jpg"/></li>
    137         <li><img _src="img/4.jpg" src="img/white.jpg"/></li>
    138         <li><img _src="img/5.jpg" src="img/white.jpg"/></li>
    139         <li><img _src="img/6.jpg" src="img/white.jpg"/></li>
    140         <li><img _src="img/7.jpg" src="img/white.jpg"/></li>
    141         <li><img _src="img/1.jpg" src="img/white.jpg"/></li>
    142         <li><img _src="img/2.jpg" src="img/white.jpg"/></li>
    143         <li><img _src="img/3.jpg" src="img/white.jpg"/></li>
    144         <li><img _src="img/4.jpg" src="img/white.jpg"/></li>
    145         <li><img _src="img/5.jpg" src="img/white.jpg"/></li>
    146         <li><img _src="img/6.jpg" src="img/white.jpg"/></li>
    147         <li><img _src="img/7.jpg" src="img/white.jpg"/></li>
    148     </ul>
    149 </body>
    150 </html>
    View Code
  • 相关阅读:
    CSS 定位position
    new Date(time).getTime()在ios返回NaN
    babel.js 文件 browser.min.js
    export 和 export default 的区别
    第一个webpack例子demo1
    Kafka源码解析与实战
    Redis实战
    RabbitMQ实战
    Spring源码理解
    Java并发编程实践
  • 原文地址:https://www.cnblogs.com/westwindhorse/p/5953483.html
Copyright © 2011-2022 走看看