图片懒加载 ?

91 阅读1分钟
// html
<div v-for="(item,index) in Array">
  <img src="./imgs/timg.gif" data-src="./img2/time9.jpg" alt="" >
</div>
// js

    let num=document.getElementsByTagName("img").length;
       let img=document.getElementsByTagName("img");

       let n=0;
       lazyload();
       
       // 当然了,可以专门设置监听滚轮事件 ,通过节流的,优化一下,减少性能损耗
       window.onscroll=lazyload;

       function lazyload(){
           let seeHeight=document.documentElement.clientHeight;
           let scrollTop=document.documentElement.scrollTop;
           for(let i=n;i<num;i++){
               if(img[i].offsetTop<seeHeight+scrollTop){
                   
                   if(img[i].getAttribute("src")==="./img2/timg.gif"){   // 容错处理
                       img[i].src=img[i].getAttribute("data-src")
                   }
                   n=i+1;  // 更新已加载图片的标记,防止重复加载
               }
           }
       }

额外补充

   // js中制作滚动代码的常用属性
   
   页面可见区域: document.body.clientWidth;
   页面可见区域高度:document.body.clientHeight;
   页面正文全文宽:document.body.scrollWidth;
   页面正文全文高:document.body.scrollHeight;
 
   页面被卷去的高:document.body.scrollTop;
   网页被卷去左:document.body.scrollLeft;
 
 //元素属性
 
    offsetTop:因为从元素往上找,第一个position属性为非static的(relative,absolute,fixed其一)的祖先元素,更多时候是body