美文网首页
图片懒加载简单的实现方式

图片懒加载简单的实现方式

作者: 孙二柯 | 来源:发表于2021-06-24 23:27 被阅读0次
  1. 通过监听滚动事件,判断图片相对于视口的位置是否小于浏览器视口的高度。
const images = document.querySelectorAll('img')
  window.addEventListener('scroll',e=>{
    images.forEach(image =>{
      const imageTop = image.getBoundingClientRect().top
      if(imageTop < window.innerHeight){
         // 获取自定义属性的图片地址 然后给图片赋值
        const data_src = image.getAttribute('data-src')
        image.setAttribute('src',data_src)
      }
    })
  })

缺点是执行的次数很多,而且图片已经加载过了还是会判断

  1. 通过IntersectionObserver(https://developer.mozilla.org/zh-CN/docs/Web/API/IntersectionObserver)
const images = document.querySelectorAll('img')
  const callback = entries => {
    entries.forEach(entry => {
      console.log(entry)
      if (entry.isIntersecting) {
        const image = entry.target
        const data_src = image.getAttribute('data-src')
        image.setAttribute('src', data_src)
        console.log('触发了事件')
        observe.unobserve(image)
      }

    })
  }
  const observe = new IntersectionObserver(callback)
  images.forEach(image => {
    observe.observe(image)
  })

优点是观察过一次后可以解绑,执行次数大大减少。缺点是ie不兼容

相关文章

  • 图片懒加载

    前端实现图片懒加载(lazyload)的两种方式 原生JS实现最简单的图片懒加载 30行Javascript代码实...

  • 图片懒加载简单的实现方式

    通过监听滚动事件,判断图片相对于视口的位置是否小于浏览器视口的高度。 缺点是执行的次数很多,而且图片已经加载过了还...

  • canvas图片懒加载

    整理一下从别处学来的一种图片懒加载的方式。 什么是图片懒加载,简单来说就是在web应用中,图片不会一次性全部加载,...

  • 图片懒加载的原理

    懒加载思路及实现 实现懒加载有四个步骤,如下:1.加载loading图片2.判断哪些图片要加载【重点】3.隐形加载...

  • 懒加载和瀑布流

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

  • 图片的懒加载和预加载

    懒加载:又称延迟加载,需要等到某个情况下才加载,相对可以缓解服务器压力。 实现原理:以懒加载图片为例,当加载图片较...

  • jquery 回到顶部、懒加载、无限加载

    懒加载的实现思路,避免所有图片在网页加载时全部加载而影响网页性能,通过按需加载来实现 【1】图片加载前,目标位置图...

  • 懒加载和预加载

    懒加载 js懒加载 意义 懒加载(LazyLoad)是前端优化的一种有效方式,能极大的提升用户体验,图片加载是其重...

  • 实现图片懒加载

    项目中遇到一个公示信息列表,其中有图片预览, 因为窗口小、列表长、图片多,加载很慢,于是想把图片做成懒加载模式。 ...

  • 图片懒加载实现

    先将img标签的src链接设为同一张图片(比如空白图片),然后给img标签设置自定义属性(比如 data-src)...

网友评论

      本文标题:图片懒加载简单的实现方式

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