zoukankan      html  css  js  c++  java
  • JavaScript懒加载

    方法一

    通过浏览器提供的InterSectionObserver构造函数,来观察目标与视口是否有交叉,来决定是否让img有src。
      使用方法:
        1、new 一下并传入一个回调 (当滚动会触发这个回调并会传入观察目标的信息,例如是否交叉、目标源)
        2、设置观察目标

          // entrys 是一个数组 关于每张图片的信息 可以获取到是否交叉等信息
          let callback = entrys => {
            entrys.forEach((entry)=>{
              // 是否交叉 交叉则设置src属性
              if(entry.isIntersecting) {
                const image = entry.target;
                const data_src = image.getAttribute('data-src');
                image.setAttribute('src', data_src);
              }
            })
          }
          // 创建一个观察对象 并传入一个回调函数 当滚动屏幕时 触发callback
          let observer = new IntersectionObserver( callback );
          for(let img of imgs) {
            // 设置观察对象
            observer.observe(img);
          }

    方法二

      监听滚动条scroll
      当滚动页面时我们利用getBoundingClientRect().top 来获取目标对象离视口上方的距离
      然后我们可以根据这个距离来判断我们的元素是否在视口区内
      如果元素离视口上的距离小于视口高,说明在视口区内,则给予img的src属性

     window.addEventListener('scroll', (e)=> {
            imgs.forEach(img => {
              if(img.getBoundingClientRect().top < window.innerHeight) {
                const data_src = img.getAttribute('data-src');
                img.setAttribute('src', data_src);
              }
            })
          })

     

  • 相关阅读:
    Altium Designer的PCB定位槽制作
    J-LINK V8固件烧录指导
    简单实用的双向电平转换电路(3.3v-5v)
    Altium Designer 文档信息设置以及模板制作
    第十周作业
    第九周作业
    第8周作业作业
    第七周作业
    linux作业
    马哥教育第一阶段考试(月考)
  • 原文地址:https://www.cnblogs.com/bingquan1/p/15758774.html
Copyright © 2011-2022 走看看