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

    相关推荐

    • MySQL中流式查询及游标查询的方式是什么

      一、业务场景 现在业务系统需要从 MySQL 数据库里读取 500w 数据行进行处理 迁移数据 导出数据 批量处理数据 二、罗列一下三种处理方式 常规查询:一次性读取 500w 数据到 JVM 内存中,或者分页读取 流式查询:每次读取一条加载到 JVM 内存进行业务处理 游标查询:和流式一样,通过 …

      2022年8月31日
      1.0K00
    • CDR最新版本透视效果怎么制作

      CDR最新版本透视效果在哪里: 答:在“对象”工具栏下。 点击上方对象,在下拉菜单中就可以找到“透视”了。 CDR最新版本透视制作教程: 1、首先我们使用文本工具添加需要编辑的内容。 2、添加完成后,点击左上角的“对象” 3、然后找到“透视点”,点击其中的“添加透视” 4、添加完成后,就能够获得透视…

      2022年9月24日
      74200
    • jquery如何改变input的value属性

      在jquery中,可以利用val()方法来改变input的value属性;val()方法用于返回或者设置被选元素的value属性,value属性用于规定input元素的值,语法为“$(input元素对象).val(input修改后的value属性值);”。 本文操作环境:windows10系统、jq…

      2022年9月10日
      1.4K00
    • Apple修复iOS和iPadOS中的代码执行漏洞有哪些

      Apple公司本周修复了影响其iOS和iPadOS移动操作系统的多个严重代码执行漏洞。 该IT巨头发布iOS 14.3版本和iPadOS 14.3版本,修复了11个安全漏洞,包括代码执行漏洞。 攻击者可借助恶意字体文件利用其中最严重的漏洞在Apple iPhone和iPad上执行恶意代码。该厂商修复…

      2022年9月10日
      50200
    • 图片怎么转换成word文档

      图片转换成word文档教程: 1、首先下载一个wps并打开。 2、打开后,点击应用中心里的“更多” 3、如果是办公助手,那就点击左下角的图标,如图所示。 4、打开后,在其中找到“图片转文字”工具。 5、随后点击顶部的“添加图片” 6、添加完成后,选择“转化为文档”就可以了。 关于“图片怎么转换成wo…

      2022年9月1日
      91500
    • 怎么用vue实现动态路由

      1、什么是动态路由? 动态路由,动态即不是写死的,是可变的。我们可以根据自己不同的需求加载不同的路由,做到不同的实现及页面的渲染。动态的路由存储可分为两种,一种是将路由存储到前端。另一种则是将路由存储到数据库。动态路由的使用一般结合角色权限控制一起使用。 总结: 1)路由可变,不是写死的,动态加载 …

      2022年9月15日
      92100
    • mysql视图能不能创建索引

      mysql视图不能创建索引。视图是一种虚拟存在的表,并不实际存在于数据库中,它是没有实际行和列的(行和列的数据来自于定义视图的查询中所使用的表);而索引是一种特殊的数据库结构,由数据表中的一列或多列组合而成,因此视图中不能创建索引,没有主键,也不能使用触发器。 本教程操作环境:windows7系统、…

      2022年9月18日
      1.4K00
    • 误用html entities函数引发的漏洞怎么解决

      题目代码如下: 漏洞解析 : 根据题目意思,这里考察的应该是个 xss漏洞 , 漏洞触发点应该在代码中的 第13-14行 。这两行代码的作用是直接输出一个html的 <a> 标签。代码中的 第3-5行 ,foreach循环 对 $_GET 传入的参数进行了处理,但是这里有个问题。我们看下…

      2022年8月30日
      52400
    • mysql如何查询最小值

      在mysql中,可以使用SELECT语句查询指定表中的全部数据,然后利用MIN()函数返回查询结果集中的最小值即可,查询语法“SELECT MIN(指定列名) FROM 表名;”。MIN()函数是用来找出结果集的最小值纪录的,可以返回查询列中的最小值,只需要将要查询的列名作为参数传递给MIN()函数…

      2022年9月21日
      1.4K00
    • Redis集群操作的方法

      基于已有一定基础,这里搭建一个基础版本三主三从,架构如下 1、启动集群 /usr/local/redis‐5.0.3/src/redis‐server /usr/local/redis‐cluster/8001/redis.conf /usr/local/redis‐5.0.3/src/redis‐…

      2022年9月21日
      73300
    注册PingCode 在线客服
    站长微信
    站长微信
    电话联系

    400-800-1024

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

    分享本页
    返回顶部