过渡的阶段

上图是过渡的 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 被移除的同时),在过渡或动画完成之后移除。

进入和离开

  1. 进入:进入就是组件(元素)渲染到页面上的过程就是进入阶段;
  2. 离开:离开就是组件已经被渲染到页面中,由于条件渲染(或切换路由组件或 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)即可:

  1. enter-from-class
  2. enter-active-class
  3. enter-to-class
  4. leave-from-class
  5. leave-active-class
  6. 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 过渡的更多相关文章

  1. Vue3 Transition 过渡效果之基于 CSS 过渡

    介绍 Transistion 路由组件的切换.动态组件的切换.v-if 条件渲染组件以及 v-show 显示组件原本是没有任何过渡(CSS 动画)效果的.然而,Vue 的内置组件<Transit ...

  2. Vue过渡:CSS过渡

    一 项目结构 二 App.vue <template> <div id="app"> <transition name="fade" ...

  3. vue.js之过渡效果-css

    概述 vuejs的过渡效果可以让我们的页面元素在出现和消失时实现过渡.官方文档这样描述过渡效果的方式: 在 CSS 过渡和动画中自动应用 class 可以配合使用第三方 CSS 动画库,如 Anima ...

  4. Vue过渡效果之CSS过渡

    前面的话 Vue 在插入.更新或者移除 DOM 时,提供多种不同方式的应用过渡效果.本文将从CSS过渡transition.CSS动画animation及配合使用第三方CSS动画库(如animate. ...

  5. 047——VUE中css过渡动作实例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 深入理解CSS过渡transition

    × 目录 [1]定义 [2]过渡属性 [3]持续时间[4]延迟时间[5]时间函数[6]多值[7]阶段[8]触发[9]API 前面的话 通过过渡transition,可以让web前端开发人员不需要jav ...

  7. CSS过渡动画之transition

    O(∩_∩)O~ 这两天在看看CSS的相关内容,关于transition动画感觉很有意思,分享一下. CSS负责给html加效果,自然少不了各种动画,今天介绍一下transition. 概述 看一段比 ...

  8. css过渡transition属性

    一.CSS3 过渡 (一).CSS3过渡简介 CSS3过渡是元素从一种样式逐渐改变为另一种的效果. 实现过渡效果的两个要件: 规定把效果添加到哪个 CSS 属性上 规定效果的时长 定义动画的规则 过渡 ...

  9. Vue css过渡 和 js 钩子过渡

    css过渡 <transition name="slide"> <div v-show="!showChatInput" class=&quo ...

  10. 记录一下vue transition 过渡各状态()

    .slide-fade-enter{   opacity: 0;   transform: translateX(100px);   /*从哪里开始过渡:在过渡之前我就把位置定义在100px的位置,并 ...

随机推荐

  1. Jenkins基本配置

    1.Configure System (系统设置) 在系统设置这里,只需要设置最后面的一项,配置远程服务器地址,即代码最终运行的服务器地址信息,当然这里是可以配置多台远程Linux服务器的,配置完成后 ...

  2. Vue快速上门(1)-基础知识图文版

    VUE家族系列: Vue快速上门(1)-基础知识 Vue快速上门(2)-模板语法 Vue快速上门(3)-组件与复用 01.基本概念 1.1.先了解下MVVM VUE是基于MVVM思想实现的,那什么是M ...

  3. 记一次 .NET 某安全生产信息系统 CPU爆高分析

    一:背景 1.讲故事 今天是的第四天,头终于不巨疼了,写文章已经没什么问题,赶紧爬起来写. 这个月初有位朋友找到我,说他的程序出现了CPU爆高,让我帮忙看下怎么回事,简单分析了下有两点比较有意思. 这 ...

  4. java中继承的内存分析

    本文主要讲述java中继承的内存分析. 示例1,代码如下: public class EncapsulationTest { public static void main(String[] args ...

  5. virtualenv 配置(windows)

    1.在线安装 virtualenv pip install virtualenv 2.离线安装 下载virtualenv包,解压并进入setup.py所在文件夹中 python setup.py in ...

  6. python 水仙花数、菱形、99乘法表、直角三角形

    空心菱形 i = 1 while i <= 3: # 控制行数 j = 1 k = 1 while j <= 3-i: # 控制空格数量 print(" ", end= ...

  7. 三台服务器使用docker搭建redis一主二从三哨兵,概念-搭建-整合springboot

    一.前言 redis在我们企业级开发中是很常见的,但是单个redis不能保证我们的稳定使用,所以我们要建立一个集群. redis有两种高可用的方案: High availability with Re ...

  8. [python] 基于wordcloud库绘制词云图

    词云Wordcloud是文本数据的一种可视化表示方式.它通过设置不同的字体大小或颜色来表现每个术语的重要性.词云在社交媒体中被广泛使用,因为它能够让读者快速感知最突出的术语.然而,词云的输出结果没有统 ...

  9. Android applink 踩坑指南

    Android applink 踩坑指南 原理 接入步骤 将链接与activity关联起来 加入meta data 生成身份验证JSON 真机测试 结论 官方文档 原理 与url scheme不同的地 ...

  10. [Leetcode]移除链表元素

    题目 代码 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * Li ...