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

这篇具有很好参考价值的文章主要介绍了微信小程序如何利用createIntersectionObserver实现图片懒加载。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

  • 节点布局相交状态 API中有一个 wx.createIntersectionObserver(Object this, Objectoptions)
    Api (支持版本 >= 1.9.3),它的作用是创建并返回一个 IntersectionObserver
    对象实例(交叉区域),这个对象实例在小程序的解说如下:

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

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

 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
          })
        })
      }
    }
  })
<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>
.loadImg{
    width:100vw;
    height:46.3vw;
    transition: all .2s ease-in-out;
    opacity: 0;
  }
  .loadImg.active{
    opacity: 1
  }

到这里也就结束了,希望对您有所帮助。文章来源地址https://www.toymoban.com/news/detail-767546.html

到了这里,关于微信小程序如何利用createIntersectionObserver实现图片懒加载的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【微信小程序5】利用canvas实现纯色背景抠图功能

            最近,在小程序开发过程中,遇到了需要设置背景透明效果功能的需求。如果借助百度开放接口实现抠图功能是非常方便的,但是一个最大的缺点就是需要money支持。不得已,参考网上各家代码,实现了借助canvas来实现纯色背景抠图功能。只是非常简单的一个应用

    2024年02月01日
    浏览(44)
  • 前端小白是如何利用chatgt用一周时间从做一款微信小程序的

    随着 chatgpt 的大火,真的是在工作上给各行各业的人带来了极大的便利,本人是一个 java 程序员,其实我自己是一直想开发一款属于自己的小程序的,但是迫于对前端知识的贫瘠,考虑到要学的前端开发知识有很多,比如 js , ts ,前端框架 vue , react …,最难受的是 css 样式,最

    2024年02月02日
    浏览(55)
  • 利用微信小程序新动画API之this.animate()实现3D旋转

    从微信小程序基础库 2.9.0 开始支持一种更友好的动画创建方式,用于代替旧的 wx.createAnimation 。它具有更好的性能和更可控的接口。 在页面或自定义组件中,当需要进行关键帧动画时,可以使用 this.animate 接口(官方API文档链接地址:https://developers.weixin.qq.com/miniprogram/dev/fr

    2023年04月08日
    浏览(59)
  • PHP-利用miniprogram-ci工具实现一键上传微信小程序代码

    利用miniprogram-ci工具在后台实现一键上传微信小程序代码,避免了微信开发者工具的繁琐。 我用的是宝塔,可以直接在宝塔上安装Node.js版本管理器 安装在指定文件夹里,这个可以根据项目情况选择。记住路径,后面需要用到。 我用的是ThinkPHP6,安装在了extend扩展文件夹里面

    2024年04月23日
    浏览(40)
  • 微信小程序 如何实现列表

    微信小程序中实现列表可以通过使用「scroll-view」组件或「list」组件来实现。 使用「scroll-view」组件:可以使用 wx:for 指令来循环渲染列表中的数据,并为每个元素设置相应的样式。 使用「list」组件:该组件已经内置了列表的常用功能,包括列表渲染、上拉加载、下拉刷新等

    2024年02月11日
    浏览(41)
  • 微信小程序,如何实现登录

    业务流程: 1:首先需要一个按钮触发事件 2:调用微信小程序的登录接口wx.login,拿到code 3:调用微信小程序的获取用户信息的接口wx.getUserProfile,拿到用户的个人信息(包括用的昵称以及头像) 4:拿到的个人信息调用后台的接口,八个人信息传给后台,登陆成功并把相关喜喜

    2024年02月03日
    浏览(37)
  • 微信小程序 如何实现登录

    业务流程: 1:首先需要一个按钮触发事件 2:调用微信小程序的登录接口 wx.login ,拿到code 3:调用微信小程序的获取用户信息的接口 wx.getUserProfile ,拿到用户的个人信息 4: 拿到的个人信息调用后台的接口,把个人信息传给后台,登录成功并把相关信息存储在本地的缓存中

    2024年02月09日
    浏览(78)
  • 微信小程序中如何实现微信支付

    微信支付是微信公众平台提供的一种在线支付服务,可以为用户提供快速、方便、安全的支付体验。而在微信小程序中实现微信支付,则可以为应用程序提供更多的功能和服务,提高用户体验和商业价值。因此,在本文中,我们将介绍如何在微信小程序中实现微信支付。 在使

    2024年02月05日
    浏览(48)
  • 微信小程序如何实现地图多点标注

    1.首先使用微信小程序自带map标签,并且设置好宽高让地图显示,用longitude和latitude表示中心点。   定义一个 markers 数组,其中每个元素表示一个标记点,包含了标记点的经纬度、标题、图标路径以及图标的宽度和高度等信息。 通过将 markers 数组绑定到地图组件的 markers 属性

    2024年02月04日
    浏览(51)
  • 微信小程序如何实现页面传参?

    只要你的小程序超过一个页面那么可能会需要涉及到页面参数的传递,下面我总结了 4 种页面方法。 通过在url后面拼接参数,参数与路径之间使用 ? 分隔,参数键与参数值用 = 相连,不同参数用 分隔;如 ‘path?key=valuekey2=value2’。 案例:A页面带参数跳转到B页面 A页面跳转代

    2024年02月15日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包