【Vue3】transition 组件

1. 基础用法

<template><div class="content"><button @click="flag = !flag">switch</button><transition name="fade"><div v-if="flag" class="box"></div></transition></div>
</template><script setup lang="ts">
import { ref } from 'vue';
const flag = ref<boolean>(true);
</script><style scoped>
.box {height: 200px;width: 200px;background-color: red;
}.fade-enter-from {height: 0;width: 0;
}.fade-enter-active {transition: all 1.5s ease;
}.fade-enter-to {height: 200px;width: 200px;
}.fade-leave-from {width: 200px;height: 200px;/* 花里胡哨的旋转 */transform: rotate(360deg);
}.fade-leave-active {transition: all 2.5s ease;
}.fade-leave-to {width: 0;height: 0;
}</style>

在这里插入图片描述

2. 自定义过渡类名

<template><div class="content"><button @click="flag = !flag">switch</button><transition enter-to-class="e-to" enter-active-class="e-active" enter-from-class="e-from" name="fade"><div v-if="flag" class="box"></div></transition></div>
</template><script setup lang="ts">
import { ref } from 'vue';
const flag = ref<boolean>(true);
</script><style scoped>
.box {height: 200px;width: 200px;background-color: red;
}.e-from {height: 0;width: 0;
}.e-active {transition: all 1.5s ease;
}.e-to {height: 200px;width: 200px;
}.fade-leave-from {width: 200px;height: 200px;/* 花里胡哨的旋转 */transform: rotate(360deg);
}.fade-leave-active {transition: all 2.5s ease;
}.fade-leave-to {width: 0;height: 0;
}</style>

和基础用法中的效果一样。

与基础用法中的区别在于,自定义过渡类名可以结合第三方的库去使用。

比如结合 animate.css

<template><div class="content"><button @click="flag = !flag">switch</button><transition :duration="{enter:200, leave:3000}" leave-active-class="animate__animated animate__bounceOut" enter-active-class="animate__animated animate__bounceIn"><div v-if="flag" class="box"></div></transition></div>
</template><script setup lang="ts">
import { ref } from 'vue';
import 'animate.css';
const flag = ref<boolean>(true);
</script><style scoped>
.box {height: 200px;width: 200px;background-color: red;
}
</style>

其中,:duration="200" 也可以表示 enterleave 的时间都是 200ms

3. 八个生命周期

显示 enter 状态:

<template><div class="content"><button @click="flag = !flag">switch</button><transition @before-enter="EnterFrom" @enter="EnterActive" @after-enter="EnterTo" @enter-cancelled="EnterCancel"><div v-if="flag" class="box"></div></transition></div>
</template><script setup lang="ts">
import { ref } from 'vue';
import 'animate.css';
const flag = ref<boolean>(true);const EnterFrom = (el: Element) => {console.log('进入之前');
}
const EnterActive = (el: Element, done: Function) => {console.log('进入中(过渡曲线)');setTimeout(() => {done()}, 3000)
}
const EnterTo = (el: Element) => {console.log('进入之后(过渡完成)');
}
const EnterCancel = () => {// 过渡没到三秒切换,即为过渡效果被打断console.log('进入取消(过渡效果被打断)');
}
</script><style scoped>
.box {height: 200px;width: 200px;background-color: red;
}
</style>

在这里插入图片描述
隐藏 leave 状态:

<template><div class="content"><button @click="flag = !flag">switch</button><transition @before-enter="EnterFrom" @enter="EnterActive" @after-enter="EnterTo" @enter-cancelled="EnterCancel"@before-leave="LeaveFrom" @leave="LeaveActive" @after-leave="LeaveTo" @leave-cancelled="LeaveCancel"><div v-if="flag" class="box"></div></transition></div>
</template><script setup lang="ts">
import { ref } from 'vue';
import 'animate.css';
const flag = ref<boolean>(true);const EnterFrom = (el: Element) => {console.log('进入之前');
}
const EnterActive = (el: Element, done: Function) => {console.log('进入中(过渡曲线)');setTimeout(() => {done()}, 3000)
}
const EnterTo = (el: Element) => {console.log('进入之后(过渡完成)');
}
const EnterCancel = () => {// 过渡没到三秒切换,即为过渡效果被打断console.log('进入取消(过渡效果被打断)');
}
const LeaveFrom = (el: Element) => {console.log('离开之前');
}
const LeaveActive = (el: Element, done: Function) => {console.log('离开中(过渡曲线)');
}
const LeaveTo = (el: Element) => {console.log('离开之后(过渡完成)');
}
const LeaveCancel = () => {console.log('离开取消(过渡效果被打断)');
}
</script><style scoped>
.box {height: 200px;width: 200px;background-color: red;
}
</style>

在这里插入图片描述
声明周期结合第三方库 gsap 去使用。

<template><div class="content"><button @click="flag = !flag">switch</button><transition @before-enter="EnterFrom" @enter="EnterActive" @leave="LeaveActive" ><div v-if="flag" class="box"></div></transition></div>
</template><script setup lang="ts">
import { ref } from 'vue';
import gsap from 'gsap'
const flag = ref<boolean>(true);const EnterFrom = (el: Element) => {gsap.set(el, {width:0,height:0})
}
const EnterActive = (el: Element, done: gsap.Callback) => {gsap.to(el, {width: 200,height: 200,onComplete: done})
}
const LeaveActive = (el: Element, done: gsap.Callback) => {gsap.to(el, {width: 0,height: 0,onComplete: done})
}
</script><style scoped>
.box {height: 200px;width: 200px;background-color: red;
}
</style>

4. appear

只是在页面刚刚加载的时候进行,也可以结合第三方库去使用。

<template><div class="content"><button @click="flag = !flag">switch</button><transition appearappear-from-class="from"appear-active-class="active"appear-to-class="to"><div v-if="flag" class="box"></div></transition></div>
</template><script setup lang="ts">
import { ref } from 'vue';
import gsap from 'gsap'
const flag = ref<boolean>(true);</script><style scoped>
.box {height: 200px;width: 200px;background-color: red;
}
.from {width: 0;height: 0;
}
.active {transition: all 2s ease;
}
.to {width: 200px;height: 200px;}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/58201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习c++的第6天

#include <iostream> using namespace std; class Animal { public: virtual void perform()0; virtual ~Animal() { cout<<"Animal的析构函数"<<endl; } }; class Lion :public Animal { public : void perform() { cout<<"狮子…

政务大厅人员睡岗离岗玩手机识别算法

人员睡岗离岗玩手机识别算法通过pythonyolo系列网络框架算法模型&#xff0c;人员睡岗离岗玩手机识别算法利用图像识别和行为分析&#xff0c;识别出睡岗、离岗和玩手机等不符合规定的行为&#xff0c;并发出告警信号以提醒相关人员。Python是一种由Guido van Rossum开发的通用…

Unity引擎修改模型顶点色的工具

大家好&#xff0c;我是阿赵。   之前分享过怎样通过MaxScript在3DsMax里面修改模型的顶点色。不过由于很多时候顶点色的编辑需要根据在游戏引擎里面的实际情况和shader的情况来动态调整&#xff0c;所以如果能在引擎里面直接修改模型的顶点色&#xff0c;将会方便很多。于是…

【力扣每日一题】2023.8.24 统计参与通信的服务器

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 题目顾名思义&#xff0c;要我们统计参与通信的服务器&#xff0c;给我们一个二维矩阵&#xff0c;元素为1的位置则表示是一台服务器。 …

lnmp架构-nginx

6.nginx基础配置 证书 重定向&#xff08;80重定向到443&#xff09; 当访问http时 直接到 https 自动索引&#xff1a; 下载方便 Nginx缓存配置 &#xff1a;缓存可以降低网站带宽&#xff0c;加速用户访问 日志轮询 禁用不必要的日志记录 以节省磁盘IO的消耗 监控的信息 监…

Java实现根据关键词搜索1688商品新品数据方法,1688API节课申请指南

要通过1688的API获取商品新品数据&#xff0c;您可以使用1688开放平台提供的接口来实现。以下是一种使用Java编程语言实现的示例&#xff0c;展示如何通过1688开放平台API获取商品新品数据&#xff1a; 首先&#xff0c;确保您已注册成为1688开放平台的开发者&#xff0c;并创…

2.3 【MySQL】命令行和配置文件中启动选项的区别

在命令行上指定的绝大部分启动选项都可以放到配置文件中&#xff0c;但是有一些选项是专门为命令行设计的&#xff0c;比方说defaults-extra-file 、 defaults-file 这样的选项本身就是为了指定配置文件路径的&#xff0c;再放在配置文件中使用就没啥意义了。 如果同一个启动选…

HUT23级训练赛

目录 A - tmn学长的字符串1 B - 帮帮神君先生 C - z学长的猫 D - 这题用来防ak E - 这题考察FFT卷积 F - 这题考察二进制 G - 这题考察高精度 H - 这题考察签到 I - 爱派克斯&#xff0c;启动! J - tmn学长的字符串2 K - 秋奕来买瓜 A - tmn学长的字符串1 思路&#x…

Vue项目中app.js过大,导致web初始化加载过慢问题

1、删除多余不需要的库&#xff1a; npm uninstall xxx 如例如moment库文件是很大的可以直接放到index.html文件直接CDN引入 2、修改/config/index.js配置文件&#xff1a;将productionGzip设置为false ​ 3、设置vue-router懒加载 懒加载配置&#xff1a; ​ 非懒加载配置&…

Spring security报栈溢出几种可能的情况

今天在运行spring security的时候&#xff0c;发现出现了栈溢出的情况&#xff0c;总结可能性如下&#xff1a; 1.UserDetailsService的实现类没有加上Service注入到容器中&#xff0c;导致容器循环寻找UserDetailsService的实现类&#xff0c;最终发生栈溢出的现象。 解决方法…

JavaSE学习——异常

目录 一、异常概述 二、异常的体系结果 二、异常的处理&#xff1a;抓抛模型 三、try-catch-finally的使用 四、throws 异常类型 的使用 五、开发中如何选择使用try-catch-finally还是使用throws&#xff1f; 六、自定义异常 自定义异常步骤&#xff1a; 七、总结&a…

复原20世纪复古修仙游戏

前言 在本教程中&#xff0c;我突发奇想&#xff0c;想做一个复古的修仙游戏&#xff0c;考虑到以前的情怀决定做个古老的躺平修仙游戏 &#x1f4dd;个人主页→数据挖掘博主ZTLJQ的主页 个人推荐python学习系列&#xff1a; ☄️爬虫JS逆向系列专栏 - 爬虫逆向教学 ☄️python…

Elasticsearch 集成---Spark Streaming 框架集成

一.Spark Streaming 框架介绍 Spark Streaming 是 Spark core API 的扩展&#xff0c;支持实时数据流的处理&#xff0c;并且具有可扩展&#xff0c; 高吞吐量&#xff0c;容错的特点。 数据可以从许多来源获取&#xff0c;如 Kafka &#xff0c; Flume &#xff0c; Kin…

全景图像生成算法

摘要 全景图像生成是计算机视觉领域的一个重要研究方向。本文对五种经典的全景图像生成算法进行综述&#xff0c;包括基于相机运动估计的算法、基于特征匹配的算法、基于图像切割的算法、基于多项式拟合的算法和基于深度学习的算法。通过对这些算法的原理、优缺点、适用场景等…

【附源码】Axure RP Pro8.0安装教程|HTML|网页设计

软件下载 软件&#xff1a;Axure版本&#xff1a;8.0语言&#xff1a;简体中文大小&#xff1a;82.53M安装环境&#xff1a;Win11/Win10/Win8/Win7硬件要求&#xff1a;CPU2.0GHz 内存4G(或更高&#xff09;下载通道①百度网盘丨下载链接&#xff1a;https://pan.baidu.com/s/…

部署 ssm 项目到云服务器上(购买云服务器 + 操作远程云服务器 + 服务器中的环境搭建 + 部署项目到服务器)

部署 Web 项目 1、获取 Linux 环境1.1、如何去买一个云服务器1.2、远程操作云服务器1.3、在 Linux 系统中搭建 Java Web 的运行环境。1&#xff09;安装 JDK&#xff08;使用包管理器 yum 来安装&#xff09;2&#xff09; 安装Tomcat3&#xff09;安装 MySQL。 1.4、在云服务器…

【力扣每日一题】2023.8.28 插入区间

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 和昨天的题大差不差&#xff0c;我们仍然是有一堆区间&#xff0c;题目给我们一个新的区间&#xff0c;要我们把新区间插入到原本的区间数…

腾讯云便宜购买指南(腾讯云怎样购买划算)

腾讯云是国内知名的云计算服务商&#xff0c;拥有广泛的应用和用户群体。对于有需要的用户来说&#xff0c;怎样便宜购买腾讯云产品是一个值得关注的问题&#xff0c;下面给大家分享腾讯云便宜购买指南。 腾讯云便宜购买指南&#xff1a;1、新用户专属礼包&#xff1b;2、老用户…

Postman —— postman实现参数化

什么时候会用到参数化 比如&#xff1a;一个模块要用多组不同数据进行测试 验证业务的正确性 Login模块&#xff1a;正确的用户名&#xff0c;密码 成功&#xff1b;错误的用户名&#xff0c;正确的密码 失败 postman实现参数化 在实际的接口测试中&#xff0c;部分参数每…

远程连接虚拟机中ubuntu报错:Network error:Connection refused

ping检测一下虚拟机 可以ping通&#xff0c;说明主机是没问题 #检查ssh是否安装&#xff1a; ps -e |grep ssh发现ssh没有安装 #安装openssh-server sudo apt-get install openssh-server#启动ssh service ssh startps -e |grep ssh检查一下防火墙 #防火墙状态查看 sudo ufw…