scrollTo代替锚点定位并且通过scroll事件让滚动时导航栏始终可见

a标签有一个锚点定位,用到了#符号,这个定位会影响到路由,所以可以用一个scrollTo方法代替
scrollTo() 方法可把内容滚动到指定的坐标。
语法:

winodw.scrollTo(x,y)

html页面布局


  
  

首先
我们设置scrollTop为滚动条到窗口顶端的距离

const scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop

接着
我们需要点击a标签,让元素滚动到指定的坐标
此时我们需要获取元素顶端距离浏览器窗口的高度

这里有四种高度:

  • offsetTop:返回当前元素的上边界到它的包含元素的上边界的偏移量,以像素为单位。offsetTop是相对于离它最近的具有绝对或相对定位的父级元素的距离
    offsetY则是一个鼠标事件的值,它是相对于你所点击的那个元素的左上角的Y坐标
  • scrollHeight, scrollWidth
    返回元素的完整的高度和宽度,以像素为单位。
    当一个元素拥有滚动条时,当你把滚动条滚到底部的时候,scrollHeight = scrollTop + clientHeight;
  • offsetHeight 和 offsetWidth
    只是报告元素的可见部分的大小。
    当没有滚动条时scrollHeight = clientHeight,IE则是等于内容的高度;
  • scrollTop, scrollLeft
    设置或返回已经滚动到元素的左边界或上边界的像素数。只有在元素有滚动条的时候这些像素才有用。这些属性也只在文档的 或 标记上定义(这和浏览器有关),并且一起来制定滚动文档的位置。注意,这些属性并不会指定一个