美文网首页
图片懒加载

图片懒加载

作者: 菜菜的小阿允 | 来源:发表于2021-04-16 11:24 被阅读0次
一、概念

“懒加载”就是延迟加载,比如我们加载一个页面,这个页面长到我们的浏览器可视区域装不下,那么懒加载就是优先加载可视区域的内容,其他部分等进入了可视区域再加载。懒加载是一种网页性能优化的方式,它能极大的提升用户体验。比如图片,现在一张图片经常会超过几兆,如果每次进入页面就请求所有的图片资源,那么可能等图片加载出来用户也早就走了。所以,我们需要懒加载,进入页面的时候,只请求可视区域的图片资源。

二、原理

图片的来源主要是src属性,浏览器是否发起请求是根据是否有src属性决定的。我们考虑在没进入可视区域的时候,我们先不给这个图片标签赋src属性,这样浏览器就不会发送请求了。

三、实现
  • window.innerHeight:浏览器窗口的视口(viewport)高度(以像素为单位),如果有水平滚动条,也包括滚动条高度
  • document.documentElement.clientHeight:获取屏幕可视区域的高度
  • getBoundingClientRect():获取元素的大小及位置,它有四个属性,top -上边距离视窗上边的距离,bottom -下边距离视窗上边的距离,left 左边距离视窗左边的距离,right -右边距离视窗左边的距离,如图:


  • 代码实现
// 图片全部加载完成后移除事件监听;
// 加载完的图片,从 imgList 移除;
let imgList = [...document.querySelectorAll('img')]
let length = imgList.length
// 把图片查询分配到一个数组
const imgLazyLoad = function() {
    let count = 0
   return (function() {
        let deleteIndexList = []
        imgList.forEach((img, index) => {
            let rect = img.getBoundingClientRect()
            if (rect.top < window.innerHeight) {
                img.src = img.dataset.src
                deleteIndexList.push(index)
                count++
                if (count === length) {
                    document.removeEventListener('scroll', imgLazyLoad)
                }
            }
        })
        imgList = imgList.filter((img, index) => !deleteIndexList.includes(index))
        // 删除imgList里面加载完的图片
   })()
}

// 这里最好加上防抖处理
document.addEventListener('scroll', imgLazyLoad)

//document.removeEventListener('scroll', imgLazyLoad) 就是图片全部加载完成后移除事件监听,通过移除监听事件来实现防抖处理

相关文章

  • 项目优化

    图片懒加载,数据懒加载, 路由懒加载 1.图片懒加载原理 1.1 开始时 不设置src属性 1.2 图片在可视区域...

  • JS

    JS 懒加载,预加载 概念:懒加载也叫延迟加载:JS图片延迟加载,延迟加载图片或符合某些条件时才加载某些图片。预加...

  • 图片懒加载

    懒加载与预加载的基本概念。 懒加载也叫延迟加载:JS图片延迟加载 延迟加载图片或符合某些条件时才加载某些图片。 预...

  • 图片懒加载

    图片懒加载 图片懒加载在一些图片密集型的网站中运用比较多,通过图片懒加载可以让一些不可视的图片不去加载,避免一次性...

  • js 实现图片懒加载

    一、懒加载 懒加载也叫延迟加载,Js中图片的延迟加载,延迟图片需要符合某些条件时才加载;对于图片过多的页面,为了加...

  • 图片懒加载和预加载

    图片懒加载的原理是什么? 首先明白为什么要懒加载: 懒加载即延迟,对于图片过多的页面,为了加快页面加载速度,我们需...

  • selenuim和phantonJs处理网页动态加载数据的爬取

    一.图片懒加载 什么是图片懒加载? 图片懒加载是一种网页优化技术。图片作为一种网络资源,在被请求时也与普通静态资源...

  • 懒加载和瀑布流

    一、简述图片懒加载的实现原理 图片懒加载 若一开始,页面上有许多的图片要加载,而如果同时加载这么多图片,会消耗性能...

  • jquery懒加载、回到顶部

    1.知识点部分: 懒加载图片的原理是什么? 图片懒加载也称为曝光加载,将页面上的图片分批加载,只有当图片出现在wi...

  • 懒加载和预加载

    1)概念: 懒加载也叫延迟加载:JS图片延迟加载,延迟加载图片或符合某些条件时才加载某些图片。预加载:提前加载图片...

网友评论

      本文标题:图片懒加载

      本文链接:https://www.haomeiwen.com/subject/eladlltx.html