vue中過度動畫之列表添加刪除動畫實現


思路:

  1. 完成頁面結構及 添加數據和刪除數據邏輯
  2. 包裹列表使用transition-group標簽,將該有的類名加上。這樣寫了效果是有了,但是過渡比較生硬,如何讓它平滑一點?
  3. 加v-move類名
<style>
      .slide-enter, .slide-leave-to {

      }
      .slide-leave, .slide-enter-to {

      }
      .slide-enter-active {
        animation: slide-in 2s ease-out;
      }
      .slide-leave-active {
        animation: slide-out 2s ease-out;
        /* 這里在離開的時候,需要讓這個元素脫離標准流,不然后面的元素動不了 */
        position: absolute;
      }
      /* 想要讓動畫平滑一點,需要加v-move的類名,v-可以別name的值 */
      .slide-move {
        transition: all 2s;
      }

      @keyframes slide-in {
        from {
          transform: translateY(50px)
        }
        to {
          transform: translateY(0)
        }
      }
      @keyframes slide-out {
        from {
          transform: translateY(0)
        }
        to {
          transform: translateY(50px)
        }
      }
</style>
<body>
  <div id="app">
    <button @click="addItem">添加數據項</button>
    <ul>
      <transition-group name="slide">
        <li v-for="(item, index) in list" :key="item" @click="removeItem(index)">{{item}}</li>
      </transition-group>
    </ul>
  </div>
  <script>
      var vm = new Vue({
        el: '#app',
        data: {
          list: [1, 2, 3, 4]
        },
        methods: {
          addItem() {
            this.list.push(this.list[this.list.length-1] + 1)
          },
          removeItem(idx) {
            this.list.splice(idx, 1)
          }
        }
      })
  </script>
</body>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM