https://b-risk.jp/blog/2019/12/nuxt-js/
こちらのサイトで解説されている方法を利用して、こちらのデモページを模倣しようとしました。
しかし、以下が解決できませんでした。
- ページ遷移前に、画面の位置がトップに戻らない。下記のコードが正常に実行されない様子。
#pages/index.vue // ページを上部に移動 anime({ targets: '#__nuxt', scrollTop: 0, easing: 'easeInOutQuart', duration: 800, complete: () => { console.log("scrollTop complete") } });
- スマートフォンで開くと、遷移後のページの下部に、無駄な空間が出来てしまっている。(おそらくダミー画像があったため)
(一覧ページに戻る際のエフェクトは未着手のため、今後新たな課題が発生するかもしれません)
処理の流れは、以下の通りと解釈しております。
間違っておりましたら、ご指摘下さい。
- 一覧ページにて、クリックした画像の情報(top, left, src)を取得。
- その情報を基に、Layoutsページにダミー画像を作成。(クリックした画像と同一位置に配置される)
- 詳細ページへの遷移前に、画面スクロールを上端に戻す。
- 一覧ページの透過率を0にアニメーションさせる。
- 透過率が0になったら、詳細ページに遷移する。
- 詳細ページでの詳細画像の情報(top, left, width)を取得する。
- その情報へダミー画像をアニメーションさせる。
- 詳細ページの透過率を1にアニメーションさせる。(今回は、元々のページを透過率0で作成した) その際、詳細画像の透過率だけは0のまま。
- ダミー画像と詳細ページのアニメーションが完了したら、詳細画像の透過率を1にする。
- ダミー画像を削除する。(top,left,widthをnullや''にする)
色々と試行錯誤したので、かなり汚いですが、こちらがリポジトリです。
https://github.com/ottonove/animation_page_transition
解決のためのご助言を下さると幸いです。
また、vue.js及びnuxt.jsも、まだ触り始めたばかりで、正直雰囲気で使っている部分も多いですので、
正しい使用方法などをご教授頂けると幸いです。
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー