ホームページ  >  記事  >  ウェブフロントエンド  >  BubbleTransition を使用してページ切り替え効果を作成する方法

BubbleTransition を使用してページ切り替え効果を作成する方法

php中世界最好的语言
php中世界最好的语言オリジナル
2018-05-25 15:42:221174ブラウズ

今回は、BubbleTransition を使用してページ切り替えエフェクトを作成する方法を説明します。 BubbleTransition を使用してページ切り替えエフェクトを作成する場合の 注意事項 について説明します。

CodePen アドレス

フロントエンドで SPA を使用すると、ページ切り替えアニメーションなどのより詳細な制御が可能になります。バックエンド ページを使用して上記の効果を達成できない場合があります。明らかなスプラッシュ画面。すべてのリソースを再ロードする必要があるためです。

今日は、vue、vue-router、animationjs を使用して、上記の効果を実現する方法を説明します。

手順

  1. メニューをクリックしてバブルを生成し、入口アニメーションの実行を開始

  2. ページジャンプ

  3. 出口アニメーションを実行

機能呼び出しコンポーネント

v-show、v-if などの命令ではなく、オブジェクトを通じてエフェクトが呼び出されることを望みます。統一性を維持するために、コンポーネントの作成には今でも Vue を使用しています。通常、効果をビジネス コンポーネントから独立させておくために、これを新しい Vue ルート ノードを使用して実装します。

let instance = null
function createServices (Comp) {
 // ...
 return new Vue({
 // ...
 }).$children[0]
}
function getInstance () {
 instance = instance || createServices(BubbleTransitionComponent)
 return instance
}
const BubbleTransition = {
 scaleIn: () => {
 return getInstance().animate('scaleIn')
 },
 fadeOut: () => {
 return getInstance().animate('fadeOut')
 }
}
その後、BubbleTransitionComponent を実装すると、BubbleTransition.scaleIn、BubbleTransition.scaleOut が正常に動作します。 animejs がリッスンできるアニメーション実行終了イベント。 anime().finished は Promise オブジェクトを取得します。

<template>
 <p class="transition-bubble">
 <span v-show="animating" class="bubble" id="bubble">
 </span>
 </p>
</template>
<script>
import anime from 'animejs'
export default {
 name: 'transition-bubble',
 data () {
 return {
  animating: false,
  animeObjs: []
 }
 },
 methods: {
 scaleIn (selector = '#bubble', {duration = 800, easing = 'linear'} = {}) {
  // this.animeObjs.push(anime().finished)
 },
 fadeOut (selector = '#bubble', {duration = 300, easing = 'linear'} = {}) {
  // ...
 },
 resetAnimeObjs () {
  this.animeObjs.reset()
  this.animeObjs = []
 },
 animate (action, thenReset) {
  return this[action]().then(() => {
  this.resetAnimeObjs()
  })
 }
 }
}
本来のアイデアは、ルーター設定内の特定のルートメタにタグを追加し、そのタグを判断して beforeEach 中にアニメーションを実行することです。ただし、この方法は十分な柔軟性がありません。代わりに、Vue-router と組み合わせてハッシュによってマークされ、切り替え時にハッシュがリセットされます。

<router-link class="router-link" to="/#bubbletransition">Home</router-link>
const BUBBLE_TRANSITION_IDENTIFIER = 'bubbletransition'
router.beforeEach((to, from, next) => {
 if (to.hash.indexOf(BUBBLE_TRANSITION_IDENTIFIER) > 0) {
 const redirectTo = Object.assign({}, to)
 redirectTo.hash = ''
 BubbleTransition.scaleIn()
  .then(() => next(redirectTo))
 } else {
 next()
 }
})
router.afterEach((to, from) => {
 BubbleTransition.fadeOut()
})
クールなアニメーションは、Web サイトを閲覧しているときに、一瞬でユーザーの注意を引くことがあります。 ! !はぁ。おそらく、最終的な実装には数行のコードしか必要としないでしょう。次回デザイナーが無理なアニメーション要件を提示した場合は、数分でこの効果を披露できると思います。ここでは使用すべきではないと思います** このアニメーションはユーザーの心理的期待を満たしていません。

この記事の事例を読んだ後は、その方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

推奨読書:

無限ロード機能を実現するには vue-infinite-loading を使用してください

vue コードを国際化するには vue-i18n を使用してください

以上がBubbleTransition を使用してページ切り替え効果を作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。