图片懒加载

一、定义

图片懒加载是对于一个很长的页面,优先加载可视区域的内容,其他部分等进入可视区域时再加载。相对于传统的图片加载方式,懒加载可以减少初始页面的加载时间,提高网站的响应速度。尤其对于移动设备和网络条件较差的用户,懒加载可以显著地提高用户的体验。

二、原理

传统的图片加载方式是在网页的 HTML 代码中使用 <img> 标签引用图片,当浏览器解析到这个标签时,就会开始下载图片。而图片懒加载则是将图片的 URL 存储在另一个属性(例如 data-src)中,而不是直接使用 <img> 标签。当用户滚动页面时,JavaScript 会检测图片是否在可视区域内,如果在,则将 URL 赋值给 <img> 标签的 src 属性,浏览器就会开始下载图片。

三、实现方法

使用第三方库

目前市场上有很多成熟的图片懒加载库,例如:jQuery Lazy、Unveil.js、Lozad.js 等。这些库都提供了简单易用的 API,只需要引入库并按照文档说明进行调用即可实现懒加载。

使用 IntersectionObserver API

IntersectionObserver API 是现代浏览器提供的一种监听元素是否可见的方法。使用这个 API 可以很方便地实现图片懒加载,只需要监听图片元素是否进入了可见区域即可。这种方法的好处是可以减少 JavaScript 的运行时间和内存占用。

<script>
        var imgs = document.getElementsByTagName('img')
        let io = new IntersectionObserver((entires) =>{
            entires.forEach(item => {
                let oImg = item.target
                if (item.intersectionRatio > 0 && item.intersectionRatio <= 1) {
                    oImg.setAttribute('src', oImg.getAttribute('data-url'))
                } 
            })
        })
        Array.from(imgs).forEach(element => {
            io.observe(element) 
        });
    </script>

自己编写 JavaScript

1.设置img标签

<img src="" data-src="./01.jpg" alt="">

2.js代码

<script>
        window.onload = function () {
            var imgs = document.getElementsByTagName("img")
            change(imgs)
            window.addEventListener("scroll", function () {
                change(imgs)
            })
        }
        function change(imgs) {
            for (var i = 0; i < imgs.length; i++) {
                var imgoffTop = imgs[i].offsetTop
                var viewTop = window.innerHeight
                var gun = document.documentElement.scrollTop
                if (imgoffTop - gun +200<= viewTop) {
                    imgs[i].src = imgs[i].dataset.src
                }
            }
        }
    </script>

四、结论

全部加载的话会影响用户体验,图片懒加载可以提高网站的加载速度和用户体验。但同时也需要注意一些常见问题和解决方案,保证图片的加载效果和用户体验。

懒加载优点:页面加载速度快,减轻服务器压力,节约流量,用户体验好。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值