1
0

More than 3 years have passed since last update.

BootstrapのCardにtransitionをかける方法

Last updated at Posted at 2020-12-03

はじめに

Vue.jsの便利機能の一つのtransition。今回はそちらを使ってBootstrapのカードを並べるタイプの表示に対してtransitionをかけていきたいと思います。

具体的なシチュエーション

image.png

ソースコード

song.vue
<div class="container">
    <transition-group class="row"> <!--ここをdivから変える-->
        <div class="card border-info col-lg-4 col-sm-6" v-for="item in items" :key="item.Artist+item.Title">
             <div class="card-body">
                <h2 class="card-title">{{ item.Title }}</h2>
                <ul class="list-group list-group-flush">
                    <li class="list-group-item">アーティスト名:{{ item.Artist }}</li>
                    <li class="list-group-item">ボーカル: {{ item.Vocal.join('、') }}</li>
                    <li class="list-group-item">作詞:{{ item.Word.join('、') }}</li>
                    <li class="list-group-item">作曲:{{ item.Composer.join('、') }}</li>
                    <li class="list-group-item">編曲:{{ item.Arranger.join('、') }}</li>
                    <li class="list-group-item">作品:{{ item.TieUp[0] }}</li>
                    <li class="list-group-item">ブランド:{{ item.Brand[0] }}</li>
                    <li class="list-group-item">ジャンル: {{ item.Genre.join('、') }}</li>
                </ul>
            </div>
        </div>
    </transition-group> <!--ここをdivから変える-->
 </div>
song.css
.v-enter-active, .v-leave-active {
  transition: opacity .5s;
} /*遷移に0.5秒かける*/

.v-enter, .v-leave-to{
  opacity: 0;
} /*現れる時の最初と消える時の最後のopacityを0に指定*/

簡単な解説

ぼくが最初にハマってしまったのは既存のdivタグをそのままにしてtransition-groupタグをいれようとしてしまったところです。エラーこそは出ませんがカード自体が表示されなくなります。classがrowのところを指定してあげるのが一番いい感じなのかなと個人的に思います。あとtransition-group使うときはkeyを必ず設定してください。ちゃんと表示されません。

次にcssについてです。本当はここで指定した4つ以外にも.v-enter-toと.v-leaveを指定しないといけないのですがどちらもopacityが1なのでここでは省略できます。ちなみにそれぞれのCSSクラスの意味をまとめると次のような感じです。

  • v-enter : 表示する時の最初の状態
  • v-enter-active : 表示するときの遷移の設定
  • v-enter-to : 表示する時の最後の状態
  • v-leave : 消すときの最初の状態
  • v-leave-active : 消すときの遷移の設定
  • v-leave-to : 消すときの最後の状態

また今回はnameを指定せずにデフォルトのvを使いましたが、できればnameは指定した方がいいと思います。transition-groupタグでnameを指定して、その時に指定したnameをcssのvと入れ替えてください。

参考文献

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0