Nuxt3でページ遷移時にページトップにスクロールする

code on a screen NuxtJS
Photo by Markus Spiske on Pexels.com
この記事は約3分で読めます。

Nuxt3でページ遷移時にページトップにスクロールさせる方法についてです。

ふと、rc.13版にアップグレードしてみるとスクロールトップのオプションが入っているようでした。Transitionのfinishのタイミングでページトップにスクロールされるのがデフォルトの動作のようです。
https://github.com/nuxt/framework/pull/3851

環境

  • nuxt@3.0.0-rc.13
  • Node.js v16.18.0

サンプルアプリの構成は以下のとおりです。

 本記事作成時、Nuxt3はまだベータリリースのため動作が変わる可能性もあります。

ページ遷移時にスクロールする

page:finishのフックを使って、scrollTo関数でページトップにスクロールさせます。

Transition後にスクロールする

ページコンポーネントのdefinePageMeta及びapp/router.optionsで指定する方法があります。nuxt.config.tsrouter.optionsではJSONでserializeされるオプションのみ指定が可能なようです。それぞれ見ていきます。

definePageMeta

definePageMetascrollTopというプロパティがあります。デフォルトは、trueになっているので、ページ遷移のtransition後にページトップにスクロールされます(page:transition:finishフックが呼ばれる)。スクロールを無効にする場合は、falseにすればよさそうです。

app/router.options.ts

vue-routerのscrollBehaviorを独自に実装します。

参考リンク

コメント

タイトルとURLをコピーしました