Vue中的列表过渡

有这样一个代码需求:实现一个点击按钮,然后在列表中添加并显示内容

<div id="root">
        <div v-for="(item,index) of list" :key="item.id">
            {{item.title}}
        </div>
        <button @click="handleBtnClick">Add</button>
    </div>
    <script>
        var count = 0
        var vm = new Vue({
            el: "#root",
            data: {
                list: []
            },
            methods: {
                handleBtnClick: function() {
                    this.list.push({
                        id: count++,
                        title: 'hello world'
                    })
                }
            }
        })
    </script>

怎么在这个代码的基础上实现列表过渡的效果呢?

需要使用<transition-group>标签包裹需要过渡的元素,然后添加动画样式:

.v-enter,
.v-leave-to {
     opacity: 0;
}
        
.v-enter-active,
.v-leave-active {
     transition: opacity 1s;
}

<div id="root">
     <transition-group>
          <div v-for="(item,index) of list" :key="item.id">
              {{item.title}}
          </div>
     </transition-group>

     <button @click="handleBtnClick">Add</button>
</div>

原理:<transition-group> 相当于在每一个列表项外面加了一层 <transition>,当你在外部加了transiton-group标签之后,其实里面就会解析成这样:

转换成了对单个元素的过渡动画

posted @ 2021-02-08 20:27  小风车吱呀转  阅读(136)  评论(0编辑  收藏  举报