Vue.javascript源码分析(二十九)高级应用transition-group组件详解

最美丽的风景皆因你的存在而彰显不同。如果你不出去走走,你会以为这就是全世界。

对于过度动画如果要同时渲染整个列表时,可以使用transition-group组件。

transition-group组件的props和transition组件类似,不同点是transition-group组件的props是没有mode属性的,另外多了以下两个props tag    标签名 moveClass 新增/移除元素时的过渡 ;如果未指定则默认会拼凑出name+"-move"这个格式的,一般很少用到,比较复杂的动画可以该接口实现

不同于transition组件,transition-group组件它会以一个真实元素呈现,默认为一个<span>,我们也可以通过tag特性更换为其他元素,每个总都需要提供唯一的key属性值。以Vue官网的某例子为例,如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="vue.js"></script>
</head>
<body>
    <style>
        .list-item{display: inline-block;margin-right: 10px;}
        .list-enter-active,.list-leave-active{transition: all 1s;}
        .list-enter,.list-leave-to{opacity: 0;transform: translateY(30px);}
    </style>
    <div id="d">
        <button v-on:click='add'>add</button><button v-on:click='remove'>remove</button>
        <transition-group tag="p" name="list" >
            <span v-for="no in Nums" :key="no" class="list-item">{{no}}</span>
        </transition-group>
    </div>
    <script>
 Vue.config.productionTip=false;
 Vue.config.devtools=false;
        var app = new Vue({
            el:'#d',
            methods:{
                randomIndex:function(){return Math.floor(Math.random()*this.Nums.length)},
                add:function(){this.Nums.splice(this.randomIndex(),0,this.nextVal++)},
                remove:function(){this.Nums.splice(this.randomIndex(),1)}
            },
            data:{Nums:[1,2,3,4,5,6,7,8,9],nextVal:10}
        })
    </script>
</body>
</html>

到此这篇关于Vue.javascript源码分析(二十九)高级应用transition-group组件详解就介绍到这了。给自己一份坚强,擦干;给自己一份,不卑不亢;给自己一份洒脱,悠然前行。轻轻品,静静藏。为了看,我来到这世上;为了与阳光同行,我笑对忧伤。更多相关Vue.javascript源码分析(二十九)高级应用transition-group组件详解内容请查看相关栏目,小编编辑不易,再次感谢大家的支持!