vue3【详解】内置组件 Transition

用于给元素或组件进入和离开页面添加过渡动画

使用场景

  • v-if 切换

    <button @click="show = !show">Toggle</button>
    <Transition><p v-if="show">hello</p>
    </Transition>
    
  • v-show 切换

  • 动态组件切换

    <Transition name="fade" mode="out-in"><component :is="activeComponent"></component>
    </Transition>
    
  • 改变 key

    <script setup>
    import { ref } from 'vue';
    const count = ref(0);setInterval(() => count.value++, 1000);
    </script><template><Transition><span :key="count">{{ count }}</span></Transition>
    </template>
    

默认的过渡动画

.v-enter-active,
.v-leave-active {transition: opacity 0.5s ease;
}.v-enter-from,
.v-leave-to {opacity: 0;
}

此默认 CSS 描述了以下 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 被移除的同时),在过渡或动画完成之后移除。

设置初次渲染时过渡 appear

添加 appear 属性即可。

<Transition appear>...
</Transition>

设置过渡动画时长 duration

<Transition :duration="550">...</Transition>

可以用对象的形式传入,分开指定进入和离开所需的时间:

<Transition :duration="{ enter: 500, leave: 800 }">...</Transition>

设置过渡模式 mode

<Transition mode="out-in">...
</Transition>

mode 属性的值有:

  • out-in 先执行离开动画,然后在其完成之后再执行元素的进入动画。
  • in-out (不常用)先执行进入动画,然后在其完成之后再执行元素的离开动画。

自定义过渡动画名称 name

添加属性 name,可自定义过渡动画名称,代替默认的 v

<Transition name="fade">...
</Transition>

此时需自行添加以下 css

.fade-enter-active,
.fade-leave-active {transition: opacity 0.5s ease;
}.fade-enter-from,
.fade-leave-to {opacity: 0;
}

对内嵌元素添加过渡

<Transition name="nested"><div v-if="show" class="outer"><div class="inner">Hello</div></div>
</Transition>
/* 应用于嵌套元素的规则 */
.nested-enter-active .inner,
.nested-leave-active .inner {transition: all 0.3s ease-in-out;
}.nested-enter-from .inner,
.nested-leave-to .inner {transform: translateX(30px);opacity: 0;
}/* ... 省略了其他必要的 CSS */

自定义过渡动画类名

添加属性 enter-active-classleave-active-class ,可自定义过渡动画类名(方便使用第三方的动画库,如 Animate.css)

<!-- 假设你已经在页面中引入了 Animate.css -->
<Transitionenter-active-class="animate__animated animate__tada"leave-active-class="animate__animated animate__bounceOutRight"
><p v-if="show">hello</p>
</Transition>

改用 JS 实现过渡动画

  1. 添加属性 :css="false"
  2. 添加相关事件的钩子函数

相关的 JS 动画库有

  • gsap
  • motion
  • animejs
<Transition@before-enter="onBeforeEnter"@enter="onEnter"@after-enter="onAfterEnter"@enter-cancelled="onEnterCancelled"@before-leave="onBeforeLeave"@leave="onLeave"@after-leave="onAfterLeave"@leave-cancelled="onLeaveCancelled"
><!-- ... -->
</Transition>
// 在元素被插入到 DOM 之前被调用
// 用这个来设置元素的 "enter-from" 状态
function onBeforeEnter(el) {}// 在元素被插入到 DOM 之后的下一帧被调用
// 用这个来开始进入动画
function onEnter(el, done) {// 调用回调函数 done 表示过渡结束// 如果与 CSS 结合使用,则这个回调是可选参数done()
}// 当进入过渡完成时调用。
function onAfterEnter(el) {}// 当进入过渡在完成之前被取消时调用
function onEnterCancelled(el) {}// 在 leave 钩子之前调用
// 大多数时候,你应该只会用到 leave 钩子
function onBeforeLeave(el) {}// 在离开过渡开始时调用
// 用这个来开始离开动画
function onLeave(el, done) {// 调用回调函数 done 表示过渡结束// 如果与 CSS 结合使用,则这个回调是可选参数done()
}// 在离开过渡完成、
// 且元素已从 DOM 中移除时调用
function onAfterLeave(el) {}// 仅在 v-show 过渡中可用
function onLeaveCancelled(el) {}

注意事项

  • 当同时使用了动画和过渡时,需用 type 属性显式声明组件 Transition 关注哪种动画,type 的值为 animation 或 transition

    <Transition type="animation">...</Transition>
    

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Adobe国际认证详解-ae视频剪辑

AE视频剪辑&#xff0c;即After Effects视频剪辑&#xff0c;是数字媒体时代的一项重要技能。AE不仅提供了丰富的特效和动画功能&#xff0c;还让视频剪辑变得更加高效和有趣。对于想要在职场上脱颖而出、拓宽就业机遇的人来说&#xff0c;掌握AE视频剪辑技能无疑是一个明智的选…

小程序基础总结

组件标签 html wxml div span img a view text image navigator css wxss rpx 小程序响应式单位,在不同设备上自动进行换算 js app.js 项目入口文件 ,通过App()函数启动整个小程序 页面的 .js ,页面入口文件,通过Page()函数创建运行页面 通信模型 渲染层 逻辑层 第三方…

Q*s‘ AGI

最近这段时间&#xff0c;不论是产业界还是学术界&#xff0c;均发表了不少围绕「Q*」的探索和实验&#xff0c;同时随着OpenAI的「草莓QQ糖(皮一下)」计划的曝光与训练的进行&#xff0c;似乎又为当前围绕Q*、AGI、AI4S等领域带来了不少业界争鸣和讨论&#xff0c;而且周围更多…

Electron案例解析——切换主题颜色的案例

效果图 核心 Electron的 nativeTheme.themeSource属性&#xff0c;值是string。有三个参数&#xff1a;system, light 和 dark&#xff0c;用来覆盖、重写Chromium内部的相应的值 Election的api描述值nativeTheme.themeSource被用来覆盖、重写Chromium内部的相应的值system, …

谷粒商城实战笔记-45-商品服务-API-三级分类-查询-递归树形结构数据获取

文章目录 一&#xff0c;准备工作1&#xff0c;启动虚拟机2&#xff0c;启动mysql3&#xff0c;执行MySQL脚本插入分类数据4&#xff0c;关于三级分类 二&#xff0c;Controller层新增接口三&#xff0c;Service层新增接口1&#xff0c;代码实现2&#xff0c;测试 从这一节开始…

实验二 FPGA使用Verilog HDL设计分频器

实验目的 掌握使用Vivado软件进行设计、综合、仿真、布线的方法。掌握FPGA程序的下载方法。掌握使用Verilog HDL设计分频器的方法。 实验要求 采用Verilog HDL语言设计分频器&#xff0c;实现以下功能&#xff1a; 输出时钟周期为1s的分频时钟信号&#xff1b;通过LED灯或数码…

15个在线地图瓦片URL分享

数据是GIS的血液&#xff0c;我们在《10个在线地图瓦片URL分享》一文中为你分享了10个地图瓦片URL链接&#xff0c;现在再为你分享5个在线的瓦片地图URL图源&#xff01; 该在线地图瓦片URL支持在GIS软件或开发平台进行调用&#xff0c;比如ArcGIS、QGIS、Global Mapper、Open…

PowerBI宝藏级资料分享推荐

有同学留言想学习PowerBI&#xff0c;求推荐可以免费学习的网站&#xff0c;最好是比较系统的&#xff0c;不要那种广告或诱导付费才能学习的网站。 这样的学习网站确实有&#xff0c;主打大家要求的免费。 推荐大家几个我一直私藏的宝藏级&#xff0c;学习和使用资料网站. …

《经典图论算法》贝尔曼-福特算法(Bellman-Ford)

摘要&#xff1a; 1&#xff0c;Bellman-Ford 算法的介绍 2&#xff0c;Bellman-Ford 算法为什么可以解决有负权边的图 3&#xff0c;Bellman-Ford 算法为什么不能解决有负权回路的图 4&#xff0c;Bellman-Ford 算法的代码实现和负权回路的判断 5&#xff0c;Bellman-Ford 算法…

测试——Selenium

内容大纲: 什么是自动化测试 什么是Selenium Selenium工作原理 Selenium环境搭建 Selenium API 目录 1. 什么是自动化测试 2. 什么是Selenium 3. Selenium工作原理 4. Selenium环境搭建(java) 5. Selenium API 5.1 定位元素 5.1.1 CSS选择器定位元素 5.1.2 XPath定位元…

# Redis 入门到精通(十一)-- 集群

Redis 入门到精通&#xff08;十一&#xff09;-- 集群 一、redis 集群 – 集群简介 1、现状问题&#xff1a;业务发展过程中遇到的峰值瓶颈 redis提供的服务OPS可以达到10万/秒&#xff0c;当前业务OPS已经达到10万/秒。内存单机容量达到256G&#xff0c;当前业务需求内存容…

【机器学习】模型验证曲线(Validation Curves)解析

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 模型验证曲线(Validation Curves)解析什么是模型验证曲线?模型验证曲线的解读模…

微信答题小程序产品研发-确定产品的定位

盛夏蝉鸣起&#xff0c;荷风香十里。我前面说过&#xff0c;我决意仿一款答题小程序&#xff0c;所以我做了大量的调研。 答题小程序软件产品开发不仅仅是写代码这一环&#xff0c;它包含从需求调研、分析与构思、设计到开发、测试再到部署上线一系列复杂过程。 在软件开发中…

增材制造与智能制造关系

在撰写的增材制造技术与装备书籍中有着明确的描述&#xff0c;增材制造是智能制造的典型范例&#xff0c;是智能制造“类”的实例化过程。这种借助于计算机编程面向对象思想的解释可以更全面的理解增材制造和智能制造的关系。增材制造实例具备了智能制造类的属性&#xff0c;智…

数据库中字符串连接符的使用

在数据库操作中&#xff0c;字符串处理是日常工作中不可或缺的一部分。无论是构建动态查询&#xff0c;还是处理数据输出&#xff0c;字符串连接符的使用都是至关重要的。那么&#xff0c;如何正确地使用字符串连接符&#xff0c;才能高效地进行字符串操作呢&#xff1f; 在数据…

网站安全-CDN篇

为了保证 CDN 不被恶意刷流量导致高额账单&#xff0c;可以对 CDN 做防护措施&#xff0c;或使用高防 CDN。 ‍ ‍ ‍ 普通 CDN 普通 CDN 受到恶意攻击&#xff0c;也是会计费的。目前国内大部分 CDN 厂商都是这样的套路&#xff1a;即使你的 CDN 流量用完了&#xff0c;还…

Pyside6绘制折线图并计算面积

Pyside6绘制折线图并计算面积 import sys import random from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QMainWindow from PySide6.QtCore import Qt, QRectF, QPointF, Signal from PySide6.QtGui import QPainter, QPen, QColor, QMouseEventclass P…

微服务分布式事务

1、分布式事务是什么&#xff1f; 微服务架构中的分布式事务是指在多个服务实例之间保持数据一致性的机制。由于微服务通常涉及将业务逻辑拆分成独立的服务&#xff0c;每个服务可能有自己的数据库&#xff0c;因此当一个业务操作需要跨多个服务进行时&#xff0c;确保所有服务…

【知识】PyTorch种两种CUDA时间测量的方法对比

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 在PyTorch中使用CUDA进行时间测量时&#xff0c;以下两者各有优缺点&#xff1a; torch.cuda.current_stream(self._device).synchronize() torch.cud…

泰迪智能科技携广州华商学院共讨产教融合,校企合作

7月19日&#xff0c;广州华商学院人工智能学院的领导及骨干教师一行莅临泰迪智能科技参观交流&#xff0c;广州华商学院人工智能学院院长助理杨本胜、院长助理洪绍勇、大数据系主任颜远海、金融数学系主任石金诚、人工智能系主任霍永良&#xff0c;以及骨干教师许丽娟、李志青、…