本文介绍了vue左右侧联动滚动的实现代码,分享给大家,具体如下:
实现功能:
- 点击左侧,右侧滚动到相应位置,
- 滚动右侧,左侧滚动到相应位置 @H_404_11@
- {{item.name}}
-
{{item.name}}{{item.description}}
- //......... //略去右侧详情代码
布局结构:
开源滚动库:
技术要点:
1.
如:
初始化在
- 元素上
2.foods-wrapper的高度小于content高度时才会发生滚动
3.点击左侧菜单列表时,只需要计算右侧对应的偏移距离 或是 计算对应的移动到的元素即可
方法二: 计算移动到的元素,用scrollToElement()方法
4.滚动右侧列表时,会稍复杂一些.
4.1. 因为需要知道滚动的元素在哪个item列表区间,因此需要计算右侧五组item距离顶部的距离
{
h += list[i].clientHeight
this.itemHeight.push(h)
})
console.log(this.itemHeight) //[0,481,850,2227,2820,3189]
}
4.2 时时监听滚动距离
需要在
代码如下:
其中 listenScroll probeType参数 在created中定义:
而@scroll=scroll是在scroll.vue中代理过来的方法:
{
me.$emit('scroll',position) //参数position: position:{x:-10,y:24}
})
}
posiiton.y就是需要实时监听的参数,即:
其中 scrolly 需要在data中提前定义:
然后在watch中监听scrolly变化即可:
= 0) this.currentIndex = 0
let itemHeight = this.itemHeight
for (let i = 0; i < itemHeight.length - 1; i++) {
let h1 = itemHeight[i]
let h2 = itemHeight[i + 1]
if (-newy >= h1 && -newy < h2) {
this.currentIndex = i
return
}
}
}
}
代码部分:
//右侧结构
<scroll class='foods-wrapper' ref=foodsWrapper :listenScroll=listenScroll :probeType = 'probeType' @scroll=scroll>
//js部分