Nuxt3 实战 (十一):添加路由 Transition 过渡效果和 Loading 动画

页面过渡效果

Nuxt3 利用 Vue 的 组件 在页面和布局之间应用过渡效果。

  1. nuxt.config.ts 文件配置:
export default defineNuxtConfig({app: {pageTransition: { name: 'page', mode: 'out-in' }},
})
  1. 在页面之间添加过渡效果,在 app.vue 文件中添加以下 CSS
 <template><NuxtPage /></template><style>.page-enter-active,.page-leave-active {transition: all 0.4s;}.page-enter-from,.page-leave-to {opacity: 0;filter: blur(1rem);}</style>
  1. 要为页面设置不同的过渡效果,请在页面的 definePageMeta 中设置 pageTransition 键:
<script setup lang="ts">
definePageMeta({pageTransition: {name: 'rotate'}
})
</script>

如果你同时更改布局和页面,这里设置的页面过渡效果将不会运行。相反,你应该设置布局过渡效果。

布局过渡效果

  1. nuxt.config.ts 文件配置:
export default defineNuxtConfig({app: {layoutTransition: { name: 'layout', mode: 'out-in' }},
})
  1. app.vue 文件中添加代码:
<template><NuxtLayout><NuxtPage /></NuxtLayout>
</template><style>
.layout-enter-active,
.layout-leave-active {transition: all 0.4s;
}
.layout-enter-from,
.layout-leave-to {filter: grayscale(1);
}
</style>

首屏加载动画

Nuxt3 并没有直接提供 API,但我们利用 生命周期钩子 来完成我们期望的效果。

  1. 新建 components/FullLoading/index.vue 文件:
  <template><divclass="fixed flex w-screen h-screen justify-center items-center flex-col z-[99] overflow-hidden bg-white dark:bg-slate-900"><divclass="relative w-12 h-12 rotate-[165deg] before:content-[''] after:content-[''] before:absolute after:absolute before:top-2/4 after:top-2/4 before:left-2/4 after:left-2/4 before:block after:block before:w-[.5em] after:w-[.5em] before:h-[.5em] after:h-[.5em] before:rounded after:rounded before:-translate-x-1/2 after:-translate-x-1/2 before:-translate-y-2/4 after:-translate-y-2/4 before:animate-[loaderBefore_2s_infinite] after:animate-[loaderAfter_2s_infinite]"/></div></template><style>@keyframes loaderBefore {0% {width: 0.5em;box-shadow:1em -0.5em rgba(225, 20, 98, 0.75),-1em 0.5em rgba(111, 202, 220, 0.75);}35% {width: 2.5em;box-shadow:0 -0.5em rgba(225, 20, 98, 0.75),0 0.5em rgba(111, 202, 220, 0.75);}70% {width: 0.5em;box-shadow:-1em -0.5em rgba(225, 20, 98, 0.75),1em 0.5em rgba(111, 202, 220, 0.75);}100% {box-shadow:1em -0.5em rgba(225, 20, 98, 0.75),-1em 0.5em rgba(111, 202, 220, 0.75);}}@keyframes loaderAfter {0% {height: 0.5em;box-shadow:0.5em 1em rgba(61, 184, 143, 0.75),-0.5em -1em rgba(233, 169, 32, 0.75);}35% {height: 2.5em;box-shadow:0.5em 0 rgba(61, 184, 143, 0.75),-0.5em 0 rgba(233, 169, 32, 0.75);}70% {height: 0.5em;box-shadow:0.5em -1em rgba(61, 184, 143, 0.75),-0.5em 1em rgba(233, 169, 32, 0.75);}100% {box-shadow:0.5em 1em rgba(61, 184, 143, 0.75),-0.5em -1em rgba(233, 169, 32, 0.75);}}</style>
  1. app.vue 添加代码:
  <script setup lang="ts">const nuxtApp = useNuxtApp()// 是否首次加载const isFullLoading = ref(true)nuxtApp.hook('page:start', () => {isFullLoading.value = true})nuxtApp.hook('page:finish', () => {isFullLoading.value = false})</script><template><div><!-- 首页加载全屏动画 --><FullLoading v-if="isFullLoading" /><NuxtLayout><NuxtPage /></NuxtLayout></div></template>

页面进度条

我们还可以添加一个页面进度条,Nuxt3 提供了 组件,我们直接在 app.vue 中添加:

<template><NuxtLayout><!-- 在页面导航之间显示一个进度条 --><NuxtLoadingIndicator /><NuxtPage /></NuxtLayout>
</template>

效果预览

在这里插入图片描述

总结

通过本篇文章我们学习了如何在 Nuxt3 中添加路由切换过渡效果和首屏加载动画,没什么干货,按照官方文档操作就完事了。

Github 仓库:dream-site

线上预览:dream-site.cn

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

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

相关文章

USAD: 多元时间序列的无监督异常检测

USAD: 多元时间序列的无监督异常检测 原创 小王搬运工 时序课堂 2024-06-20 10:43 四川 论文地址&#xff1a;https://dl.acm.org/doi/abs/10.1145/3394486.3403392 论文源码&#xff1a;https://github.com/manigalati/usad 期刊&#xff1a;KDD 20: Proceedings of the 26…

嵌入式开发二十:定时器之基本定时器

定时器是微控制器中的关键外设&#xff0c;用于精确控制时间和事件。通过配置时钟源、预分频器、计数周期和比较值&#xff0c;可以实现各种时间控制任务&#xff0c;如定时中断、PWM生成和时间测量。理解定时器的工作原理和配置方法是嵌入式系统开发中的基本技能。 STM32F407 …

人工智能的头号威胁:投毒攻击

随着掌管数字生活入口的万亿美元俱乐部企业——苹果公司跳入人工智能&#xff08;AI&#xff09;赛道&#xff0c;AI技术民主化的大幕正式拉开&#xff0c;同时也将AI安全问题推向舆论的风口浪尖。 根据瑞银本周一的智能手机调查报告&#xff0c;在中国以外的智能手机用户中&am…

安装MySQL5.7版本步骤遇到问题

方法一&#xff1a;下载zip版本&#xff08;我用的这个&#xff09; 参考视频&#xff08;已收藏&#xff09;&#xff1a;windows安装MySQL5.7_哔哩哔哩_bilibili 下载zip压缩包的MySQL的网址&#xff1a;上面这个视频中有哦。 my.ini文件内容如下&#xff1a; [client] p…

有什么值得推荐的文件外发权限管理软件?

你的身边有这种事情发生吗&#xff1f; 一些工作人员在传达文件、部署工作时&#xff0c;为贪图方便&#xff0c;直接将涉密文件、涉密工作通过微信群传达部署&#xff0c;造成了大量泄密案件发生。 有些责任人员为了工作方便&#xff0c;对涉密文件进行拍照&#xff0c;通过…

jar包运行脚本

start&#xff1a; # 启动项目 #!/bin/bash nohup java -jar audit-2.1.0.jar > app.log 2>&1 & quit&#xff1a; # 关闭程序 #!/bin/bash PID$(pgrep -f audit-2.1.0.jar) # 根据应用程序名称查找进程ID kill -9 $PID # 结束进程使用 sh命令运行

Python运算符重载,代码秒变高大上!

目录 1、运算符重载基础介绍 🧮 1.1 什么是运算符重载 1.2 为何使用运算符重载 1.3 Python中的特殊方法魔法 示例:重载加法运算符 2、实战:重载加法运算符 + 🧩 2.1 自定义类与__add__() 2.2 应用案例:复数加法 2.3 深入理解__add__方法 3、重载其他运算符示例…

Cytoscape之操作界面介绍

Cytoscape 简介 Cytoscape是一个专注于开源网络可视化和分析的软件。软件的核心部分提供了网络显示、布局、查询等方面的基本功能。软件的核心可以通过插件架构进行扩展&#xff0c;这样就能快速地开发出新的功能。 Cytoscape 源自系统生物学&#xff0c;用于将生物分子交互网…

Linux和Windows(VS 2019)下安装使用Log4cpp日志库

目录 一、Log4cpp简介 二、Windows下的Log4cpp的安装 1、下载网址 2、解决方案 三、Vistual Studio中使用第三方库 1、拷贝对应下图路径下的include文件进入你的项目目录下面去&#xff0c;并将之前编译好的库文件也放在对应项目目录下面去。 2、打开你的项目&#xff0…

nacos 配置修改.代码实时刷新

再类上用 RefreshScope 更新Value(“${uniqlo.privacy.url:https://wsurl.cc/yourls-api.php}”) private String shortLinkGenerateUrl;的数据可以实时更新 2.再配置类上次用 ConfigurationProperties(prefix “test.privacy”) 和nacos的配置一直 Data Component Configu…

华为云EI生态

1、人工智能技术趋势 2、华为AI发展思路 3、华为云EI&#xff1a;让企业更智能 4、华为云服务全景图 5、基础平台类服务 6、MLS:解决特性到模型应用的完整过程 7.DLS 8.GES超大规模一体化图分析与查询 9、EI视觉认知 10、EI语音语义 11、OCR&#xff1a;提供高精度光学文字自动…

C++初学者指南第一步---9.函数

C初学者指南第一步—9.函数 文章目录 C初学者指南第一步---9.函数1.输入和输出1.1第一个例子1.2返回类型1.3函数参数常量参数默认值参数 1.4函数重载 2.函数执行2.1递归2.2 声明和定义 3.函数设计3.1约定3.2 特性[[nodiscard]] &#xff08;C17&#xff09;3.3 不抛出异常保证&…

【Python驯化-01】python中set去重数据每次结果不一致问题解决

【Python驯化-01】python中set去重数据每次结果不一致问题解决 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#x1f387; 免费获取相关内容文档关注…

考研计组chap2数据的表示和运算

3一、进位计数制 1.r进制 第i位表示r进制的权为i 2.进制转换 &#xff08;1&#xff09;r->10 对应位置数*权值 &#xff08;2&#xff09;2 -> 16 or 8 每三位2进制数可表示1位16进制 每四位2进制数可表示1位16进制 so 分开之后转为16进制即可 eg&#xff1a;1…

基于51单片机恒温箱设计

基于51单片机恒温箱设计 &#xff08;程序&#xff0b;原理图&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 本设计由STC89C52单片机电路数字温度传感器DS18B20电路按键电路蜂鸣器报警电路继电器控制电路LCD1602液晶显示电路电源电路组成。 1.LCD1602液…

偏微分方程算法之抛物型方程差分格式编程示例四(Richardson外推)

目录 一、研究问题 二、C++代码 三、结果分析 一、研究问题 已知其精确解为。分别取以下三种步长: ①

树形dp,CF 1926 G - Vlad and Trouble at MIT

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - G - Codeforces 二、解题报告 1、思路分析 考虑每个结点最终状态只可能为和P连通或者和S连通 我们我们自然而然的将问题划分为这样的状态 f[x][0]代表结点x和P连通需要割掉最少的边 f[x][1]代…

Windows Server配置NFS,做ESXI共享存储

1:登录wINDOWS系统&#xff0c;点击添加角色和功能。 2:根据向导提示&#xff0c;一路下一步。在服务器角色中选择文件和存储服务器在文件和iSCSI服务中勾选NFS服务器。 3&#xff1a;按照提示一路下一步&#xff0c;安装NFS。 4&#xff1a;安装完成后关闭安装界面。 5&#x…

代码随想录算法训练营第六十五天 | 岛屿数量 深搜、岛屿数量 广搜、岛屿的最大面积

岛屿数量 深搜 题目链接&#xff1a;99. 岛屿数量 文字讲解&#xff1a;99. 岛屿数量 | 代码随想录 解题思路 本题已经说明&#xff0c;只有水平方向和竖直方向才能组成岛屿 本题思路&#xff0c;是遇到一个没有遍历过的节点陆地&#xff0c;计数器就加一&#xff0c;然后把…

为电脑小白推荐的5款实用工具软件

​ 电脑上的各类软件有很多&#xff0c;除了那些常见的大众化软件&#xff0c;还有很多不为人知的小众软件&#xff0c;专注于实用功能&#xff0c;简洁干净、功能强悍。 1.磁盘空间分析——TreeSize Free ​ TreeSize Free是一款免费的磁盘空间分析工具&#xff0c;能够扫描…