开发者问题收集

Nuxt3 - NuxtLink 到锚点在点击或页面刷新时不会滚动

2022-07-06
2158

我只是想让页面滚动到 Nuxt3 中的锚点,但我无法让它工作。单击时它不会滚动,或者在 URL 中带有锚点的页面刷新时也不会滚动。

<nuxt-link :to="{path: '/', hash: '#projects'}">Let's go</nuxt-link>

尝试了一堆其他 SO 答案,将自定义 scrollBehaviour 代码添加到 nuxtConfig 不起作用,尝试在 Nuxt3 中安装 vue-scrollTo 时,在使用 vue-scrollTo 模块运行应用程序时只给了我这个错误

ERROR Cannot restart nuxt: serialize is not defined

任何帮助都将不胜感激!

完整代码

<script setup>
import '@/assets/css/main.css';

const { data } = await useAsyncData('home', () => queryContent('/').find())
const projects = data

</script>
<template>
  <div>
    <div class="flex flex-col h-screen">
    <div class="lg:p-20 p-10 text-white bg-orange-500">
      <p class="font-playfair lg:text-7xl text-4xl mb-5">Kia Ora, my name is <span class="font-medium italic">George Bates</span></p>
      <p class="font-lato lg:text-3xl text-xl mb-5">Content creator and web developer in Auckland, New Zealand</p>
    </div>
    <div class="lg:p-20 p-10 text-white flex flex-grow" style="background-image: url('images/header.jpg'); background-position: center; background-size: cover;">
    <nuxt-link :to="{path: '/', hash: '#projects'}">Let's go</nuxt-link>
    </div>
    </div>

    <main class="lg:p-20 p-10" id="projects">
      <p class="text-3xl font-playfair mb-5 font-semibold pb-2 text-orange-500">Some of my work</p>
      <Projects :projects="projects" />
    </main>
  </div>
</template>
2个回答

您说您已经尝试添加自定义 scrollBehavior ,但是您是如何做到的?

我对 Vue 和 Nuxt 非常陌生 ,但多亏了 这个 Github 答案 ,您可以自定义滚动行为,这对我有用:

文件 app/route.options.ts

import type { RouterConfig } from '@nuxt/schema';

// https://router.vuejs.org/api/#routeroptions
export default <RouterConfig>{
  scrollBehavior(to, from, savedPosition) {
    return {
      el: to.hash,
      behavior: 'smooth',
    };
  },
};

(这里我放了一个平滑的行为,但默认似乎是 auto

并附有如下代码示例:

...
<NuxtLink :to="{path: '/', hash: '#anchor'}">Let's go!</NuxtLink>
...
thithip
2022-07-07

对我来说,有用的方法更简单。只需将以下内容添加到 nuxt.config.ts 文件中:

  router: {
    options: {
      scrollBehaviorType: "smooth",
    },
  },

这就是您所需要的。

您可以从官方 Nuxt3 文档 的“哈希链接的滚动行为”下阅读更多内容。

希望对您有所帮助!

Marcus
2024-05-05