微信小程序如何利用createIntersectionObserver实现图片懒加载

微信小程序如何利用createIntersectionObserver实现图片懒加载

  • 节点布局相交状态 API

    可用于监听两个或多个组件节点在布局位置上的相交状态。这一组API常常可以用于推断某些节点是否可以被用户看见、有多大比例可以被用户看见。

  • 节点布局相交状态 API中有一个 wx.createIntersectionObserver(Object this, Objectoptions)

    Api (支持版本 >= 1.9.3),它的作用是创建并返回一个 IntersectionObserver

    对象实例(交叉区域),这个对象实例在小程序的解说如下:

  • IntersectionObserver 对象,用于推断某些节点是否可以被用户看见、有多大比例可以被用户看见,它有:relativeTo、relativeToViewport、observe、disconnect等方法

  • 由此我们可以设置图片进入可见界面某一区域时的监听回调事件,以此实现图片的懒加载

javascript 复制代码
 Page({
    data: {
      group: [
        {
          src: "https://csdnimg.cn/feed/20180914/c67d9521db939fc8beb9a27b046ef1a3.jpg",
          show: false,
          def: "https://img.alicdn.com/tps/i3/T1QYOyXqRaXXaY1rfd-32-32.gif"
        },
       ...... // 更多图片信息
      ]
    },
    onLoad: function () {
      let group = this.data.group  // 获取原数据
      for (let i in group) {
        // 设置监听回调事件,当元素 .loadImg{{i}},进入页面20px内就触发回调事件,设置图片为真正的图片,通过show控制
        wx.createIntersectionObserver().relativeToViewport({ bottom: 20 }).observe('.loadImg' + i, (ret) => {
          if (ret.intersectionRatio > 0) {
            group[i].show = true
          }
          this.setData({ // 更新数据
            group
          })
        })
      }
    }
  })
javascript 复制代码
<block wx:for="{{group}}" wx:key="1">
    <view class="loadImg loadImg{{index}} {{item.show? 'active' : ''}}" >
      <!-- 通过条件判断确认图片的src -->
      <image wx:if='{{item.show}}' style='width:100%;height:100%;' src='{{item.src}}'></image>
      <image wx:else style='width:20%;height:20%;margin:0 auto;margin-top:50%;transform:translateY(-50%);' src='{{item.def}}' mode='aspectFit'></image>
    </view>
  </block>
javascript 复制代码
.loadImg{
    width:100vw;
    height:46.3vw;
    transition: all .2s ease-in-out;
    opacity: 0;
  }
  .loadImg.active{
    opacity: 1
  }

到这里也就结束了,希望对您有所帮助。

相关推荐
风等雨归期1 小时前
【python】【绘制小程序】动态爱心绘制
开发语言·python·小程序
李宥小哥2 小时前
微信小程序07-开发进阶
微信小程序·小程序·notepad++
艾小逗4 小时前
uniapp快速入门教程,内容来源于官方文档,仅仅记录快速入门需要了解到的知识点
小程序·uni-app·app·es6
程序员阿龙4 小时前
【2025】儿童疫苗接种预约小程序(源码+文档+解答)
小程序·毕业设计·小程序开发·预约小程序·疫苗管理小程序·出勤数据分析·智能考勤
818源码资源站4 小时前
表情包创作、取图小程序端(带流量主)
小程序
2401_8459375313 小时前
PHP一键约课高效健身智能健身管理系统小程序源码
微信·微信小程序·小程序·微信公众平台·微信开放平台
程序员入门进阶15 小时前
基于微信小程序的科创微应用平台设计与实现+ssm(lw+演示+源码+运行)
微信小程序·小程序
计算机源码社1 天前
分享一个基于微信小程序的居家养老服务小程序 养老服务预约安卓app uniapp(源码、调试、LW、开题、PPT)
android·微信小程序·uni-app·毕业设计项目·毕业设计源码·计算机课程设计·计算机毕业设计开题
DreamByte1 天前
Python Tkinter小程序
开发语言·python·小程序
说私域1 天前
开源 AI 智能名片小程序:开启内容营销新境界
人工智能·小程序