1. 程式人生 > >vue——32-動畫-列表動畫(transition-group)

vue——32-動畫-列表動畫(transition-group)

在這裡插入圖片描述
css

        li {
            border: 1px dashed red;
            margin: 5px;
            line-height: 35px;
            list-style: none;
            font-size: 20px;
            width: 400px;
            text-align: center;
        }

        li:hover {
            background-color: orange;
            transition
: all 1s ease; } .v-enter, .v-leave-to { opacity: 0; transform: translateX(150px); } .v-enter-active, .v-leave-active { transition: all 1s ease; } /* 下面的 .v-move 和 .v-leave-active 配合使用, 能夠實現列表後續的元素,漸漸飄上的效果(一般常用組合)*/
.v-move { transition: all 1s ease; } .v-leave-active { position: absolute; }

body

<div id="app">
    <div>
        <label for="id">Id:
            <input type="text" id="id" v-model="id">
        </label>
        <
label
for="name">
Name: <input type="text" id="name" v-model="name"> </label> <input type="button" value="新增" @click="add()"> </div> <!--<ul>--> <!-- 在實現列表過度的時候,如果需要過度元素,是通過 v-for 迴圈渲染出來的, 不能使用transition 包裹,需要使用 transition-group --> <!-- 如果要為 v-for 迴圈建立的元素設定動畫,必須為每一個元素設定 :key 屬性 --> <!-- 給 transition-group 新增 appear 屬性,實現頁面剛展示入場時候的效果 --> <!-- 通過為 transition-group 元素,設定 tag 屬性,指定 transition-group 渲染為指定標籤,如果不指定 tag 屬性,預設渲染為 span 標籤--> <!-- 通過 mode(模式) = "out-in" 實現前一個動畫結束再進行下一個動畫,一般用於動畫切換--> <transition-group appear tag="ul"> <li v-for="(item,key) in list" :key="item.id" @click="del(key)" v-cloak> {{item.id}} --> {{item.name}} </li> </transition-group> <!--</ul>--> </div> <script> window.onload = function () { let vm = new Vue({ el: '#app', data: { id: '', name: '', list: [ {id: 1, name: 'bob'}, {id: 2, name: 'tom'}, {id: 3, name: 'lucy'}, {id: 4, name: 'john'} ] }, methods: { add() { this.list.push({id: this.id, name: this.name}) this.id = this.name = ''; }, del(key) { this.list.splice(key, 1); } } }); } </script>