微信小程序—页面滑动,获取可视区域数据

简介: 微信小程序—页面滑动,获取可视区域数据

需求:页面有一列表,获取可视区域的数据;滑动过程中不处理,停止滑动后才获取。
实现原理:获取列表中每个条目的位置信息(元素顶部距可视区域顶部的距离),和可视区域比较,在可视范围内即认为可视元素
如下简单html结构
//列表


// 每个条目
{ { item.name }}

1
2
3
4
5
js方法
如果不需要判断是否滑动,则在onPageScroll中直接执行getVisibleItems方法即可
最终得到的visibleItems即为可视区域的数据,是一个数组,可通过每个元素的dataset获取绑定在元素上的字段,如上述html中的字段id
Page({
//....其他逻辑
let scrollTimer = null //定义一个全局的滑动定时器 用来判断是否正在滑动,如果不需要判断是否滑动,则在onPageScroll中直接执行getVisibleItems方法即可
//页面滑动监听方法
onPageScroll: function (e) {
//一直滑动 一直清楚 直到滑动停止1s后,执行获取方法
if(scrollTimer){
clearTimeout(scrollTimer)
}
// 赋值延迟方法 停止滑动后执行
scrollTimer = setTimeout(() => {
this.getVisibleItems()
}, 1000);
},
getVisibleItems(){
//创建一个选择器
const query = wx.createSelectorQuery().in(this);
//获取列表内所有条目元素 在界面的位置信息
query.selectAll('.item').boundingClientRect();
query.selectViewport().scrollOffset();
query.exec((res) => {
//所有选中的条目数据
const listItemRects = res[0];
//获取设备的视口高度 (如果有底导航其他固定底部的元素可在此减去其高度)
const viewportHeight = wx.getSystemInfoSync().windowHeight;
// 获取可见的列表项
const visibleItems = listItemRects.filter(rect => {
//元素局顶部的距离 (如果顶部有固定的tab或导航栏可在此减去其高度)
console.log(rect.top)
console.log(viewportHeight)
// 元素距离顶部的距离在此范围内 即认为在可视范围内
return rect.top && rect.top < viewportHeight;
})
//visibleItems即为可视区域的数据,是一个数组,可通过dataset获取绑定在元素上的字段,如上述html中的字段id
//可做后续逻辑处理
})
},
})

相关文章
|
3月前
|
存储 安全 小程序
在微信小程序中使用 Vant 时如何确保数据的安全?
在微信小程序中使用 Vant 时如何确保数据的安全?
52 1
|
2月前
|
小程序 前端开发 开发者
小程序的页面如何布局?
【10月更文挑战第16天】小程序的页面如何布局?
96 1
|
2月前
|
小程序 JavaScript 开发工具
|
2月前
|
移动开发 小程序 数据可视化
微信小程序可视化开发工具之动态数据
微信小程序可视化开发工具之动态数据
49 3
|
3月前
|
小程序 JavaScript API
微信小程序开发学习之页面导航(声明式导航和编程式导航)
这篇文章介绍了微信小程序中页面导航的两种方式:声明式导航和编程式导航,包括如何导航到tabBar页面、非tabBar页面、后退导航,以及如何在导航过程中传递参数和获取传递的参数。
微信小程序开发学习之页面导航(声明式导航和编程式导航)
|
3月前
|
JSON 小程序 JavaScript
微信小程序页面事件,下拉刷新事件和上拉触底事件
这篇文章介绍了微信小程序中如何实现下拉刷新和上拉触底事件,包括开启下拉刷新、配置下拉刷新样式、监听下拉刷新事件,以及监听上拉触底事件和配置上拉触底的距离。
|
1月前
|
小程序 前端开发 JavaScript
在线课堂+工具组件小程序uniapp移动端源码
在线课堂+工具组件小程序uniapp移动端源码
37 0
在线课堂+工具组件小程序uniapp移动端源码
|
2月前
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
365 3
|
2月前
|
小程序 API
微信小程序更新提醒uniapp
在小程序开发中,版本更新至关重要。本方案利用 `uni-app` 的 `uni.getUpdateManager()` API 在启动时检测版本更新,提示用户并提供立即更新选项,自动下载更新内容,并在更新完成后重启小程序以应用新版本。适用于微信小程序,确保用户始终使用最新版本。以下是实现步骤: ### 实现步骤 1. **创建更新方法**:在 `App.vue` 中创建 `updateApp` 方法用于检查小程序是否有新版本。 2. **测试**:添加编译模式并选择成功状态进行模拟测试。
60 0
微信小程序更新提醒uniapp
|
4月前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
118 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目