案例图片延时加载的方法

图片添加延时加载功能,可以使用以下步骤:

1. 将图片的`<img>`标签的`src`属性值改为一个占位图的URL,例如`<img src="占位图URL" data-src="https://www.meishuzi.com/logo/zb_users/upload/logo/msz92.jpg">`。这样可以确保页面加载时只加载占位图,而不是原始图片。

2. 在页面中添加JavaScript代码,用于检测图片是否进入可视区域。可以使用`Intersection Observer` API来实现这一功能。

   ```javascript

var images = document.querySelectorAll('img[data-src]');

   var options = {
     root: null,
     rootMargin: '0px',
     threshold: 0.1
   };

   var callback = function(entries, observer) {
     entries.forEach(function(entry) {
       if (entry.isIntersecting) {
         var image = entry.target;
         image.src = image.getAttribute('data-src');
         observer.unobserve(image);
       }
     });
   };

   var observer = new IntersectionObserver(callback, options);

   images.forEach(function(image) {
     observer.observe(image);
   });

   这段代码首先获取所有带有`data-src`属性的图片元素,然后创建一个`IntersectionObserver`实例,设置观察者的回调函数。在回调函数中,当图片进入可视区域时,将`data-src`属性的值赋给`src`属性,并停止观察该图片。

3. 将以上代码放置在页面的适当位置,例如在`<body>`标签的末尾或在`<head>`标签中的`<script>`标签内。

这样,当页面加载时,图片将首先显示占位图,只有当图片进入可视区域时,才会加载原始图片。这可以提高页面加载速度和性能。

完整的html代码:

html
<!DOCTYPE html>
<html>
<head>
  <title>延时加载图片</title>
  <style>
    .placeholder {
      width: 200px;
      height: 200px;
      background-color: #ccc;
    }
  </style>
</head>
<body>
  <h1>延时加载图片示例</h1>
  <img class="lazy" src="占位图URL" data-src="https://www.meishuzi.com/logo/zb_users/upload/logo/msz92.jpg" alt="图片">
  
  <script>
    document.addEventListener("DOMContentLoaded", function() {
      var lazyImages = [].slice.call(document.querySelectorAll("img.lazy"));

      if ("IntersectionObserver" in window) {
        var lazyImageObserver = new IntersectionObserver(function(entries, observer) {
          entries.forEach(function(entry) {
            if (entry.isIntersecting) {
              var lazyImage = entry.target;
              lazyImage.src = lazyImage.dataset.src;
              lazyImage.classList.remove("lazy");
              lazyImageObserver.unobserve(lazyImage);
            }
          });
        });

        lazyImages.forEach(function(lazyImage) {
          lazyImageObserver.observe(lazyImage);
        });
      } else {
        // 对于不支持Intersection Observer的浏览器,立即加载所有图片
        lazyImages.forEach(function(lazyImage) {
          lazyImage.src = lazyImage.dataset.src;
          lazyImage.classList.remove("lazy");
        });
      }
    });
  </script>
</body>
</html>

在上述代码中,你需要将`<img>`标签的`src`属性值改为占位图的URL,并将`data-src`属性值改为原始图片的URL。同时,你可以根据需要自定义占位图的样式。

此外,代码中使用了`Intersection Observer` API来实现延时加载功能。对于不支持该API的浏览器,代码会立即加载所有图片。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值