質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Q&A

1回答

919閲覧

vue の画面遷移時のアニメーションについて

退会済みユーザー

退会済みユーザー

総合スコア0

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

0グッド

1クリップ

投稿2020/02/02 03:32

以下の制作会社を見ていただきナビをクリックすると画面遷移する際に、アニメーションして画面が変わると思います。

https://zoccon.me/

このサイトがvueなのか分かりませんが、こういうことをvueのspaで再現するにはどうするのか試してみたくなり、コマンドでvue + nuxtで適当なプロジェクトを作成して試してみました。

画面遷移はrouterの機能でrouter-linkで実装できますが、いろいろ調べてみたところ、beforeEachやらafterEachがあることを知ったので、router.js内に以下のように記載しました。

javascript

1 2const router = new Router(routerOptions) 3 4router.beforeEach((to, from, next) => { 5 alert("beforeEach") 6 next() 7}) 8 9router.afterEach(() => { 10 alert("aftereach") 11}) 12 13 14export function createRouter() { 15 return router 16} 17

そうすることで、画面遷移時にアラートが表示されるようになりましたが、実際にここに参考サイトのようにアニメーションさせる場合、どのように組み込んだらいいのかわかりません。
vue+nuxtをlocalhostでアクセスするとindex.vueが表示されて他のページは例えばother.vueなど作成しrouter-linkで設定すれば簡単な画面遷移は分かるのですが。。

ですので知りたいことは以下になります。

・router.beforeEachで画面遷移を検知するのはあっているか?
・アニメーションするブロック要素を例えばAnimeBlock.vueなどコンポーネント化すればいいのか?
・コンポーネント化の場合で全部のページで共通で使いたい場合は、各ページ(index.vueやother.vue)なので読み込むのか?
・コンポーネント化した場合の画面遷移のイベントを検知するにはどうしたら? emitで検知?

説明不足だと思いますが、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

トランジションで実現出来ます。

Enter/Leave とトランジション一覧
トランジション | Vue Router


余談ですが、vue関連の公式ドキュメントはかなり丁寧に詳しく書かれているので、今回のようなものに限らず、困った時に見に行くと解決策が乗っていることが多いです。

投稿2020/02/02 04:17

編集2020/02/02 04:26
michael-ilcsy

総合スコア180

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/02/02 06:42

回答ありがとうございます。 ただこれだけだと簡易的な説明だけで分かりませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問