基于uni-app框架的小程序——点击跟随事件( 二 )


那如果当我们划动右边的这个盒子,想要左边的tab进行相应的跟随呢?我觉得这是一个难点!!
(API)
查询节点信息的对象 。
将选择器的选取范围更改为自定义组件内,返回一个对象实例 。(初始时,选择器仅选取页面范围的节点,不会选取任何自定义组件中的节点) 。
.()
在当前页面下选择匹配选择器的所有节点,返回一个对象实例,可以用于获取节点信息 。
// 封装一个获取节点信息的函数init(){const query = uni.createSelectorQuery().in(this)query.selectAll('.right-item').boundingClientRect(data=>{console.log(data)if(data){data.map((item,index)=>{var top = index > 0 ? this.rightTop[index-1]:0top += item.heightthis.rightTop.push(top)})}}).exec()}
我们看一下我们获取到的节点信息,获取到了一个数组,里面分别有6个对象(分别对应的是左边tab的6个选项),且每一个选项对应的右边盒子的高度都是700 。
我们对这个data进行遍历,定义一个变量(top),对这个data中的每一个对象的进行一个累加,同时把top往这个数组中添加数据,那么数组中的数据分别是700、1400、2100……
这也对应了左边tab点击时,右边应该对应的高度,反之,我们通过划动左边盒子时获取的来判断我们左边的tab应该对应哪一个 。
举个栗子,比如我们左边划动了750的距离,第一个对象的高度是700,那么此时我们的左边的tab是不是应该停留在第二个呢?
那么我们怎么去获取?怎么去通过划动的距离来设置左边应该跳转的index?
{{item.name}}
通过@="",调用了这个方法 。@这个事件的返回值是
我们可以拿到 。
methods:{scrollright(e){var scrollTop = e.target.scrollTop//返回满足条件的第一个元素的位置索引号var index = this.rightTop.findIndex((v)=>v>scrollTop)if(index !=-1){this.changeIndex(index)}}}
【基于uni-app框架的小程序——点击跟随事件】上面我们说了是一个数组 。[700,1400,2100……4200] 。在这个数组中,划动的距离【】,满足大于数组中的第一个元素(每一个tab对应的)的索引值 。这个也是我们左边tab需要跳转的index 。