懒加载的一个小原理

  <!DOCTYPE html>
  <html>
  <head>
  <meta charset="UTF-8">
  <title></title>
  <style>
  div{margin-top: 300px; width: 470px; height: 150px; border:1px solid #000;}
  </style>
  </head>
  <body>
  <div><img _src="img2/1.jpg" /></div>
  <div><img _src="img2/2.jpg" /></div>
  <div><img _src="img2/3.jpg" /></div>
  <div><img _src="img2/4.jpg" /></div>
  <div><img _src="img2/5.jpg" /></div>
   
  <script>
  window.onload = function(){
  //懒加载(性能优化):用于图片比较多的列表页面,一般用于购物网站会多些,
  //解决的问题:当图片过多时,页面打开的速度过慢
  //1.定义变量
  var aImg = document.getElementsByTagName('img');
  //第一张图片默认是显示状态
  aImg[0].setAttribute('src',aImg[0].getAttribute('_src'));
   
  //默认的加载状态
  for(var i =0;i<aImg.length;i++){
  aImg[i].aaa= true;//图片默认是未加载的状态
  }
   
  //绑定滚动事件
   
  window.onscroll = function(){
  //循环图片
  for(var i=0;i<aImg.length;i++){
  // console.log('图片的下标:'+i);
  // console.log('图片和顶部的距离:'+aImg[i].offsetTop);
  // console.log('页面的可视区高度:'+viewH());
  // console.log('滚动的距离:'+ getScrollY());
  // console.log('-----------------------------------');
  //判断图片什么时候加载
  if(aImg[i].offsetTop <= viewH()+ getScrollY() && aImg[i].aaa){//图片加载过一次后,if语句中的内容就不再执行了
  console.log('***'+i+'***');
  var srcStr = aImg[i].getAttribute('_src');
  //设置图片的src属性
  aImg[i].setAttribute('src',srcStr);
  aImg[i].aaa = false;
  }
  }
   
  }
   
  //设置 滚动高度的兼容性写法, document.documentElement.scrollTop ie浏览器 document.body.scrollTop 火狐或chrome
  function setScrollY(num){
  document.documentElement.scrollTop = document.body.scrollTop = num;
  }
   
  //获取滚动高度
  function getScrollY(){
  return window.pageYOffset || document.documentElement.scrollTop;
  }
   
  //获取页面高度
  function viewH(){
  return document.documentElement.clientHeight;
  }
   
   
  }
   
  </script>
  </body>
  </html>

猜你喜欢

转载自blog.csdn.net/qq_39634880/article/details/80357808