小程序中监听页面滚动的几种方法实例

 更新时间:2022年04月18日 10:58:48   作者:前端小蜗  
这段时间接了一个微信小程序项目,从此打开小程序的新世界大门,下面这篇文章主要给大家介绍了关于小程序中监听页面滚动的几种方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

在工作中我们经常遇到需要监听页面中元素位置,当元素超出显示区域或即将显示到页面上,我们就可以做一些动画或者操作。最常见的操作比如预加载,懒加载,TAB滚动跟随。

目录

  • Intersection Observer 在MDN上的介绍
  • 小程序中 IntersectionObserver 的使用

实现效果

在浏览器的情况下,我们可以使用 Intersection Observer

下面是Intersection Observer在MDN上的介绍

MDN链接

IntersectionObserver接口 (从属于Intersection Observer API) 提供了一种异步观察目标元素与其祖先元素或顶级文档视窗(viewport)交叉状态的方法。祖先元素与视窗(viewport)被称为根(root)。

当一个IntersectionObserver对象被创建时,其被配置为监听根中一段给定比例的可见区域。一旦IntersectionObserver被创建,则无法更改其配置,所以一个给定的观察者对象只能用来监听可见区域的特定变化值;然而,你可以在同一个观察者对象中配置监听多个目标元素。

简单来说,就是我们能不能看到想要观察的对象。

在网页中,我们很容易就可以用实现Intersection Observer,而在小程序中,我们需要再多掌握一点知识。

IntersectionObserver

小程序中IntersectionObserver的文档地址

IntersectionObserver 对象,用于推断某些节点是否可以被用户看见、有多大比例可以被用户看见。

relativeToViewport

指定页面显示区域作为参照区域之一

Page({
  onLoad: function(){
    wx.createIntersectionObserver().relativeToViewport({bottom: 100}).observe('.target-class', (res) => {
      res.intersectionRatio // 相交区域占目标节点的布局区域的比例
      res.intersectionRect // 相交区域
      res.intersectionRect.left // 相交区域的左边界坐标
      res.intersectionRect.top // 相交区域的上边界坐标
      res.intersectionRect.width // 相交区域的宽度
      res.intersectionRect.height // 相交区域的高度
    })
  }
})

接受参数 Object margins

用来扩展(或收缩)参照节点布局区域的边界

属性类型默认值必填说明
leftnumber 节点布局区域的左边界
rightnumber 节点布局区域的右边界
topnumber 节点布局区域的上边界
bottomnumber 节点布局区域的下边界

observe(string targetSelector, function callback)

参数

(targetSelector:string,callback:function)

Object res

属性类型说明
idstring节点 ID
datasetRecord.<string, any>节点自定义数据属性
intersectionRationumber相交比例
intersectionRectObject相交区域的边界
boundingClientRectObject目标边界
relativeRectObject参照区域的边界
timenumber相交检测时的时间戳

小程序中监听页面的其他方法

page-meta

页面属性配置节点,用于指定页面的一些属性、监听页面事件。只能是页面内的第一个节点。可以配合 navigation-bar 组件一同使用。

scroll-view

可滚动视图区域。使用竖向滚动时,需要给 scroll-view一个固定高度,通过 WXSS 设置 height。组件属性的长度单位默认为px。

总结

在小程序中,我们可以用 IntersectionObserver ,来监听页面的元素与页面交叉的距离,如此一来我们便可以在小程序中实现懒加载,预加载,动画等效果。

我们也可以用 page-meta 和 scroll-view 来实现滚动监听,具体需要结合实际场景。

到此这篇关于小程序中监听页面滚动的几种方法的文章就介绍到这了,更多相关小程序监听页面滚动内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 微信小程序学习笔记之跳转页面、传递参数获得数据操作图文详解

    微信小程序学习笔记之跳转页面、传递参数获得数据操作图文详解

    这篇文章主要介绍了微信小程序学习笔记之跳转页面、传递参数获得数据操作,结合实例形式分析了微信小程序基于navigator组件的页面跳转及数据传递相关操作技巧,并结合图文形式进行详细说明,需要的朋友可以参考下
    2019-03-03
  • 基于Javascript实现弹出页面效果

    基于Javascript实现弹出页面效果

    弹出层效果是一个很实用的功能,很多网站都采用了这种方式实现登录和注册,下面小编通过本文给大家分享具体实现代码,对js弹出页面效果相关知识感兴趣的朋友一起学习吧
    2016-01-01
  • 跟我学习javascript的隐式强制转换

    跟我学习javascript的隐式强制转换

    跟我学习javascript的隐式强制转换,感兴趣的小伙伴们可以学习一下
    2015-11-11
  • 微信小程序合法域名配置方法

    微信小程序合法域名配置方法

    这篇文章主要介绍了微信小程序合法域名配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • javascript获取四位数字或者字母的随机数

    javascript获取四位数字或者字母的随机数

    这篇文章主要介绍了javascript获取四位数字或者字母的随机数,需要的朋友可以参考下
    2015-01-01
  • JS动态添加Table的TR,TD实现方法

    JS动态添加Table的TR,TD实现方法

    这篇文章主要介绍了JS动态添加Table的TR,TD实现方法,涉及js针对Table中TR、TD节点的操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01
  • Omi v1.0.2发布正式支持传递javascript表达式

    Omi v1.0.2发布正式支持传递javascript表达式

    这篇文章主要介绍了Omi v1.0.2发布正式支持传递javascript表达式,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-03-03
  • window.open以post方式将内容提交到新窗口

    window.open以post方式将内容提交到新窗口

    最近在做web项目,碰到需要跨页面传递参数的功能,就是那种需要把当前页面的内容带到新开的子窗体中,以前的做法是传一个id过去,然后在新窗口中去读数据库的内容;比较有意思的是直接通过调用form的submit方法不能触发onsubmit事件,查看了帮助文档,必须手动的触发,否则只能看到页面刷新而没有打开新窗口
    2012-12-12
  • js中toString()与valueOf()的使用

    js中toString()与valueOf()的使用

    tostring 和 valueOf 函数是解决值的显示和运算的问题,本文主要介绍了js中toString()与valueOf()的使用,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)

    js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)

    这篇文章主要介绍了js实现的鼠标滚轮滚动切换页面效果,类似360默认页面滚动切换效果.涉及JavaScript响应鼠标事件动态变换页面元素的相关技巧,需要的朋友可以参考下
    2016-01-01

最新评论