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>

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

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

.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标签以后,其实里面就会解析成这样:code

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

相关文章
相关标签/搜索