VueとNuxtでアニメーションをするときに調べたところのまとめ。
公式サイトを読みながら、関連するとこをまとめた感じの備忘録。
トランジションクラスってのがあるらしい
参考: Enter/Leave とトランジション一覧 — Vue.js
<transition>
で囲むと、いくつかのクラスを生成してくれるらしい。
そのクラスに対して、
することで、アニメーションをつけていくぽい。
<transition> <p v-if="show">hello</p> </transition>
refs: トランジションクラス | Enter/Leave とトランジション一覧 — Vue.js
<transition name="fade">
にすると、v-
の部分がfade-
のように指定したクラス名にできる。
CSSトランジション/CSSアニメーション
フェード
.fade-enter-active, .fade-leave-active { transition: opacity .5s; } .fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ { opacity: 0; }
フェードしながらスライド
/* enter、 leave アニメーションで異なる間隔やタイミング関数を利用することができます */ .slide-fade-enter-active { transition: all .3s ease; } .slide-fade-leave-active { transition: all .8s cubic-bezier(1.0, 0.5, 0.8, 1.0); } .slide-fade-enter, .slide-fade-leave-to /* .slide-fade-leave-active below version 2.1.8 */ { transform: translateX(10px); opacity: 0; }
バウンスしてイン
.bounce-enter-active { animation: bounce-in .5s; } .bounce-leave-active { animation: bounce-in .5s reverse; } @keyframes bounce-in { 0% { transform: scale(0); } 50% { transform: scale(1.5); } 100% { transform: scale(1); } }
カスタムトランジションクラスでAnimate.cssと連携する
参考: カスタムトランジションクラス | Enter/Leave とトランジション一覧 — Vue.js
enter-active-class
やleave-active-class
などを利用すると、
該当するクラスを指定したものに置き換えることができるらしい。
Animate.cssのクラスを指定すれば、該当のアニメーションを設定できる。
<link href="https://cdn.jsdelivr.net/npm/animate.css@3.5.1" rel="stylesheet" type="text/css"> <div id="example-3"> <button @click="show = !show"> Toggle render </button> <transition name="custom-classes-transition" enter-active-class="animated tada" leave-active-class="animated bounceOutRight" > <p v-if="show">hello</p> </transition> </div>
コンポーネント間のトランジション
リストのトランジション
状態のトランジション
以上!!