ログイン
問題4

transitionを使ってアニメーションを追加しよう!

アイコン画像

問題4:transitionを使ってアニメーションを追加しよう!

これまで作ってきたアプリの画面にアニメーションを加えていこう。
以下の見本動画は`transition-group`というタグを使って
実現させているぞ。リストクリックしたら右へスライドして消えていく仕様になっている。

エディターのアイコンあらかじめエディタに書くコード

                --- listItem.vue
<template>
  <div>
    <transition name="slide-fade">
      <li v-if="show" @click="show = !show" class="list-item">{{ dream.name }}</li>
    </transition>
  </div>
</template>
<script>
</script>
<style>
  .list-item {
    width: 100%;
    padding: 8px;
    margin-bottom: 10px;
    list-style: none;
    border-left: 5px solid #40b983;
    border-bottom: 1px solid #40b983;
    border-top:  1px solid #40b983;
    border-right: 1px solid #40b983;
    font-weight: 700;
    cursor: pointer;
  }
  .list-item:hover {
    background: #40b983;
    opacity: .8;
    color: #fff;
  }
</style>
¥Vue¥
              

ブラウザのアイコン期待する画面

タグアイコン解答ソースコード

              --- ListItem.vue
<script>
export default {
  props: {
    dream: {
      type: Object,
    }
  },
  data() {
    return {
      show: true,
    }
  }
}
</script>
<style>
  .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 {
    transform: translateX(500px);
    opacity: 0;
  }
</style>
¥Vue¥
            

コメントのアイコン解説

アニメーションを付けたい部分をtransitionで囲ってname属性をつける。このname属性はなんでもいい。
cssを見てもらったらわかると思うが、name属性で指定した名前+`-enter-active`や`-leave-active`でアニメーションをどう動かすかを決めいている。
ログインして解答を見る
Vueを学ぶなら現役エンジニア監修「甲賀コース」
キャンペーン

閉じる