「vue3-element-admin」Vue3 + TypeScript 项目整合 Animate.css 动画效果实战指南

🚀 作者主页: 有来技术
🔥 开源项目: youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template
🌺 仓库主页: GitCode︱ Gitee ︱ Github
💖 欢迎点赞 👍 收藏 ⭐评论 📝 如有错误敬请纠正!

目录

    • 安装依赖
    • 全局引入 Animate.css
    • 在组件中使用 Animate.css
    • 💥与 Vue 过渡组件结合使用
    • 动态绑定动画效果
    • 结语

在前端开发中,动画效果是提升用户体验的有效手段。开源项目 vue3-element-admin 中,原本使用的是 Element-Plus 内置过渡动画,但这种动画效果比较单一。为了增强用户体验,我们决定将 Animate.css 这一强大的 CSS 动画库整合到 Vue3 + TypeScript 项目中。

本文将详细介绍如何将 Animate.css 集成到基于 Vue3 和 TypeScript 的项目中,从依赖安装到如何在组件中灵活应用动画,帮助你快速上手。🚀

以下步骤参考 Animate.css 官方文档

安装依赖

安装 animate.css

pnpm add animate.css

全局引入 Animate.css

在 Vue3 + TypeScript 项目中,通常在项目的入口文件中进行全局引入。对于基于 Vite 构建的项目,入口文件一般是 main.ts

main.ts 中加入以下代码来引入 Animate.css:

import { createApp } from 'vue'
import App from './App.vue'// 全局引入 animate.css
import 'animate.css'const app = createApp(App)
app.mount('#app')

这样,Animate.css 就会在整个项目中生效,接下来就可以在各个组件中使用动画效果了!

在组件中使用 Animate.css

Animate.css 使用非常简单,只需要在需要动画效果的元素上添加相应的类名即可。注意,Animate.css 4.x 版本中的所有动画类都以 animate__ 为前缀,并且必须与 animate__animated 一起使用。

例如,在组件中:

<template><div class="animate__animated animate__fadeInDown">欢迎使用有来开源后端管理前端模板 vue3-element-admin </div>
</template>

在这个示例中,给 <div> 元素添加了 animate__animatedanimate__fadeInDown 类,页面加载时会自动应用“向下淡入”动画效果。

更多动画效果参考官方:Animate.css

💥与 Vue 过渡组件结合使用

Animate.css 可以与 Vue 内置的 <Transition> 组件配合使用,实现路由切换和页面过渡动画效果。通过这种方式,可以让页面切换更加平滑和生动。比如,项目 vue3-element-admin 就利用 Animate.css 实现了路由切换时的页面过渡动画效果。

具体实现代码如下,参考自 AppMain.vue:

<template><section class="app-main"><router-view><template #default="{ Component, route }"><transition enter-active-class="animate__animated animate__fadeIn" mode="out-in"><keep-alive :include="cachedViews"><component :is="Component" :key="route.path" /></keep-alive></transition></template></router-view></section>
</template><script setup lang="ts">
import { useSettingsStore, useTagsViewStore } from "@/store";
import variables from "@/styles/variables.module.scss";// 缓存页面集合
const cachedViews = computed(() => useTagsViewStore().cachedViews);
</script><style lang="scss" scoped>
.app-main {position: relative;overflow-y: auto;background-color: var(--el-bg-color-page);
}
</style>
  • <transition>: 用于包裹需要过渡的组件或页面。enter-active-class 设置进入时的动画类,这里使用了 Animate.css 的 fadeIn 动画。
  • mode="out-in": 使当前页面退出后,才加载新的页面,从而实现更加平滑的过渡效果。

在这里插入图片描述

在这个示例中,使用 <Transition> 组件来实现进场动画。当组件出现时,应用 fadeIn 动画,使得交互更加流畅。

更多动画效果参考官方:Animate.css

动态绑定动画效果

Vue3 的响应式数据和条件渲染功能,使得动态切换动画变得十分简单。可以根据某个状态切换不同的动画效果:

<template><button @click="toggleAnimation">切换动画</button><div :class="['animate__animated', currentAnimation]">动画效果展示 </div>
</template><script setup lang="ts">
import { ref, computed } from 'vue'const isActive = ref(true)
const animationA = 'animate__fadeIn'
const animationB = 'animate__zoomIn'const currentAnimation = computed(() => (isActive.value ? animationA : animationB))function toggleAnimation() {isActive.value = !isActive.value
}
</script>

通过点击按钮,切换了两种动画效果:fadeInzoomIn

更多动画效果参考官方:Animate.css

结语

通过本文,掌握如何在 Vue3 + TypeScript 项目中整合 Animate.css。无论是简单的动画效果,还是与 Vue 的动态绑定和过渡效果结合,Animate.css 能的项目更加生动和吸引人。

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

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

相关文章

MyBatis:动态SQL高级标签使用方法指南

一、引言 目前互联网大厂在搭建后端Java服务时&#xff0c;常使用Springboot搭配Mybatis/Mybatis-plus的框架。Mybatis/Mybatis-plus之所以能成为当前国内主流的持久层框架&#xff0c;与其本身的优点有关&#xff1a;支持定制动态 SQL、存储过程及高级映射&#xff0c;简化数…

untiy3D 让角色动起来,角色动画的使用

1.untiy 商店下载动画模型 2.导入项目 模型拖入到场景中 3.创建动画器控制器 4.动画控制器挂载到plarer上 5.把动画idle和pickup拖入到动画器 6.右键动画创建过渡效果(Make Transition) 6.设置参数用条件控制 7.当选中参数时启动过渡 运行效果 119 (二)用脚本控制动画…

XXL-Job入门

XXL-Job入门 什么是xxl-job&#xff1f; ​ xxl-job是一个分布式的任务调度平台&#xff0c;其核心设计目标是&#xff1a;学习简单、开发迅速、轻量级、易扩展&#xff0c;现在已经开放源代码并接入多家公司的线上产品线&#xff0c;开箱即用。xxl是xxl-job的开发者…

Linux 基于共享内存的循环队列实现

Linux 基于共享内存的循环队列实现 Linux 基于共享内存的循环队列实现一、共享内存与循环队列基础1.1 共享内存特性1.2 循环队列优势 二、系统关键技术分析2.1 共享内存操作APIshmget() 创建共享内存shmat() 映射共享内存 2.2 模板类设计要点 三、循环队列核心方法实现3.1 初始…

【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第十九节】

ISO 14229-1:2023 UDS诊断服务测试用例全解析&#xff08;ClearDiagnosticInformation_0x84服务&#xff09; 作者&#xff1a;车端域控测试工程师 更新日期&#xff1a;2025年02月14日 关键词&#xff1a;UDS协议、0x84服务、清除诊断信息、ISO 14229-1:2023、ECU测试 一、服…

盛铂科技 SMF106 低相位噪声贴片式频率综合器模块

在现代通信和电子设备领域&#xff0c;频率综合器作为关键组件&#xff0c;其性能优劣直接影响系统的整体表现。盛铂科技的 SMF106 低相位噪声贴片式频率综合器&#xff0c;以其卓越的性能和独特设计&#xff0c;成为众多高性能系统的选择。 一、频率覆盖范围广&#xff0c;步进…

Java语言在微服务架构中的应用研究

Java语言在微服务架构中的应用研究 微服务架构是现代软件系统中一种重要的设计模式&#xff0c;它通过将单一的应用程序拆解成多个小型、独立的服务来增强系统的可扩展性、灵活性和可维护性。Java作为一种成熟的编程语言&#xff0c;在微服务架构的实现中发挥了重要作用。本文…

深度解析前端性能优化:策略与实践

在当今数字化时代,前端性能对于用户体验和业务成功至关重要。缓慢加载的页面会导致用户流失,而高效的前端性能则能提升用户满意度、转化率和品牌形象。本文将深入探讨前端性能优化的关键策略与实践,帮助开发者打造快速响应的优质 Web 应用。 一、资源加载优化 1. 压缩与合…

Mybatis-扩展功能

逻辑删除乐观锁 MyBatisPlus从入门到精通-3&#xff08;含mp代码生成器&#xff09; Db静态工具类 Spring依赖循环问题 代码生成器 MybatisPlus代码生成器 枚举处理器 我们这里用int来存储状态 需要注解&#xff0c;很不灵活 希望用枚举类来代替这个Integer 这样的话我…

请解释设备像素、CSS 像素、设备独立像素、DPR、PPI 之间的区别?

设备像素&#xff08;Device Pixels&#xff09; 定义&#xff1a;设备像素&#xff0c;也称为物理像素&#xff0c;是屏幕上能够显示的最小物理单位。每个设备像素代表屏幕上的一个点&#xff0c;用于显示颜色。 代码示例&#xff1a; console.log(window.screen.width); /…

【golang】channel带缓存和不带缓存的区别,应用场景解读

在Go语言中&#xff0c;channel&#xff08;通道&#xff09;分为带缓存的通道&#xff08;Buffered Channel&#xff09;和不带缓存的通道&#xff08;Unbuffered Channel&#xff09;&#xff0c;它们的核心区别在于数据传递的同步机制和性能特性。以下是详细对比&#xff1a…

《Foundation 起步》

《Foundation 起步》 引言 在当今快速发展的科技时代,了解并掌握最新的技术是至关重要的。本文旨在为初学者提供一个全面的《Foundation》起步指南,帮助大家快速入门并掌握这一强大的技术。 一、什么是Foundation? Foundation 是一个流行的前端框架,由 ZURB 公司开发。…

Java Lambda 表达式的实践与思考

一、引言 自Java 8引入Lambda表达式以来&#xff0c;Java语言在函数式编程方面迈出了重要一步。Lambda不仅让代码变得更简洁&#xff0c;还极大地提升了对集合、流操作等场景下的处理能力。作为一名资深Java后端程序员&#xff0c;多年的开发实践让我深刻体会到Lambda在提升代…

记忆力训练day19

万能字母组合编码法 所有的文字和字母的背后都有画面 练的不是记单词&#xff0c;练的是注意力给到单词&#xff0c;出什么画面&#xff0c;然后画面与画面之间进行连接 拆的过程就是找熟词的过程 要关注自己的回忆路径是什么&#xff1f;也就是你是怎么回忆起来的&#xff0c…

【第13章:自监督学习与少样本学习—13.4 自监督学习与少样本学习的未来研究方向与挑战】

凌晨三点的实验室里,博士生小张盯着屏幕上的训练曲线——他设计的跨模态少样本学习模型在医疗影像诊断任务上突然出现了诡异的性能断崖。前一秒还在92%的准确率高位运行,下一秒就暴跌到47%。这个看似灾难性的现象,却意外揭开了自监督学习与少样本学习技术深藏的核心挑战… 一…

unity学习43:子状态机 sub-state machine

目录 1sub-state machine子状态机 1.1 创建 sub-state machine 1.2 sub-state machine 内容 1.3 子状态机的应用 2 子状态机不同于blend tree的嵌套 3 应用例子&#xff1a;若角色拿不同武器的动画设计&#xff0c;可以使用2种方法 3.1 在1个图层layer里&#xff0c;使用…

CANopen协议简介及电机控制

CANopen 是基于CAN总线的一种高层协议&#xff0c;广泛应用于工业自动化、嵌入式系统以及电机控制等领域。它的优点包括高效的数据传输能力、灵活的设备管理和强大的通信功能。 ​ 在控制多个电机并实时获取电机速度时&#xff0c;CANopen通过两种数据传输方式来实现&#xff…

20250213 隨筆 雪花算法

雪花算法&#xff08;Snowflake Algorithm&#xff09; 雪花算法&#xff08;Snowflake&#xff09; 是 Twitter 在 2010 年開發的一種 分布式唯一 ID 生成算法&#xff0c;它可以在 高併發場景下快速生成全局唯一的 64-bit 長整型 ID&#xff0c;且不依賴資料庫&#xff0c;具…

Golang并发编程最佳实践:协程与通道

Golang并发编程最佳实践&#xff1a;协程与通道 本文旨在介绍Golang并发编程的最佳实践&#xff0c;重点讨论协程和通道的使用方法&#xff0c;以及相关的实际案例和代码示例。 一、Golang并发编程简介 又称Go语言&#xff09;是一种由Google开发的编程语言&#xff0c;旨在提供…

Python VsCode DeepSeek接入

Python VsCode DeepSeek接入 创建API key 首先进入DeepSeek官网&#xff0c;https://www.deepseek.com/ 点击左侧“API Keys”&#xff0c;创建API key&#xff0c;输出名称为“AI” 点击“创建"&#xff0c;将API key保存&#xff0c;复制在其它地方。 在VsCode中下载…