01#Vue Transition 过渡:基于 CSS 过渡
过渡的阶段

上图是过渡的 6 个阶段示意图。总体是进入和离开两个阶段,进入和离开又各自有两个阶段。下表格是对每一个阶段的解释:
进入和离开实现过渡效果使用的是 CSS 样式,过度的样式相当于重写覆盖了 Transistion 组件规定好的 6 个类名。
| 阶段 | 作用 |
|---|---|
| v-enter-from | 进入动画的起始状态。在元素插入之前添加,在元素插入完成后的下一帧移除。 |
| v-enter-active | 进入动画的生效状态。应用于整个进入动画阶段。在元素被插入之前添加,在过渡或动画完成之后移除。这个 class 可以被用来定义进入动画的持续时间、延迟与速度曲线类型。 |
| v-enter-to | 进入动画的结束状态。在元素插入完成后的下一帧被添加 (也就是 v-enter-from 被移除的同时),在过渡或动画完成之后移除。 |
| v-leave-from | 离开动画的起始状态。在离开过渡效果被触发时立即添加,在一帧后被移除。 |
| v-leave-active | 离开动画的生效状态。应用于整个离开动画阶段。在离开过渡效果被触发时立即添加,在过渡或动画完成之后移除。这个 class 可以被用来定义离开动画的持续时间、延迟与速度曲线类型。 |
| v-leave-to | 离开动画的结束状态。在一个离开动画被触发后的下一帧被添加 (也就是 v-leave-from 被移除的同时),在过渡或动画完成之后移除。 |
进入和离开
- 进入:进入就是组件(元素)渲染到页面上的过程就是进入阶段;
- 离开:离开就是组件已经被渲染到页面中,由于条件渲染(或切换路由组件或 v-show 是否显示等),这个组件从页面上消失的过程就是离开阶段。
结合上图和表格一起看,x-xx-active 代表着 x-xx-from 和 x-xx-to 之间的持续阶段。比如,组件(元素或标签)进入的阶段是 from 到 to 之间的持续阶段,即 v-enter-active。在这个阶段里,就是要对这个进入动画定义动画持续时间、延迟等。
离开阶段
<template>
<button @click="show = !show">Click</button>
<Transition>
<p v-if="show">Hello Vue!</p>
</Transition>
</template>
<style scoped>
.v-leave-active {
transition: all 0.8s cubic-bezier(1, 0.5, 0.8, 1);
}
.v-leave-from {
transform: translateX(0px);
opacity: 1;
}
.v-leave-to {
transform: translateX(100px);
opacity: 0;
}
</style>
<Transition>内置组件中包裹了一个 p 标签。当我们点击按钮时,若 show 是 false,那么该标签从页面上消失,即离开阶段,也就是 v-leave-to、v-leave-from、v-leave-active。

进入阶段
p 标签从页面中渲染,即进入阶段,也就是 v-enter-to、v-enter-from、v-enter-active。
.v-enter-active {
transition: all 0.8s cubic-bezier(1, 0.5, 0.8, 1);
}
.v-enter-from {
transform: translateX(100px);
opacity: 0;
}
.v-enter-to {
transform: translateX(0px);
opacity: 1;
}

完整的示例

重命名过渡
上面的所有案例都是 v-xx-xx,这个 v 是默认的过渡类名,给<Transition>添加一个 name 属性,对过渡类名进行重命名,替换 v。直接看下面的源码就很轻松地理解了上一句话的意思:

rawProps 代表组件的属性(attribute),组件有 12 个属性。修改 name 就能替换掉默认的类名。修改第 4 ~ 12 个属性就能够完全自定义类名。但每一个对应的阶段所发生的动画效果不会有影响:
<Transition name="fade"></Transition>
.fade-enter-from {
opacity: 0;
}
.fade-enter-to {
opacity: 1;
}
自定义过渡
如果只是对过渡组件添加一个属性 name,只能修改前缀名。如上一小节所述,后缀名也是可以修改的,而只需要在对应的过渡阶段上添加对应的属性(props)即可:
- enter-from-class
- enter-active-class
- enter-to-class
- leave-from-class
- leave-active-class
- leave-to-class
这个功能在你想要在 Vue 的动画机制下集成其他的第三方 CSS 动画库时非常有用:
<Transition
name="custom-classes"
enter-active-class="animate__animated animate__tada"
leave-active-class="animate__animated animate__bounceOutRight">
<p v-if="show">Hello Vue!</p>
</Transition>
01#Vue Transition 过渡:基于 CSS 过渡的更多相关文章
- Vue3 Transition 过渡效果之基于 CSS 过渡
介绍 Transistion 路由组件的切换.动态组件的切换.v-if 条件渲染组件以及 v-show 显示组件原本是没有任何过渡(CSS 动画)效果的.然而,Vue 的内置组件<Transit ...
- Vue过渡:CSS过渡
一 项目结构 二 App.vue <template> <div id="app"> <transition name="fade" ...
- vue.js之过渡效果-css
概述 vuejs的过渡效果可以让我们的页面元素在出现和消失时实现过渡.官方文档这样描述过渡效果的方式: 在 CSS 过渡和动画中自动应用 class 可以配合使用第三方 CSS 动画库,如 Anima ...
- Vue过渡效果之CSS过渡
前面的话 Vue 在插入.更新或者移除 DOM 时,提供多种不同方式的应用过渡效果.本文将从CSS过渡transition.CSS动画animation及配合使用第三方CSS动画库(如animate. ...
- 047——VUE中css过渡动作实例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 深入理解CSS过渡transition
× 目录 [1]定义 [2]过渡属性 [3]持续时间[4]延迟时间[5]时间函数[6]多值[7]阶段[8]触发[9]API 前面的话 通过过渡transition,可以让web前端开发人员不需要jav ...
- CSS过渡动画之transition
O(∩_∩)O~ 这两天在看看CSS的相关内容,关于transition动画感觉很有意思,分享一下. CSS负责给html加效果,自然少不了各种动画,今天介绍一下transition. 概述 看一段比 ...
- css过渡transition属性
一.CSS3 过渡 (一).CSS3过渡简介 CSS3过渡是元素从一种样式逐渐改变为另一种的效果. 实现过渡效果的两个要件: 规定把效果添加到哪个 CSS 属性上 规定效果的时长 定义动画的规则 过渡 ...
- Vue css过渡 和 js 钩子过渡
css过渡 <transition name="slide"> <div v-show="!showChatInput" class=&quo ...
- 记录一下vue transition 过渡各状态()
.slide-fade-enter{ opacity: 0; transform: translateX(100px); /*从哪里开始过渡:在过渡之前我就把位置定义在100px的位置,并 ...
随机推荐
- 周结之json补充、正则re模块、hashlib模块、logging模块
周结 目录 周结 json补充 正则表达式 re模块 第三方模块的下载 request模块 办公自动化openpyxl模块 hashlib加密模块 subprocess模块 logging日志模块 j ...
- 关于RESTful 的使用(实战)
今天在博客园首页看到一篇关于写 RESTful, 大致就是前端定义的一种规范. 原文如下, https://www.cnblogs.com/zhangmumu/p/11936262.html 看了一圈 ...
- vulnhub靶场之GROTESQUE: 3.0.1
准备: 攻击机:虚拟机kali.本机win10. 靶机:Grotesque: 3.0.1,下载地址:https://download.vulnhub.com/grotesque/grotesque3. ...
- win10 WSL2问题解决“WslRegisterDistribution failed with error: 0x800701bc”
win10安装wsl过程报错信息如下: 造成该问题的原因是WSL版本由原来的WSL1升级到WSL2后,内核没有升级,前往微软WSL官网下载安装适用于 x64 计算机的最新 WSL2 Linux 内核更 ...
- 如何用 30s 给面试官讲清楚什么是 Token
引言 前文介绍了 Session-Cookie 的认证过程,简单回顾下基本步骤: 客户端(浏览器)向服务器发送用户名和密码 服务器验证通过后,创建 Session 对象,在 Session 中保存该用 ...
- Asp-Net-Core权限认证
title: Asp.Net Core权限认证 date: 2022-10-27 16:17:52 tags: - .NET 翻了很多的博客,文档,发现asp.net core自带的权限认证还是比较复 ...
- 快速排序——C++左闭右开区间实现
代码 #include<iostream> #include<vector> using namespace std; class Solution { public: //快 ...
- 欠你们的 → k8s 集群搭建,除夕奉上!
开心一刻 有一天,qq收到一个好友申请,验证消息上写的是:哥哥加我,我是妹妹 我以为是性骚扰,就没加,直接回了一句:我喜欢少妇 过了一会儿,姑姑就给我打了个电话:你妹妹qq加你,你怎么不同意,她想问你 ...
- Xmake v2.7.6 发布,新增 Verilog 和 C++ Modules 分发支持
Xmake 是一个基于 Lua 的轻量级跨平台构建工具. 它非常的轻量,没有任何依赖,因为它内置了 Lua 运行时. 它使用 xmake.lua 维护项目构建,相比 makefile/CMakeLis ...
- 2023 年该学点什么技术?「GitHub 热点速览 v.23.03」
春节期间,小鱼干读了一篇万字回顾数据库行业的文章,在文字缝隙里我看见了两个词:AI+ 和数据两个词(当然数据是废话,毕竟是一个数据库的回顾文).在 GitHub 上热点趋势上,可见到 AI+ 的身影, ...