微信小程序——监听页面滑动(二)判断用户在做向上滑动还是向下滑动(onScrollPage scroll-view)

这篇具有很好参考价值的文章主要介绍了微信小程序——监听页面滑动(二)判断用户在做向上滑动还是向下滑动(onScrollPage scroll-view)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

知识回调(不懂就看这儿!)

知识专栏 专栏链接
微信小程序专栏 https://blog.csdn.net/xsl_hr/category_12338067.html?spm=1001.2014.3001.5482
Git版本管理 https://blog.csdn.net/XSL_HR/article/details/130986889?spm=1001.2014.3001.5501
监听页面滑动 https://blog.csdn.net/XSL_HR/article/details/130986889?spm=1001.2014.3001.5501

有关微信小程序的相关知识可以前往微信小程序官方文档查看了解!!

微信小程序官方文档传送门

场景复现

在上期文章中,我们简单介绍了如何监听页面滑动,但是在文章的最后留下了一个问题。我们如何判断用户是在做上滑操作还是下滑操作?本期文章将用两种方法(onPageScroll或者touchstart、touchmove、touchend)解决这个问题。

监听效果:
微信小程序——监听页面滑动(二)判断用户在做向上滑动还是向下滑动(onScrollPage scroll-view)
我们能发现,监听之后,上滑控制台会打印“上滑”,下滑控制台会显示“下滑”。

核心干货

onPageScroll结合scrollTop实现

在上期文章中,关于onPageScroll的用法已经介绍的很全面了。这里的话就直接写逻辑层的内容。
首先我们能监听页面变化的参数只有scrollTop,所以我们需要从scrollTop的变化下手。在上期文章中,我们发现当页面上滑时scrollTop递增,页面下滑时scrollTop递减。所以我们可以通过判断scrollTop的变化来判断用户的动作。

data:{
	scrollTopArr:<number[]>[]
}
onPageScroll: function(e) {
    var that = this
    var scrollTop = e.scrollTop;
    var scrollTopArr = that.data.scrollTopArr;
    scrollTopArr.push(scrollTop)
    var len = scrollTopArr.length;
    len > 5 ? scrollTopArr.slice(0,len-4):scrollTopArr;
    if(scrollTopArr[len-1] > scrollTopArr[len-2]){
      console.log("上滑")
    } else if(scrollTopArr[len-1] < scrollTopArr[len-2]) {
      console.log("下滑")
    }

现在理一下逻辑,由于onPageScroll是实时调用执行的,所以我们需要对每次获取到的数据进行存储,所以有了第一部分的data代码,首先定义一个数组用来存放每次调用的scrollTop。但是我们需要考虑到,这个函数调用是非常频繁的,所以一次的数据会有几百上千和数据,因此我们在做数据比较的时候,需要对代码进行截取,所以有了代码截取的部分。

微信小程序——监听页面滑动(二)判断用户在做向上滑动还是向下滑动(onScrollPage scroll-view)
上滑和下滑的监听都实现了。下面我们简单介绍一下第二种方法。

了解touch方法

微信小程序中可以通过监听touchstarttouchmovetouchend事件来判断用户的滑动方向。

具体方法如下:

  1. touchstart事件中记录下手指触摸的位置startY

  2. touchmove事件中记录下手指移动的位置moveY

  3. touchend事件中比较startYmoveY的大小,如果moveYstartY大,则用户是在向上滑动,反之则是向下滑动。

以下是示例代码:

let startY = 0;

// 监听touchstart事件
function handleTouchStart(e) {
  startY = e.touches[0].clientY;
}

// 监听touchmove事件
function handleTouchMove(e) {
  const moveY = e.touches[0].clientY;
  const direction = moveY > startY ? 'up' : 'down';
  console.log(`用户正在向${direction}滑动`);
}

// 监听touchend事件
function handleTouchEnd(e) {
  const moveY = e.changedTouches[0].clientY;
  const direction = moveY > startY ? 'up' : 'down';
  console.log(`用户向${direction}滑动结束`);
}

// 绑定事件
const element = document.querySelector('.scrollable-element');
element.addEventListener('touchstart', handleTouchStart);
element.addEventListener('touchmove', handleTouchMove);
element.addEventListener('touchend', handleTouchEnd);

在上面的代码中,我们通过handleTouchStarthandleTouchMovehandleTouchEnd函数分别处理touchstarttouchmovetouchend事件,并在handleTouchMovehandleTouchEnd函数中判断用户的滑动方向。最后,我们通过addEventListener函数将这些事件绑定到一个可滚动的元素上。

但是!!!!这个方法是有缺陷的,不过缺陷不大。touch方法只有在用户触摸的时候才会调用,否则是无效的。不过在现实操作中,用户是必须触摸的。只不过在开发者工具里面,我们是可以用鼠标滚轮滑动模拟滑动的,所以在使用touch后,我们需要点击触摸滑动才能在开发者工具上进行调试。


以上就是关于微信小程序监听用户上下滑行为的基础知识分享,相信看完这篇文章的小伙伴们一定能运用这些方法在项目开发中。当然,可能有不足的地方,欢迎大家在评论区留言指正!

下期文章将介绍微信小程序页面滑动之监听上下滑动~
感兴趣的小伙伴可以订阅本专栏,方便后续了解学习~
觉得这篇文章有用的小伙伴们可以点赞➕收藏➕关注哦~

微信小程序——监听页面滑动(二)判断用户在做向上滑动还是向下滑动(onScrollPage scroll-view)文章来源地址https://www.toymoban.com/news/detail-507399.html

到了这里,关于微信小程序——监听页面滑动(二)判断用户在做向上滑动还是向下滑动(onScrollPage scroll-view)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 微信小程序页面监听全局变量变化

    微信小程序页面监听全局变量变化

    在前段时间的开发过程中,遇到了一个需要监听是否有推送的需求,需要在不同的页面监听全局变量从而进行条件渲染,因此总结了一下便有了下篇文章. 当我们开发一个大型的微信小程序时,通常会涉及到多个页面或组件之间的数据传递和共享,而全局变量可以方便地实现

    2024年02月13日
    浏览(16)
  • 微信小程序的页面滚动事件监听

    微信小程序中可以通过 Page 的 onPageScroll 方法来监听页面滚动事件。具体步骤如下: 在页面的 onLoad 方法中注册页面滚动事件监听器: 在 onPageScroll 方法中处理页面滚动事件。onPageScroll 方法会在页面滚动时被调用,参数 event 包含了当前页面滚动的位置信息,例如 event.scrollT

    2024年02月07日
    浏览(11)
  • 微信小程序禁止页面上下滑动的三个方式

    开发的时候,会遇到产品或者UI发出如下规定: 1、如果是一屏的页面,就禁止页面能上下滑动 2、如果显示弹窗的时候,长屏幕禁止上下滑动! 感叹一句:好变态 当然,感叹归感叹,但是还是得听不是,我找出了3种方式,看看大家喜欢哪个,就用哪个! 第一种方式: 页面

    2024年02月11日
    浏览(19)
  • 监听微信小程序页面的数据变化

    监听微信小程序页面的数据变化

    1、数据监听是为了当数据发生变化时,做一些操作; 2、它的作用相当于Vue中的watch 侦听器 先看效果: 第一、先在页面中使用          ①: 创建watch文件         ②:在页面中引入并使用         wxml:         js: 第二:在组件中使用数据监听           ①:wxml:  

    2024年02月16日
    浏览(11)
  • 微信小程序监听页面跳转API

    微信小程序监听页面跳转API

    2024年02月15日
    浏览(9)
  • 微信小程序———同一页面内左右滑动切换内容显示

    微信小程序———同一页面内左右滑动切换内容显示

    一、微信小程序事件  由于首先介绍一下微信小程序中的事件,可选择快速略过或者直接进去之后的重点内容 一、什么是事件 事件是视图层到逻辑层的通讯方式。 事件可以将用户的行为反馈到逻辑层进行处理。 事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对

    2024年02月03日
    浏览(41)
  • 微信小程序实现数值监听(页面和组件属性)

    简介 目前文章主要介绍对页面属性值的监听以及组件属性值的监听。需要异页面监听数据,请跳转至另一个文章介绍 为什么需要监听属性值 当需要通过一个属性变化时候,需要计算相应的方法等。pc网站经常需要监听属性,那么小程序应该怎么去实现? 1、首先创建公共的

    2024年02月09日
    浏览(13)
  • 微信小程序常用页面监听跳转方法

    使用wx.navigateTo(Object object)方法跳转,此跳转方法会保留当前页面,将跳转到应用内的某个页面,特别注意,此方法不能跳到 tabbar 页面,也就是咱们常用的底部菜单栏对应的tabbar 页面。具体示例代码: 这只是常见的用法,如果需要数据回调,可参考微信官方文档。 2. 使用

    2024年02月13日
    浏览(9)
  • 微信小程序实现左右滑动进行切换数据页面(touchmove)

    微信小程序实现左右滑动进行切换数据页面(touchmove)

    手指触摸左右滑动进行切换数据 需要实现的是有一个tab栏,点选某一个tab的时候切换页面,手势滑动,左滑右滑效果和点击tab一样切换页面数据。 这里我们要先了解几个微信的事件属性 touchstart : 手指触摸动作开始 touchmove:手指触摸后移动 touchcancel:手指触摸动作被打断,

    2024年02月11日
    浏览(41)
  • 【微信小程序】通过监听 WebSocket 的状态变化来判断Socket是否已经建立连接

    在微信小程序中,可以通过监听 WebSocket 的状态变化来判断是否已经建立连接。具体的操作步骤如下: 创建 WebSocket 对象并进行连接: 监听 WebSocket 的状态变化: 通过监听上述的状态变化,可以判断 WebSocket 是否已经建立连接。当连接成功时, onSocketOpen 会被触发;连接失败时

    2024年02月07日
    浏览(11)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包