Vue transition过渡组件怎么用

    一、vue里面的transition组件

    Vue提供了这个transition组件,可以使得在v-if条件渲染、v-show条件显示、动态组件的时候可以给到任意元素和组件添加了进入或离开元素过渡

    二、transition组件应用CSS过渡

    在应用css过渡的时候,transition组件会在恰当的时候添加、删除元素。我们的transition组件包含了一下6类过渡类别;

    • v-enter:定义在进入过渡的时候,元素在插入之前生效,在元素被插入之后的下一帧溢出。

    • v-enter-active:在定义的时候,在过渡生效的状态,在整个进入过渡的阶段中应用,在元素被插入前生效,在过渡完成之后移除。

    • v-enter-to:定义进入过渡的结束状态,在元素被插入之后下一帧生效,过渡完成后移除。

    • v-leave:定义在离开过渡的开始状态,在离开过渡被触发的时候立刻生效,下一帧就会被移出。

    • v-leave-active:在定义离开的过渡生效时状态。

    • v-leave-to:定义在离开过渡的结束状态。

    我们总结的这6个过渡类,前三个是进入过渡的类,后面三个是离开过渡的类,在进入或者离开的过程中,这里6个过渡类之间相互切换。

    (1)单元数/组件过渡

    在transition组件中只会包含一个元素,在这个元素插入或者删除的时候定义过渡。我们可以通过一行代码段进行了解一下:

    实例代码:

    <!DOCTYPE html><html lang="en"><head>    <title>动态</title></head><body>    <div id="app"><input type="checkbox" v-model="guodu" id="game"/><label for="game">我已经知晓未成年人游戏时间公告</label><transition name="fade">    <p v-if="guodu"><button>开始游戏</button></p></transition>    </div>    <script src="http://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script><script>    var vm = new Vue({        el:"#app",        data:{guodu:false}    });</script><style>    .fade-enter,    .fade-leave-to {        opacity: 0;        transform: translateX(100px);    }    .fade-enter-active,    .fade-leave-active {        transition: all 2s;    }</style></body></html>

    运行结果:我们可以看到但单击选中“我已知晓王者未成年人游戏时间公告”的复选框,然后就会在页面上淡出我们的“开始游戏”,但我们在取消勾选的时候,“开始游戏”就会淡出我们的页面。

    Vue transition过渡组件怎么用

    因为我们的组件设置了name=“fade”,然后可以在定义样式的时候用到fade的前缀,如代码中的.fade-enter等等,这样定义好样式以后,就不用进行手动引入了,transition组件就可以将我们“开始游戏”按钮的元素恰到好处的添加以及删除操作。

    (2)多个元素过渡

    transition组件包含多个元素,这一些元素在插入或者删除的时候就可以定义过渡。我们还是通过代码了解一下,不用大肆修改,其他的代码就不用修改了,我们只要在前面的单个元素部分的章节上面进行修改就可以了。

    实例代码:

    <!DOCTYPE html><html lang="en"><head>    <title>动态</title></head><body>    <div id="app"><input type="checkbox" v-model="DGguodu" id="game"/><label for="game">我已经知晓未成年人游戏时间公告</label><transition name="fade" appear mode="out-in">    <p v-if="DGguodu" key="1"><button>开始游戏</button></p>    <p v-else key="2">先阅读公告后进行游戏</p></transition>    </div>    <script src="http://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script><script>    var vm = new Vue({        el:"#app",        data:{DGguodu:false}    });</script><style>    .fade-enter,    .fade-leave-to {        opacity: 0;        transform: translateX(100px);    }    .fade-enter-active,    .fade-leave-active {        transition: all 2s;    }</style></body></html>

    运行结果:

    Vue transition过渡组件怎么用

    我们看到上面结果,我们可以理解一下,为什么会出现上面这样的结果呢,因为我们将transition设置成了appear模式属性,这个属性用于设置节点在初始渲染的时候也应用过渡的效果。当我们选择复用框的时候,“先阅读…..”这一段话就会淡出,“开始游戏”就会淡入。这是因为我们给mode设置成了out-in,mode属性用来设置过渡模式。

    (3)多个组件过渡

    多个组件的过渡比多个元素过渡更加的简单,因为他不像元素过渡的时候使用到key属性,只需要使用动态组件即可。我们还是通过实例代码的结果来加深了解一下:

    实例代码:

    Vue transition过渡组件怎么用

    (4)列表过渡

    列表过渡使用的是transition-group组件,不同于transition这个组件的是,transition-group这个组件含有更多的属性特性,比如:mode属性不可用、内部只能含有一个key属性、css过渡得嘞将会应用在内部元素、渲染的时候以一个真实的元素呈现。我们通过代码进行了解一下这个列表过渡:

    实例代码:

    <!DOCTYPE html><html lang="en"><head>    <title>列表过渡</title></head><body>    <div id="app">        <h2>2022届大学生新生入学登记:</h2><form>    <p><label for="name">姓名:</label>    <input type="text" v-model="stuInfo.name" id="name"></p>    <p><label for="xuehao">学号:</label>    <input type="xuehao" v-model="stuInfo.xuehao" id="xuehao"></p><p><button @click="add" type="button">添加</button></p></form><transition-group tag="ul" name="fade">    <li v-for="(item,index) in students" :key="item.xuehao">{{index+1}}--{{item.name}}--{{item.xuehao}}<button @click="del(index)">删除</button>    </li></transition-group>    </div>    <script src="http://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script><script>    var vm = new Vue({        el:"#app",        data:{            stuInfo:{xuehao:"  "},            students:[]        },        methods:{            add(){                this.students.push(this.stuInfo);                this.stuInfo={};            },            del(index){this.students.splice(index,1);}        }    });</script><style>    .fade-enter,    .fade-leave-to {        opacity: 0;        transform: translateX(100px);    }    .fade-enter-active,    .fade-leave-active {        transition: all 2s;    }</style></body></html>

    运行结果:

    Vue transition过渡组件怎么用

    我们这里已经将-group的组件设置成了tag=’ul’,这样使得每列表项li元素的key属性值数据中的xuehao的属性值,确保它的属性值是少数的属性。结果如上,效果就不多说了,大家观看即可。

    三、JavaScript钩子

    JavaScript的钩子函数可以使用transition组件里面的v-on指令绑定,transition过渡的周期可以有以下钩子函数:

        <transition v-on:before-enter="beforeEnter"    v-on:enter="enter"    v-on:after-enter="afterenter"    v-on:enter-cancelled="entercanclled"    v-on:before-leave="beforeLeave"    v-on:leave="leave"    v-on:after-leave="afterLeave"    v-on:leave-cancelled="leaveCancelled"    >    </transition>

    实例代码:

    <!DOCTYPE html><html lang="en"><head>    <title>钩子函数实现动画</title></head><body>    <div id="app">        <input type="checkbox" v-model="already" id="ck"/>        <label for="ck">我已经阅读了相关的报名需求</label>        <transition          @before-enter="beforeEnter"         @enter="enter"         @after-enter="after-enter"        >    <p class="show" v-if="already"><button>确定报名</button></p></transition>    </div>    <script src="http://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script><script>    var vm = new Vue({        el:"#app",        data:{already:false        },        methods:{            beforeEnter:function(el){                el.;console.log("beforeEnter");            },            enter:function(el,done) {                el.offsetHeight;                el.style = "opacity:1";                console.log("enter");                done();            },            afterEnter:function(el){                console.log("afterEnter");            }        }    });</script><style>    .show {        transition: all 2s;    }</style></body></html>

    运行结果:

    Vue transition过渡组件怎么用

    我们可以看到单击复选框的时候,“确认报名”就会慢慢的显示出啦,而且取消勾选不会淡出!

    “Vue transition过渡组件怎么用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

    文章标题:Vue transition过渡组件怎么用,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/21201

    (0)
    打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
    亿速云的头像亿速云
    上一篇 2022年8月27日 下午5:03
    下一篇 2022年8月29日 下午11:44

    相关推荐

    • 2024年9款优质CRM系统全方位解析

      文章介绍的工具有:纷享销客、Zoho CRM、八百客、红圈通、简道云、简信CRM、Salesforce、HubSpot CRM、Apptivo。 在选择合适的CRM系统时,许多企业面临着功能繁多、选择困难的痛点。对于中小企业来说,找到一个既能提高客户关系管理效率,又能适应业务扩展的CRM系统尤为重要…

      2024年7月25日
      1600
    • 数据库权限关系图表是什么

      数据库权限关系图表是一种以图表形式展示数据库权限分配和管理的工具。它可以有效地帮助我们理解和管理数据库中的各种权限关系。数据库权限关系图表主要包含以下几个部分:数据对象、用户(或用户组)、权限类型、权限级别、权限状态等。其中,数据对象是权限关系图表中的核心元素,它代表了数据库中的各种数据资源,如表、…

      2024年7月22日
      200
    • 诚信数据库是什么意思

      诚信数据库是一种收集、存储和管理个人或组织诚信信息的系统。它是一种用于评估和管理个人或组织行为的工具,通常由政府、商业组织或者非营利组织进行运营。诚信数据库的主要功能包括:1、评估个人或组织的诚信状况;2、提供决策支持;3、预防和控制风险;4、促进社会信用体系建设。 在这四大功能中,评估个人或组织的…

      2024年7月22日
      400
    • 数据库期末关系代数是什么

      关系代数是一种对关系进行操作的代数系统,是关系模型的数学基础,主要用于从关系数据库中检索数据。其操作包括选择、投影、并集、差集、笛卡尔积、连接、除法等。其中,选择操作是对关系中的元组进行筛选,只保留满足某一条件的元组;投影操作则是从关系中选择出一部分属性构造一个新的关系。 一、选择操作 选择操作是关…

      2024年7月22日
      700
    • mysql建立数据库用什么命令

      在MySQL中,我们使用"CREATE DATABASE"命令来创建数据库。这是一个非常简单且基础的命令,其语法为:CREATE DATABASE 数据库名。在这个命令中,“CREATE DATABASE”是固定的,而“数据库名”则是你要创建的数据库的名称,可以自己设定。例如,如…

      2024年7月22日
      500
    注册PingCode 在线客服
    站长微信
    站长微信
    电话联系

    400-800-1024

    工作日9:30-21:00在线

    分享本页
    返回顶部