微信小程序点击滚动到指定位置的实现
网络编程 2021-07-04 15:03www.168986.cn编程入门
这篇文章主要介绍了微信小程序点击滚动到指定位置的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们狼蚁网站SEO优化随着长沙网络推广来一起学习学习吧
公司项目要做一个类似微信通讯录导航的效果,点击右侧字母页面滚动到相应位置。
因为微信小程序没有dom概念,所以不能使用锚点,也不能直接获取对应字母相对页面的偏移位置。此时只能使用小程序创建对象实例的API获取节点信息
let query = wx.createSelectorQuery().in(this); query.selectViewport().scrollOffset() query.select("#Nav").boundingClientRect(); query.select("#FilterNav").boundingClientRect(); query.select("#"+((letter=='#')?'other':letter)).boundingClientRect(); query.exec(function (res) { let scrollTop = 0; if(res[3]){ scrollTop = res[0].scrollTop + res[3]. }else{ scrollTop = res[0].scrollTop; } wx.pageScrollTo({ scrollTop: scrollTop - res[1].height - res[2].height, duration: 300 }); });
解释一下该代码的意思
1.先创建节点对象,wx.createSelectorQuery()返回一个对象实例;
2.选择显示区域;
3.调用select方法,传入节点的id值,可在同一节点对象进行多次调用,会返回数组结果(上图中滚动区域距离页面顶部是有两个导航栏高度的距离的,所以查询了两次导航栏);
4.exec()回调方法中可以获取所查询所有节点的信息,数组第一条为页面的位置信息(滚动距离),获取到对应字母节点的值为节点相对于屏幕顶部的位置
结果页面滚动位置 = 页面滚动距离 + 字母节点相对屏幕高度距离 - 头部导航条高度 - 菜单栏高度
wx.pageScrollTo()调用API页面滚动
如果是让滚动容器滚动到指定位置,计算位置会有一点不同
var query = wx.createSelectorQuery().in(this); query.select("#swiper").boundingClientRect(); query.select("#"+ letter).fields({ rect:true,scrollOffset:true }); query.selectViewport().scrollOffset() query.exec((res)=>{ _this.setData({ letterScroll: res[1]. - res[0]. }) });
上图因为是弹出框里的内容,所以列表放在scroll-view滚动容器中,和上面不一样的是滚动位置是滚动容器距离页面顶部距离 - 锚点距离页面顶部距离,将计算后的偏移量修改至对应scroll-view容器的scroll-属性就行了。
到此这篇关于微信小程序点击滚动到指定位置的实现的文章就介绍到这了,更多相关小程序点击滚动到指定位置内容请搜索狼蚁SEO以前的文章或继续浏览狼蚁网站SEO优化的相关文章希望大家以后多多支持狼蚁SEO!
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程