基礎からメモ: Vue.js CH6-p195 基本的なトランジションの使い方
トランジション用クラスの適用
トランジション効果を適用したい要素を<transition>
タグで囲むことで、トランジション用のクラスが適用される。
<div id="app"> <p><button v-on:click="show=!show">切り替え</button></p> <transition> <div v-show="show"> トランジションさせたい要素 </div> </transition> </div>
ボタンクリックで要素の表示・非表示をふわっと切り替える。
var app = new Vue({ el: '#app', data: { show: true } });
あとはそのクラスにCSSスタイルを定義する。
<transition>
タグで囲まれた要素がDOMに追加される際にはenter
、削除される際にはleave
という文字を含んだクラスが追加される。
/* 1秒かけて透明度を遷移 */ .v-enter-active, .v-leave-active { transition: opacity 1s; } /* 見えなくなるときの透明度 */ .v-enter, .v-leave-to { opacity: 0; }
v-show
以外にもv-if
も使える。display:none
で消えて無くなる要のCSSトランジションであっても、animation
プロパティを使い分ける必要が無く、Vue.js がクラス管理を自動で行う。
トランジション用クラスのクラス名変更
デフォルトではv-
プレフィックスが付くトランジション・クラス名は、<transition>
タグにname
属性で名前指定することで、プレフィックスをカスタマイズ可能。
<transition name="demo"> <div v-if="show">トランジションさせたい要素</div> </transition>
.demo-enter-active, .demo-leave-active { transition: opacity 1s; } .demo-enter, .demo-leave-to { opacity: 0; }
今度はv-if
で切り替えているので要素はコメント化されてDOMから消えるが、見た目の動作は変わらない。
初期描画でのトランジション適用
デフォルトでは初期描画時にトランジションは適用されない。appear
属性を付けると、初期描画でもふわっと表示される。
<transition appear> <div v-if="show">トランジションさせたい要素</div> </transition>