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

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

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

相关文章
|
1天前
|
小程序
uniapp如何隐藏默认的页面头部导航栏,uniapp开发小程序如何隐藏默认的页面头部导航栏
uniapp如何隐藏默认的页面头部导航栏,uniapp开发小程序如何隐藏默认的页面头部导航栏
4 0
|
2月前
|
XML 小程序 JavaScript
小程序页面传值
本文介绍了微信小程序中父子页面的传值方法。父页面向子页面传值可通过绑定事件跳转,使用`data-`属性传递参数,然后在子页面的`onLoad`中接收。子页面向父页面传值则通过用户选择内容后调用父页面的方法,利用`getCurrentPages()`获取父页面实例,进而修改父页面的数据。
28 2
|
2月前
|
JSON 小程序 JavaScript
微信小程序页面传参(多条数据的传递)
本文介绍了微信小程序中页面间参数传递的方法。1) 单个数据传递:通过`wx.navigateTo`将ID拼接在URL中传递,接收页面在`onLoad`中获取。2) 多个参数传递:将数据转换为JSON字符串,然后通过URL参数传递,接收页面同样在`onLoad`中解析JSON恢复数据。3) 提到了JSON作为数据交换格式的基础知识。全文鼓励读者尝试并点赞。
31 1
|
2月前
|
小程序 JavaScript 数据库
小程序登录页面
该文介绍了使用小程序云开发实现登录和注册的步骤,包括界面设计和后端逻辑。界面使用了`wxss`和`wxml`编写,样式精致,包含手机号和密码输入、登录按钮、注册和忘记密码选项。在`js`中,重点处理了用户输入的账号和密码,通过云数据库查询验证用户是否存在,使用标志位`flag`判断,若账号或密码错误,显示相应提示。文章总结了利用for循环比对数据库账号的难点,并表达了作者的学习心得。
33 1
|
1月前
|
Python 数据格式
使用Python批量处理微信榜单数据
使用Python批量处理微信榜单数据
|
8天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的在线答题微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的在线答题微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
22 3
|
12天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的校园导航微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的校园导航微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
26 4
|
13天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的课堂考勤微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的课堂考勤微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
|
13天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的校园顺路代送微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的校园顺路代送微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
|
13天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的校园约拍微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的校园约拍微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)