废话不多说
直接上代码
const tabControlRef = ref()
watch(scrollTop, (newValue) => {
// if (newValue === currentDistance) {
// isClick = false
// }
// if (isClick) return
// #smallCoderwhite
// 1.获取所有的区域的offsetTops
// sectionEls:{ 描述: el元素 设置:el元素 房东:el元素 详情:el元素 }
const els = Object.values(sectionEls.value)
// 拿到每个元素之后,直接map匹配到它的滚动值
const values = els.map(el => el.offsetTop)
let index = values.length
for(let i = 0 ;i<values.length;i++){
if(newValue+44<values[i]){
index = i -1
break
}
}
// 直接看一下现在的取到的值
console.log(index)
tabControlRef?.value?.setCurrentIndex(index)
// 2.根据newValue去匹配想要索引
// let index = values.length - 1
// for (let i = 0; i < values.length; i++) {
// if (values[i] > newValue + 44) {
// index = i - 1
// break
// }
// }
// console.log(index)
// tabControlRef.value?.setCurrentIndex(index)
})
利用动态匹配算法,求出现在的滚动位置,在之前的基础上剪掉44然后再剪掉1,
可以看到每多一个栏目,都可以直接看到目前到了哪一栏