//0.获取整个页面的高度
const pageHeight = document.documentElement.clientHeight
//1.对页面id为box的设置scroll滑动事件
document.getElementById("box").addEventListener("scroll", () => {
//2.获取id为idName的标签,其顶部到页面的高度
let contentTop = document
.getElementById("idName")
.getBoundingClientRect().top;
//3.获取id为idName的标签,其自身高度
let contentHeight = document
.getElementById("idName").offsetHeight
//4.设置标签出现的条件
let trueOrFalse = (contentTop < pageHeight && contentTop >= 0) || (contentTop < 0 && (contentTop + contentHeight > 0))
if (trueOrFalse){
//5.满足条件,重新对tab栏绑定的v-module进行赋值
}
});
给一个具体的例子:
// 页面滑动tabs栏的蓝色光标跟随移动
const pageHeight = document.documentElement.clientHeight
this.tabslist.forEach((item, index) => {
item.subMenus.forEach(i => {
let contentTop = document
.getElementById(i.id)
.getBoundingClientRect().top;
console.log(contentTop)
let contentHeight = document
.getElementById(i.id).offsetHeight
//设置标签出现的条件
let trueOrFalse = (contentTop < pageHeight && contentTop >= 0) || (contentTop < 0 && (contentTop + contentHeight > 0))
if (trueOrFalse && index == 0) {
this.activeName = '0'
} else if (trueOrFalse && index == 1) {
this.activeName = '1'
} else if (trueOrFalse && index == 2) {
this.activeName = '2'
} else if (trueOrFalse && index == 3) {
this.activeName = '3'
} else if (trueOrFalse && index == 4) {
this.activeName = '4'
} else if (trueOrFalse && index == 5) {
this.activeName = '5'
}
})
})