首页 > 其他 > 详细

vue hash模式 锚点定位 支持动画

时间:2019-12-30 12:56:10      阅读:135      评论:0      收藏:0      [点我收藏+]

1、问题

由于vue 路由hash模式在url中已经将#占用,页面上的#已经不具备hash 锚点功能。

 

2、js实现带动画的锚点定位

goAnchor (selector) {
      var anchor = document.querySelector(selector)
      //   没有动画
      //   document.documentElement.scrollTop = anchor.offsetTop
      //   有动画
      this.scrollTo(anchor.offsetTop, 500)
    },
    scrollTo (y, duration) {
      /* y:目标纵坐标,duration:时间(毫秒) */

      var scrollTop = document.body.scrollTop /* 页面当前滚动距离 */

      var distance =
                y -
                scrollTop /* 结果大于0,说明目标在下方,小于0,说明目标在上方 */

      var scrollCount = duration / 10 /* 10毫秒滚动一次,计算滚动次数 */

      var everyDistance = parseInt(
        distance / scrollCount
      ) /* 滚动距离除以滚动次数计算每次滚动距离 */

      for (
        var index = 1;
        index <= scrollCount;
        index++ /* 循环设置scrollBy事件,在duration之内,完成滚动效果 */
      ) {
        setTimeout(function () {
          window.scrollBy(0, everyDistance)
        }, 10 * index)
      }
      let deviation = y - scrollCount * everyDistance
      window.scrollBy(0, deviation)
    }

html:

<span class="anchor anchor1 active" @click="goAnchor(‘#anchor1‘)">
                首页
</span>

 

vue hash模式 锚点定位 支持动画

原文:https://www.cnblogs.com/mengfangui/p/12118719.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!