1.元素加上id,下面是循环中动态添加
:id="'product' + index"
也可以用vue ref实现
2.点击
// 跳转到对应锚点
document.getElementById('product' + index).scrollIntoView(true)
scrollIntoView(true) 跳到元素顶部
scrollIntoView(flase) 跳到元素底部
3. 纪录各个地方距页面顶部的高
getTopList () {
let pageHeight = 0
this.insuranceList.forEach((item, index) => {
this.topList.push(document.getElementById('product' + index).offsetTop)
pageHeight += document.getElementById('product' + index).offsetHeight
})
this.topList[this.topList.length - 1] = pageHeight - this.$refs.content.offsetHeight
},
4.滚动时切换到对应导航栏
onContentScroll (e) {
let target = e.target || e.srcElement
this.scrollTop = target.scrollTop
if (target.scrollTop < this.topList[2]) {
this.curNav = 0
} else if (target.scrollTop >= this.topList[2] && target.scrollTop < this.topList[3]) {
this.curNav = 2
} else if (target.scrollTop >= this.topList[3] && target.scrollTop < this.topList[4]) {
this.curNav = 3
} else if (target.scrollTop >= this.topList[4]) {
this.curNav = 4
}
},