VUEアニメーションとトランジションを数分で取得(アニメーションの例を含む)

こんにちは!ここに小さなMがあります(VUEバージョンを一生懸命勉強しています)

今日は、Vueのアニメーションとトランジションを紹介します

アニメーションとトランジションは2つの異なる概念ですが、同じアニメーションを実現することも、組み合わせて使用​​することもできます。

1.基本的な使用法

公式のVUEドキュメントを見てみましょう

Vuetransitionは、次の場合に任意の要素およびコンポーネントに入口/出口遷移を追加するためのカプセル化されたコンポーネントを提供します

  • 条件付きレンダリング(使用v-if
  • 条件付き表示(使用v-show
  • 動的コンポーネント
  • コンポーネントルートノード

次の例では、v-showを使用しています

テンプレートタグと同様に、トランジットタグは実際にはDOMツリーに表示されませんが、トランジションが必要なタグを配置することで、多くの不要なトラブルを回避できます。

出入りの移行では、6つのクラススイッチがあります。

  1. v-enter:への遷移の開始状態を定義します。要素が挿入される前に有効になり、要素が挿入された次のフレームで削除されます。
  2. v-enter-active:エントリ遷移が有効になるときの状態を定義します。エントリトランジション全体に適用され、要素が挿入される前に有効になり、トランジション/アニメーションが完了した後に削除されます。このクラスは、エントリ遷移プロセス時間、遅延、および曲線関数を定義するために使用できます。
  3. v-enter-toバージョン2.1.8以降で定義されている遷移の終了状態を入力します。要素が挿入された後(v-enter同時にます。
  4. v-leave:離脱遷移の開始状態を定義します。脱退遷移がトリガーされるとすぐに有効になり、次のフレームで削除されます。
  5. v-leave-active:脱退遷移が有効になるときの状態を定義します。出口遷移フェーズ全体で適用され、出口遷移がトリガーされるとすぐに有効になり、遷移/アニメーションの完了後に削除されます。このクラスを使用して、遷移を残すためのプロセス時間、遅延、および曲線関数を定義できます。
  6. v-leave-toバージョン2.1.8以降では、離脱遷移の終了状態が定義されています。終了トランジションがトリガーされた後(同時に削除さv-leaveれ、トランジション/アニメーションの完了後に削除されます。

と公式イラスト

image.png

エッセンスを理解したら、おめでとうございます。右上隅のXをクリックするか、次の記事にスワイプします。

↓↓↓まだ霧の中にいます、おめでとうございます。次のコンテンツを読み続けて、上の写真の具体的な意味を理解することができます↓↓↓

2.アニメーション

cssのアニメーションは、アニメーションと@keyframesの組み合わせであり、VUEで記述する必要がありますが、違いは、VUEのクラス名が指定され、VUEが適切なタイミングで適切なアニメーション効果を呼び出すことです。

ビビは何もない、GIFを参照

QQ画面記録20220410121058_.gif

上記のコード(アニメーションの意味を理解するには、コード内のコメントを参照してください):

複数のアニメーションスタイルを区別するために、名前属性がトランジションに追加されます。トランジションに名前属性がない場合、デフォルトのクラス名は.vです。

VUEのmoveBoxのtrue/falseを使用して、divを表示するかどうかを決定します

<button @click="moveBox = !moveBox">showBox</button>
      <transition name="move">
        <div class="moveBox" v-show="moveBox">这里是小M,现在是动画</div>
      </transition>
复制代码
export default {
  name: "School",
  data() {
    return {
      moveBox: true,
    };
  },
};
复制代码
<style scoped>
/* 进场动画 .transition的name-enter(进入)-active */
.move-enter-active {
  animation: move 1s linear;
}
/* 出场动画 .transition的name-leave(离开)-active*/
.move-leave-active {
  animation: move 1s reverse;
}
@keyframes move {
  from {
      /*通过位移,让box消失在最左边 */
    transform: translateX(-100%);
  }
  to {
    transform: translateX(0);
  }
}
​
.moveBox {
  width: 200px;
  height: 50px;
  background-color: antiquewhite;
  padding: 10px;
}
​
</style>
复制代码

3.移行

GIF:

27_.gif

コード:

.v-enter-activeと.v-leave-activeを組み合わせない場合は、ラベルにトランジションスタイルを追加する必要があります

VUEのmoveBox2のtrue/falseを使用して、divを表示するかどうかを決定します

 <button @click="moveBox2 = !moveBox2">showBox</button>
      <transition name="move2">
        <div class="moveBox" v-show="moveBox2" style="transition: 1s linear">
          这里是小M,现在是过渡
        </div>
      </transition>
复制代码
export default {
  name: "School",
  data() {
    return {
      moveBox2: true,
    };
  },
};
复制代码
<style scoped>
/* 进入的起点和离开的终点 样式相同 */
.move2-enter,
.move2-leave-to {
  transform: translateX(-100%);
}
/* 离开的起点和进入的终点 样式相同 */
.move2-enter-to,
.move2-leave {
  transform: translateX(0);
}
​
.moveBox {
  width: 200px;
  height: 50px;
  background-color: antiquewhite;
  padding: 10px;
}
​
</style>
复制代码

上記の4つのクラス名を誰もが理解できるように、浅く絵を描きました。

guodu.png

4.animate.cssサードパーティライブラリ

animate.css公式ウェブサイト

npm経由でインストール、npm install animate.css

糸を介してインストールし、糸はanimate.cssを追加します

インストールが完了したら、それをインポートし、「animate.css」をインポートします

右側はそのクラス名で、直接コピーできます

image.png

を使用する場合は、次の3つの属性を遷移タグに追加する必要があります。

 name="animate__animated animate__bounce"
 enter-active-class="animate__rubberBand"
 leave-active-class="animate__swing"
复制代码

名前が示すように、

  • 最初は固定名です
  • 2番目のアプローチのアニメーションクラス名
  • 3番目の外観のアニメーションクラス名

必要なクラス名を選択してコピーするだけで完了です〜

GIF:

3_.gif

コード:

<button @click="animateBox = !animateBox">showBox</button>
      <transition
        name="animate__animated animate__bounce"
        enter-active-class="animate__rubberBand"
        leave-active-class="animate__swing"
      >
        <div class="moveBox" v-show="animateBox">
          这里是小M,现在是Animate.css
        </div>
      </transition>
复制代码
import "animate.css";
export default {
  name: "School",
  data() {
    return {
      animateBox: true,
    };
  },
};
复制代码
<style scoped>
.moveBox {
  width: 200px;
  height: 50px;
  background-color: antiquewhite;
  padding: 10px;
}
​
</style>
复制代码

今日の共有はここにあります。完全なコードが必要な場合は、コメント領域またはプライベートメッセージで私を打つことができます

おすすめ

転載: juejin.im/post/7084836751860056094