|
|
@@ -28,7 +28,7 @@ export default { |
|
|
|
//这里存放数据 |
|
|
|
return { |
|
|
|
moveIndex: 0, //当前激活nav栏高亮显示标题的下标 |
|
|
|
ContentHeightList: null, //页面中每一栏内容的高度数组 |
|
|
|
contentHeightList: null, //页面中每一栏内容的高度数组 |
|
|
|
}; |
|
|
|
}, |
|
|
|
//监听属性 类似于data概念 |
|
|
@@ -54,7 +54,6 @@ export default { |
|
|
|
// 获得他们的父元素节点 |
|
|
|
let pageScroll = document.querySelector(".slide_nav").parentNode; |
|
|
|
let arr = []; |
|
|
|
// console.log(this.navLists.length); |
|
|
|
// 将所有子元素的高度放入arr |
|
|
|
for (let i = 0; i < this.navLists.length; i++) { |
|
|
|
// 把所有获得到的子元素高度都放入arr中 |
|
|
@@ -62,24 +61,23 @@ export default { |
|
|
|
} |
|
|
|
// 给这个arr兜底,这样可以解决最后一个内容栏监听不到的bug,注意:如果最后一栏内容高度低于滚动条当前的高度,也不会高亮显示最后一栏的标题哦 |
|
|
|
arr.push(Number.MAX_VALUE); |
|
|
|
this.ContentHeightList = arr; |
|
|
|
this.contentHeightList = arr; |
|
|
|
}, |
|
|
|
// 监听滚轮 |
|
|
|
handleScroll() { |
|
|
|
// 获得当前的滚轮高度 |
|
|
|
var scrollTop = |
|
|
|
window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop; |
|
|
|
let Heights = this.ContentHeightList; |
|
|
|
// 只有ContentHeightList存在才监听当前高度 |
|
|
|
if (this.ContentHeightList) { |
|
|
|
// console.log(scrollTop); |
|
|
|
let Heights = this.contentHeightList; |
|
|
|
// 只有contentHeightList存在才监听当前高度 |
|
|
|
if (this.contentHeightList) { |
|
|
|
for (let i = 0; i < Heights.length; i++) { |
|
|
|
// 如果滚轮高度大于当前所在的子元素高度 并且 滚轮高度小于下一个子元素的高度 ,那么说明滚轮在当前内容中,就激活当前的nav栏 |
|
|
|
if (scrollTop >= Heights[i] && scrollTop <= Heights[i + 1]) { |
|
|
|
// console.log(i); |
|
|
|
// 那么就激活当前的nav栏 |
|
|
|
this.moveIndex = i; |
|
|
|
// return false; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@@ -95,7 +93,7 @@ export default { |
|
|
|
this.getChildrenHeigh(); |
|
|
|
}, |
|
|
|
destroyed() { |
|
|
|
this.ContentHeightList = null; |
|
|
|
this.contentHeightList = null; |
|
|
|
window.removeEventListener("scroll", this.handleScroll, true); |
|
|
|
}, |
|
|
|
}; |