はじめに
Vue.jsを最近勉強し始めたので学んだ文法などを備忘録としてメモしていこうと思います。
今回はtransition
コンポーネントを用いてアニメーション(簡単なフェードイン、フェードアウト)を作ってみようと思います。
transitionコンポーネント
Vue.jsでアニメーションを実装する際は組み込みコンポーネントであるtransition
コンポーネント、もしくはtransition-group
コンポーネントを用いて実装します。
基本的な使い方
基本的な使い方としては以下のようにアニメーションさせたい部分をtranasition
コンポーネントで囲み、name
属性へ任意の値を入れます。
<template>
<transition name="任意の値">
<div></div>
</transition>
</template>
その後、上記で付けた「任意の値」を用いて以下のクラスを作成します。
- [任意の値]-enter-from
- [任意の値]-enter-active
- [任意の値]-enter-to
- [任意の値]-leave-from
- [任意の値]-enter-active
- [任意の値]-enter-to
以下は「任意の値」をfade
としたときの例です。
<style scoped>
.fade-enter-from {
/* 処理 */
}
.fade-enter-active {
/* 処理 */
}
.fade-enter-to {
/* 処理 */
}
.fade-leave-from {
/* 処理 */
}
.fade-leave-active {
/* 処理 */
}
.fade-leave-to {
/* 処理 */
}
</style>
これらのクラスをトランジションクラス
と言い、それぞれの意味や発火時については以下のドキュメントが参考になります。
以上を用いてサンプルを作ってみる
以上を用いて、サンプルコードを書いてみます。
内容としてはおはようボタン
というボタンをクリックするとGood Morning!
という文字がフェードインしてくるものとします。
サンプルコード
<template>
<button @click="show = !show">おはようボタン</button>
<transition name="fade">
<div v-if="show">{{ greetMessage }}</div>
</transition>
</template>
<script>
export default {
data() {
return {
greetMessage: "Good Morning!",
show: true,
};
},
};
</script>
<style scoped>
.fade-enter-from {
opacity: 0;
}
.fade-enter-active {
transition: opacity 0.5s;
}
.fade-enter-to {
opacity: 1;
}
.fade-leave-from {
opacity: 1;
}
.fade-leave-active {
transition: opacity 0.5s;
}
.fade-leave-to {
opacity: 0;
}
</style>
<template>
<morning></morning>
</template>
<script>
import Morning from "./components/Morning.vue";
export default {
components: {
Morning
},
};
</script>
結果
以下のように挨拶文がフェードイン・フェードアウトしていることが分かります。
おわりに
今回はtransition
コンポーネントを用いたアニメーション作成の学習を行いました。
次回はAnimate.css
を用いて色々なアニメーションを実装してみたいと思います。