当前位置: 首页 > Web前端 > HTML

微信小程序锚点计算方法的实现

时间:2023-04-02 18:40:32 HTML

背景最近在开发一个小程序的时候,遇到需要在页面做一个锚点。一探究竟。小程序的锚点和html在浏览器中的锚点是不一样的,所以不能用一个标签加#anchor来实现scroll-view。通常在小程序中,可以使用scroll-view标签的scroll-into-view属性进行跳转。这是网上常见的方法,具体的方法,我就不细说了,可以参考这篇文章微信小程序-锚点定位但是scroll-view实现的锚点有一些缺点:如果使用scroll-view,则不能使用页面的下拉刷新onpulldownrefresh,scroll-view使用hints计算高度该方法的基本思想是计算锚点相对于页面的高度,使用wx.pageScrollTo滚动到锚点位置。具体方法如下:首先,计算锚点元素相对于当前可见区域的高度,即元素到小程序标题的距离,文档wx.createSelectorQuery,fieldswx.createSelectorQuery().select('#anchor').fields({rect:true},function(res){a=res.top}然后,计算当前页面的滚动高度,即html中的scrollTop,即距顶部的距离页面元素到小程序标题,文档scrollOffsetwx.createSelectorQuery().selectViewport().scrollOffset(function(res){b=res.scrollTop})最后,使用wx.pageScrollTo滚动到锚点位置,文档wx.pageScrollTowx.pageScrollTo({scrollTop:a+b});