美文网首页
动画4——使用transition-grounp

动画4——使用transition-grounp

作者: 小丘啦啦啦 | 来源:发表于2019-04-19 09:40 被阅读0次

一、列表元素的过渡
transition适用于单个节点的动画;如果要渲染列表,例如v-for,则需要使用transition-group元素。

  • 不同于transitiontransition-group会以一个真是的标签呈现,默认<span>标签,可以通过tag属性改变。
  • 过渡模式不可用,因为不再切换特定元素。
  • 内部元素总视需要唯一的key值。
  • 提供了新的过渡类特性v-move,用于设置周围元素的平滑过渡,对于设置过渡的切换时机和过渡曲线非常有用。(否则,当添加或移除元素时,周围元素会瞬间切换到新的布局位置)
    需要配合v-leave-active过渡类设置position: absolute;使用。
  • 可以给transition-group元素添加appear属性实现页面刚刚初始数据展示时的入场效果。

二、实例
实现初始数据展示入场效果,添加列表动画,删除周围元素平滑过渡。

<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
        <script src="https://cdn.staticfile.org/vue-resource/1.5.1/vue-resource.min.js"></script>
        <style>
            li{
                border: 1px dashed darkgrey;
                padding: 10px;
                font-size: 12px;
                margin: 5px;
                width: 200px;
            }
            li:hover{
                background-color: pink;
                transition: all 1s ease;
            }
            .v-enter,.v-leave-to{
                opacity: 0;
                transform:translateY(100px) ;
            }
            .v-enter-active,.v-leave-active{
                transition: all 0.5s ease;
            }
            .v-move{
                transition: all 0.5s ease;
            }
            .v-leave-active{
                position: absolute;
            }
        </style>
    </head>
    <body>
        <div id="app">
            <input type="button" value="添加" @click="add" />
            <input type="test" v-model="id" placeholder="id" />
            <input type="test" v-model="name" placeholder="名字" />

            
            <transition-group appear tag="ul">
                <li v-for="(item,i) in list" :key="item.id" @click="del(i)">
                    {{item.id}}----{{item.name}}
                </li>
            </transition-group>

        </div>
        <script>
            var vm = new Vue({
                el: "#app",
                data: {
                    id: '',
                    name: '',
                    list: [{
                        id: '1',
                        name: '初始1',
                    }, {
                        id: '2',
                        name: '初始2'
                    }]
                },
                methods: {
                    add() {
                        const obj = {
                            id: this.id,
                            name: this.name
                        };
                        this.list.push(obj);
                    },
                    del(i) {
                        this.list.splice(i, 1);
                    }
                }
            });
        </script>
    </body>
</html>

相关文章

网友评论

      本文标题:动画4——使用transition-grounp

      本文链接:https://www.haomeiwen.com/subject/viyzwqtx.html