Problem with nuxt-links navigation to pages with hashes/anchors

18,374

Solution 1

Anyone who had this problem here is a simple solution if you are using Nuxt-Link

Instead of using <nuxt-link to="#contact" >Contact</nuxt-link> which doesn't work. Use <nuxt-link :to="{ path: '/',hash:'#contact'}">Contact</nuxt-link>

path is the page you will navigate to

hash is the position you will scroll to

Hope this help someone.

Solution 2

A bit late but this is what I was able to achieve. Thanks to Sivuyile-TG-Magutywa

 <nuxt-link :to="{ path: localePath('index'),hash:'#about'}">
          {{ $t("menu.about") }}
 </nuxt-link>

output

https://www.shrek.com/fr/about
Share:
18,374
shikinen
Author by

shikinen

Updated on June 05, 2022

Comments

  • shikinen
    shikinen almost 2 years

    I am using nuxt-links in my website navigation, most of them point to hashed elements/anchors in the home page like:

    <nuxt-link
      v-else
      class="text-link"
      :to="localePath('index') + #hash"
    >
    

    and it does its job if currently on the home page but when I navigate to a different site, eg. /about and I click on a navbar nuxt-link (so I want to navigate from /about to /#hash or /any-other-site#hash) I got a nuxt error displayed to check the console where it reads "Cannot read property 'offsetTop' of null".

    My router configuration in nuxt.config (without it I wouldn't be even able to scroll to an anchored element being in the same site as the element!):

      router: {
        scrollBehavior(to) {
          if (to.hash) {
            return window.scrollTo({ top: document.querySelector(to.hash).offsetTop + window.innerHeight, behavior: 'smooth' });
          }
          return window.scrollTo({ top: 0, behavior: 'smooth' });
          }
      },
    

    In the :to attribute I tried 'hash' '#hash', nothing works. Could please anyone help me with this? How do I navigate to a different page + #anchor (so to scroll to that anchor?)

  • FooBar
    FooBar almost 4 years
    Just tested in version ^2.0.0 of Nuxt and that does not seem to work.
  • MjBVala
    MjBVala almost 4 years
    works for me on the same version @FooBar, altough It doesn't scroll to the div, it simply goes to directly to the hash. I haven't messed with the default router scroll behavior.
  • JuliaCrush
    JuliaCrush about 3 years
    A lifesaver! A legend!