lazyload实现原理(图片延迟加载)

本文介绍了一种名为懒加载的技术,该技术通过定时器检测图片是否进入浏览器视口区域来延迟图片加载,以此提高网页加载速度。文章提供了使用原生JavaScript和jQuery实现懒加载的具体代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

核心原理是:

  1. 设置一个定时器,计算每张图片是否会随着滚动条的滚动,而出现在视口(也就是浏览器中的 展现网站的空白部分 )中;

  2. 为标签设置一个暂存图片URL的自定义属性(例如loadpic),当图片出现在视口时,再将loadpic的值赋给图片的src属性;

原生JavaScript的实现方法

<script>
  var imgs = document.getElementsByTagName('img');
  // 获取视口高度与滚动条的偏移量
  function lazyload(){
    var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
    var viewportSize = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
    for(var i=0; i<imgs.length; i++) {
      var x =scrollTop+viewportSize-imgs[i].offsetTop;
      if(x>0){
        imgs[i].src = imgs[i].getAttribute('loadpic');   
      }
    }
  }
  setInterval(lazyload,1000);
</script>

jQuery的实现方法

/**
* 图片的src实现原理
*/
$(document).ready(function(){
  // 获取页面视口高度
  var viewportHeight = $(window).height();
  var lazyload = function() {
    // 获取窗口滚动条距离
    var scrollTop = $(window).scrollTop();
    $('img').each(function(){
    // 判断 视口高度+滚动条距离 与 图片元素距离文档原点的高度         
    var x = scrollTop + viewportHeight - $(this).position().top;
    // 如果大于0 即该元素能被浏览者看到,则将暂存于自定义属性loadpic的值赋值给真正的src           
    if (x > 0)
    {
      $(this).attr('src',$(this).attr('loadpic')); 
    }
  })
  }
  // 创建定时器 “实时”计算每个元素的src是否应该被赋值
  setInterval(lazyload,100);
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值