首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nuxt-link:使用散列重定向到同一个锚点

nuxt-link:使用散列重定向到同一个锚点
EN

Stack Overflow用户
提问于 2020-09-03 22:54:14
回答 2查看 3.5K关注 0票数 0

我在我的Nuxt应用程序中使用了一个<nuxt-link>组件,我遇到了以下问题:

当我第一次在链接上单击

  • 时,一切正常,如果需要的话,页面被更改,锚点在页面上工作,如果我在页面上滚动一点,然后再次单击链接,什么都不会发生,因为url已经出现在我假设的浏览器导航栏中。

我如何覆盖此行为,以便当我单击nuxt-link时,它会滚动到所需的部分,而不管我以前单击了什么?(不刷新页面)

以下是我的nuxt-link的样子

代码语言:javascript
复制
<nuxt-link :to="{ path: localePath('/'), hash: '#homepage' }"
>
  <span>Homepage</span>
</nuxt-link>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-08 20:26:25

让它与@Merc建议的绑定到click.native事件的函数一起工作。

代码语言:javascript
复制
handleScroll(anchorId: string): void {
    if (this.$route.hash) {
      const anchor = document.querySelector(`#${anchorId}`)

      // Check if the anchor has been found
      if (anchor) {
        window.scrollTo({
          // Scroll so that the anchor is at the top of the view
          top: anchor.getBoundingClientRect().top + window.pageYOffset
        })
      }
    }
  }
票数 0
EN

Stack Overflow用户

发布于 2020-09-06 18:41:30

我相信您应该能够在nuxt-链接中添加一个单击处理程序。

代码语言:javascript
复制
<nuxt-link
  :to="{ path: localePath('/'), hash: '#homepage' }"
  @click.native="scroll"
>
  Homepage
</nuxt-link>

(不确定@click.native,如果不起作用,只需尝试@click)

然后在你的方法中:

代码语言:javascript
复制
methods: {
    scroll() {
      // your scroll function, probably reading document.documentElement.scrollTop or similar
    // if necessary check this.$route if the hash is already present, if so only do it in that case...
    },
}

希望这能给你点开场白?!干杯

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63732673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档