iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >微信小程序图片懒加载如何实现
  • 768
分享到

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

2023-06-26 08:06:38 768人浏览 泡泡鱼
摘要

这篇文章主要介绍“微信小程序图片懒加载如何实现”,在日常操作中,相信很多人在微信小程序图片懒加载如何实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”微信小程序图片懒加载如何实现”的疑惑有所帮助!接下来,请跟

这篇文章主要介绍“微信小程序图片懒加载如何实现”,在日常操作中,相信很多人在微信小程序图片懒加载如何实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”微信小程序图片懒加载如何实现”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

定义

懒加载,前端人都知道的一种性能优化方式,简单的来说,只有当图片出现在浏览器的可视区域内时,才设置图片正真的路径,让图片显示出来。这就是图片懒加载。

实现原理

监听页面的scroll事件,判读元素距离页面的top值是否是小于等于页面的可视高度

判断逻辑代码如下

element.getBoundinGClientRect().top <= document.documentElement.clientHeight ? 显示 : 默认

我们知道小程序页面的脚本逻辑是在jsCore中运行,JsCore是一个没有窗口对象的环境,所以不能在脚本中使用window,也无法在脚本中操作组件。

我们使用两种方式来实现懒加载,准备好没有,一起来快乐的撸码吧。

WXML节点信息

小程序支持调用createSelectQuery创建一个SelectorQuery实例,并使用select方法来选择节点,并通过boundingClientRect来获取节点信息。

wx.createSelectorQuery().select('.item').boundingClientRect((ret)=>{    console.log(ret)}).exec()

悄悄告诉你,小程序里面有个onPageScroll函数,是用来监听页面的滚动的。
还有个getSystemInfo函数,可以获取获取系统信息,里面包含屏幕的高度。

接下来,思路就透彻了吧。还是上面的逻辑, 扒拉扒拉直接写代码就行了,这里只写下主要的逻辑,完整代码请戳文末GitHub

showImg(){    let group = this.data.group    let height = this.data.height  // 页面的可视高度        wx.createSelectorQuery().selectAll('.item').boundingClientRect((ret) => {     ret.forEach((item, index) => {       if (item.top <= height) { 判断是否在显示范围内         group[index].show = true // 根据下标改变状态       }     })     this.setData({       group     })    }).exec()}onPageScroll(){ // 滚动事件    this.showImg()}

至此,我们完成了一个小程序版的图片懒加载,只是思维转变了下,其实并没有改变实现方式。我们来学些新的东西吧。

节点布局相交状态

节点相交状态是啥?它是一个新的api,叫做IntersectionObserver, 本文只讲解简单的使用

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

里面设计的概念主要有五个,分别为

  • 参照节点:以某参照节点的布局区域作为参照区域,参照节点可以有多个,多个话参照区域取它们的布局区域的交集

  • 目标节点:监听的目标,只能是一个节点

  • 相交区域:目标节点与参照节点的相交区域

  • 相交比例:目标节点与参照节点的相交比例

  • 阈值:可以有多个,默认为[0], 可以理解为交叉比例,例如[0.2, 0.5]

关于它的API有五个,依次如下

createIntersectionObserver([this], [options]),见名知意,创建一个IntersectionObserver实例

intersectionObserver.relativeTo(selector, [margins]), 指定节点作为参照区域,margins参数可以放大缩小参照区域,可以包含top、left、bottom、right四项

intersectionObserver.relativeToViewport([margin]),指定页面显示区域为参照区域

intersectionObserver.observer(targetSelector, callback),参数为指定监听的节点和一个回调函数,目标元素的相交状态发生变化时就会触发此函数,callback函数包含一个result,下面再讲

intersectionObserver.disconnect() 停止监听,回调函数不会再触发

我们主要使用intersectionRatio进行判断,当它大于0时说明是相交的也就是可见的。

先来波测试题,请说出下面的函数做了什么,并且log函数会执行几次

1、wx.createIntersectionObserver().relativeToViewport().observer('.box', (result) => {     console.log('监听box组件触发的函数')    }) 2、wx.createIntersectionObserver().relativeTo('.box').observer('.item', (result) => {     console.log('监听item组件触发的函数') })3、wx.createIntersectionObserver().relativeToViewport().observer('.box', (result) => {    if(result.intersectionRatio > 0){        console.log('.box组件是可见的')     }})

duang,揭晓答案。

第一个以当前页面的视窗监听了.box组件,log会触发两次,一次是进入页面一次是离开页面

第二个以.box节点的布局区域监听了.item组件,log会触发两次,一次是进入页面一次是离开页面

第三个以当前页面的视窗监听了.box组件,log只会在节点可见的时候触发

好了,题也做了,API你也掌握了,相信你已经可以使用IntersectionObserver来实现图片懒加载了吧,主要逻辑如下

let group = this.data.group // 获取图片数组数据for (let i in this.data.group){   wx.createIntersectionObserver().relativeToViewport().observe('.item-'+ i, (ret) => {       if (ret.intersectionRatio > 0){         group[i].show = true        }       this.setData({         group       })     })}

至此,我们使用两种方式实现了小程序版本的图片懒加载,可以发现,使用IntersectionObserver来实现不要太酸爽。

到此,关于“微信小程序图片懒加载如何实现”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: 微信小程序图片懒加载如何实现

本文链接: https://www.lsjlt.com/news/308180.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 微信小程序图片懒加载如何实现
    这篇文章主要介绍“微信小程序图片懒加载如何实现”,在日常操作中,相信很多人在微信小程序图片懒加载如何实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”微信小程序图片懒加载如何实现”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-26
  • 实现微信小程序中的图片懒加载效果
    实现微信小程序中的图片懒加载效果,需要具体代码示例随着移动互联网的快速发展,微信小程序已经成为了人们生活中不可或缺的一部分。而在开发微信小程序时,图片懒加载是一个常见的需求,可以有效地提升小程序的加载速度和用户体验。本文将介绍如何在微信小程...
    99+
    2023-11-21
    微信小程序 实现 图片懒加载
  • 小程序如何实现图片懒加载方式
    这篇文章主要介绍了小程序如何实现图片懒加载方式,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。意义懒加载或者可以说是延迟加载,针对非首屏或者用...
    99+
    2024-04-02
  • 微信小程序如何实现图片预加载组件
    这篇文章主要为大家展示了“微信小程序如何实现图片预加载组件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信小程序如何实现图片预加载组件”这篇文章吧。网页中的图...
    99+
    2024-04-02
  • JavaScript如何实现图片懒加载
    这篇文章主要介绍了JavaScript如何实现图片懒加载,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。图片懒加载imagegetBoundClientRect 的实现方式,监...
    99+
    2023-06-27
  • 小程序如何实现图片预加载
    这篇文章主要为大家展示了“小程序如何实现图片预加载”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“小程序如何实现图片预加载”这篇文章吧。    网页有页面预加载,小程序也有图片预加载,小程序图片加...
    99+
    2023-06-26
  • 小程序列表懒加载如何实现
    本文小编为大家详细介绍“小程序列表懒加载如何实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“小程序列表懒加载如何实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。小程序上的列表懒加载长列表我们经常接触到,长列...
    99+
    2023-06-29
  • 微信小程序如何实现上传图片
    这篇文章主要介绍微信小程序如何实现上传图片,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 一 小程序端user.wxml<view class='u...
    99+
    2024-04-02
  • 如何实现前端图片懒加载
    这篇文章主要介绍了如何实现前端图片懒加载,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。定义图片懒加载又称图片延时加载、惰性加载,即在用户需要...
    99+
    2024-04-02
  • 微信小程序如何实现裁剪图片大小
    这篇文章主要介绍“微信小程序如何实现裁剪图片大小”,在日常操作中,相信很多人在微信小程序如何实现裁剪图片大小问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”微信小程序如何实现裁剪图片大小”的疑惑有所帮助!接下来...
    99+
    2023-06-30
  • 微信小程序加载本地图片的方法
    微信小程序加载本地图片的方法:1、在微信开发工具中打开项目。2、新建一个文件夹并将图片放到这个目录下。3、用style样式的方式或image标签的相对路径去访问图片,实现加载本地图片。具体操作步骤:首先,打开微信开发工具,再打开项目。如下图...
    99+
    2024-04-02
  • 微信小程序如何实现图片自适应
    这篇文章主要介绍了微信小程序如何实现图片自适应,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。首先我们来看看图片组件给的一些说明:属性名类型默...
    99+
    2024-04-02
  • 微信小程序带图片弹窗如何实现
    本篇内容主要讲解“微信小程序带图片弹窗如何实现 ”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“微信小程序带图片弹窗如何实现 ”吧!下面我来介绍一种使用官方组件就能实现的方法:首先找到官方文档:显...
    99+
    2023-06-26
  • 微信小程序实现上传图片
    本文实例为大家分享了微信小程序实现上传图片的具体代码,供大家参考,具体内容如下 //wxml <button class='button' bingtap="uploadSom...
    99+
    2024-04-02
  • 微信小程序中如何实现上拉加载
    这篇文章主要为大家展示了“微信小程序中如何实现上拉加载”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信小程序中如何实现上拉加载”这篇文章吧。上拉加载(分页加载...
    99+
    2024-04-02
  • 微信小程序实现图片上传
    微信小程序实现图片上传 最近做了个小程序,涉及到了图片上传的功能,今天给大家详细介绍下如何实现小程序图片上传,话不多说先上代码 首先是静态布局和样式部分 .wxml代码部分 ...
    99+
    2023-09-07
    微信小程序 小程序 微信
  • 微信小程序实现触底加载
    现在来看小程序还没有使用pc端的那种分页格式,现在微信小程序上分页一般使用触底加载来实现分页的,下面就来分享一个触底加载的实现方式。 1.首先要从后端也就是服务器上获取分页的数据,如...
    99+
    2024-04-02
  • js前端如何实现图片懒加载
    这篇文章主要介绍js前端如何实现图片懒加载,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!思路:将页面里所有img属性src属性用data-xx代替,当页面滚动直至此图片出现在可视区域...
    99+
    2024-04-02
  • 微信小程序页面中如何添加图片
    微信小程序页面中添加图片的方法:在项目中找到images包,把图片复制到images里面。再打开对应的wxml页面,把需要添加图片通过<image>标签插入即可,例如:<image src='/image...
    99+
    2024-04-02
  • 微信小程序实现裁剪图片大小
    本文实例为大家分享了微信小程序实现裁剪图片大小的具体代码,供大家参考,具体内容如下 效果图 .wxml <button bindtap="uploadtap">上传图片...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作