vue3项目中的404页面

vue3项目中的404页面

春节前的最后一篇技术博客了

写了不少vue项目,发现一直没有正确处理404页面。404页面的出现有这么几种可能:

  • 错误输入了页面地址
  • 路由连接跳转时,某些路由已经不存在了,而程序员并没有正确处理

也就是说404页面是为了防止用户访问不存在的路由地址而设计的,当用户访问一个不存在的地址时,这个地址将会重定向至404页面

看一下最后的效果:

在这里插入图片描述

一、路由设计

在vue项目中,需要设计404页面的路由

在路由文件router/index.js中编写代码:

import { createRouter, createWebHistory } from "vue-router";
import Main from "@/views/Main.vue";

const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes: [
    {
      // 其他路由
    },
      // 路由页面
    {
      path: '/404',
      name: '404page',
      component: () => import('@/views/404/index.vue'),
    },
      // 未知路由重定向
    {
      path: '/:pathMatch(.*)',
      redirect: '/404',
      hidden: true
    }
  ],
});

export default router;

二、404组件

直接上代码了

<template>
    <div class="body">
        <div class="mars"></div>
        <img src="./images/404.svg" class="logo-404">
        <img src="./images/meteor.svg" class="meteor">
        <p class="title">Oh no!!</p>
        <p class="subtitle">
            页面未找到<br>要么请求一个不再在这里的页面。
        </p>
        <div align="center">
            <a class="btn-back" href="/">返回首页</a>
        </div>
        <img src="./images/astronaut.svg" class="astronaut">
        <img src="./images/spaceship.svg" class="spaceship">
    </div>
</template>

<script setup>
</script>

<style lang="scss" scoped>
@keyframes floating {
    from {
        transform: translateY(0px);
    }

    65% {
        transform: translateY(15px);
    }

    to {
        transform: translateY(0px);
    }
}

.body {
    background-image: url("./images/star.svg"), linear-gradient(to bottom, #05007A, #4D007D);
    height: 100vh;
    margin: 0;
    background-attachment: fixed;
    overflow: hidden;
}

.mars {
    left: 0;
    right: 0;
    bottom: 0;
    position: absolute;
    height: 27vmin;
    background: url("./images/mars.svg") no-repeat bottom center;
    background-size: cover;
}

.logo-404 {
    position: absolute;
    margin-left: auto;
    margin-right: auto;
    left: 0;
    right: 0;
    top: 16vmin;
    width: 30vmin;
}

@media (max-width: 480px) and (min-width: 320px) {
    .logo-404 {
        top: 45vmin;
    }
}

.meteor {
    position: absolute;
    right: 2vmin;
    top: 16vmin;
}

.title {
    color: white;
    font-family: "Nunito", sans-serif;
    font-weight: 600;
    text-align: center;
    font-size: 5vmin;
    margin-top: 31vmin;
}

@media (max-width: 480px) and (min-width: 320px) {
    .title {
        margin-top: 65vmin;
    }
}

.subtitle {
    color: white;
    font-family: "Nunito", sans-serif;
    font-weight: 400;
    text-align: center;
    font-size: 3.5vmin;
    margin-top: 10vmin;
    margin-bottom: 9vmin;
}

.btn-back {
    border: 1px solid white;
    color: white;
    height: 5vmin;
    padding: 12px;
    font-family: "Nunito", sans-serif;
    text-decoration: none;
    border-radius: 5px;
}

.btn-back:hover {
    background: white;
    color: #4D007D;
}

@media (max-width: 480px) and (min-width: 320px) {
    .btn-back {
        font-size: 3.5vmin;
    }
}

.astronaut {
    position: absolute;
    top: 18vmin;
    left: 10vmin;
    height: 30vmin;
    animation: floating 3s infinite ease-in-out;
}

@media (max-width: 480px) and (min-width: 320px) {
    .astronaut {
        top: 2vmin;
    }
}

.spaceship {
    position: absolute;
    bottom: 15vmin;
    right: 24vmin;
}

@media (max-width: 480px) and (min-width: 320px) {
    .spaceship {
        width: 45vmin;
        bottom: 18vmin;
    }
}</style>

页面的动画效果主要由样式中的keyframes提供,而图像全都由相应的svg文件提供,svg文件我已经免费上传了

svg文件

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C 语言学习七:指针

指针 指针与地址指针的声明和初始化指针的解引用指针的比较指针和数组指针数组指针和动态内存分配 指针与函数参数指针作为函数参数二级指针 指向函数的指针 指针与地址 指针的声明和初始化 int variable 42; int *ptr &variable; //间接访问 int value *ptr; // valu…

【竞技宝】LOL:369兰博豪取四杀带队翻盘 TES2-0轻取WBG

北京时间2024年2月8日&#xff0c;英雄联盟LPL2024春季赛在昨天迎来第三周第三个比赛日&#xff0c;本日第二场比赛由TES对阵WBG。本场比赛TES中后期团战的处理更加出色&#xff0c;第二局更是在后期凭借369兰博的四杀完成翻盘&#xff0c;TES2-0轻取WBG。以下是本场比赛的详细…

蓝桥杯Web应用开发-CSS3 新特性【练习三:文本阴影】

文本阴影 text-shadow 属性 给文本内容添加阴影的效果。 文本阴影的语法格式如下&#xff1a; text-shadow: x-offset y-offset blur color;• x-offset 是沿 x 轴方向的偏移距离&#xff0c;允许负值&#xff0c;必须参数。 • y-offset 是沿 y 轴方向的偏移距离&#xff0c…

GEE详细教程之:将Landsat8与Landsat9影像合成一个影像

1.前言 因项目需求&#xff0c;需要获取一个研究区的Landsat8影像&#xff0c;但Landsat8重复周期长&#xff0c;加之天气的影响&#xff0c;很难获取影像质量较好的影像。Landsat4/5/7的波段顺序与landsat8不同&#xff0c;除此之外&#xff0c;landsat7影像还需要工具进行条带…

222. 完全二叉树的节点个数 - 力扣(LeetCode)

题目描述 给你一棵 完全二叉树 的根节点 root &#xff0c;求出该树的节点个数。 完全二叉树 的定义如下&#xff1a;在完全二叉树中&#xff0c;除了最底层节点可能没填满外&#xff0c;其余每层节点数都达到最大值&#xff0c;并且最下面一层的节点都集中在该层最左边的若干…

重装系统---首次安装java的JDK

1、去官网或者百度资源选择自己想要下载的jdk版本即可 2、 3、按照步骤安装即可,路径不要更改,默认c盘安装就好,避免后面发生错误。 4、打开电脑的设置,编辑环境变量 这是添加之后的效果 5、再新建一个系统环境变量 6、编辑环境变量Path 添

3.3-媒资管理之MinIo分布式文件系统上传视频

文章目录 媒资管理5 上传视频5.1 需求分析5.2 断点续传技术5.2.1 什么是断点续传5.2.2 分块与合并测试5.2.3 视频上传流程5.2.4 minio合并文件测试 5.3 接口定义5.4 上传分块开发5.4.1 DAO开发5.4.2 Service开发5.4.2.1 检查文件和分块5.4.2.2 上传分块5.4.2.3 上传分块测试 5.…

Ubuntu安装SVN服务并结合内网穿透实现公网访问本地存储文件

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&…

2. Maven 继承与聚合

目录 2. 2.1 继承 2.2继承关系 2.2.1 思路分析 2.2.2 实现 2.1.2 版本锁定 2.1.2.1 场景 2.1.2.2 介绍 2.1.2.3 实现 2.1.2.4 属性配置 2.2 聚合 2.2.1 介绍 2.2.2 实现 2.3 继承与聚合对比 maven1&#xff1a;分模块设计开发 2. 在项目分模块开发之后啊&#x…

【Qt学习笔记】Qt Creator环境下 信号与槽 详解(自定义信号槽、断连、lambda表达式等)

文章目录 1. 信号槽概念1.1 信号的本质1.2 槽的本质1.3 标准信号槽1.4 信号槽 实例 2. 自定义信号槽2.1 自定义槽函数2.2 自定义信号2.3 带参 信号槽 3. 信号槽的意义 与 作用4. 信号槽断连 &#xff08;了解&#xff09;5. lamda表达式的使用5.1 基本用法5.2 捕获局部变量5.3 …

代码随想录算法训练营DAY16 | 二叉树 (3)

一、LeetCode 104 二叉树的最大深度 题目链接&#xff1a;104.二叉树的最大深度https://leetcode.cn/problems/maximum-depth-of-binary-tree/ 思路&#xff1a;采用后序遍历递归求解。 class Solution {int ans 0;public int maxDepth(TreeNode root) {if(root null){retur…

阿里云学生服务器完成验证领取300元无门槛代金券和优惠权益

阿里云高校计划「云工开物」学生和教师均可参与&#xff0c;完成学生认证和教师验证后学生可以免费领取300元无门槛代金券和3折优惠折扣&#xff0c;适用于云服务器等全量公共云产品&#xff0c;订单原价金额封顶5000元/年&#xff0c;阿里云百科aliyunbaike.com分享阿里云高校…

2024等保贯穿总结

严重不符合项&#xff1a; 离职人员不能在报告上签字&#xff01;&#xff01;&#xff01;因为人员离职导致测评人员不够的&#xff08;会开观察项&#xff09; 业务受理人员&#xff1a;管合同的人员、签合同的人员、市场部和人员有关的人员都要写进来 签字的人员一定要有相…

rust语言tokio库底层原理解析

目录 1 rust版本及tokio版本说明1 tokio简介2 tokio::main2.1 tokio::main使用多线程模式2.2 tokio::main使用单线程模式 3 builder.build()函数3.1 build_threaded_runtime()函数新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图…

springboot-web服务迁移Kubernetes

1、搞定基础镜像 docker pull openjdk:8-jre-alpine docker tag openjdk:8-jre-alpine 10.204.82.15/kubernetes/openjdk:8-jre-alpine docker push 10.204.82.15/kubernetes/openjdk:8-jre-alpine 2、springboot-web应用服务打包 3、编写Dockerfile构建镜像 FROM 10.204.82.…

STM32——中断

1 什么是中断 中断&#xff1a;打断CPU执行正常的程序&#xff0c;转而处理紧急程序&#xff0c;然后返回原暂停的程序继续运行&#xff1b; 对于单片机来说&#xff0c;中断是指CPU正在处理某个事件A&#xff0c;发生了另一件事件B&#xff0c;请求CPU迅速去处理&#xff08;…

使用npm包js-web-screen-shot做网页截图,可以对截图加文字,箭头等等,类似于微信截图

<template><div class"m-feedback-wrap" :style"{ top: ${feedbackHeight}px }"><div class"m-feedback-icon-wrap"><el-tooltipclass"item"effect"dark"content"内容"placement"left-…

【数据分享】1929-2023年全球站点的逐年平均风速(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 有关气象指标的监测站点数据&#xff0c;之前我们分享过1929-2023年全球气象站…

文心一言 VS 讯飞星火 VS chatgpt (196)-- 算法导论14.3 4题

四、用go语言&#xff0c;给定一棵区间树 T 和一个区间 i &#xff0c;请描述如何在 O(min(n&#xff0c;klgn)) 时间内列出 T 中所有与 i 重叠的区间&#xff0c;其中 k 为输出的区间数。(提示:一种简单的方法是做若干次查询&#xff0c;并且在这些查询操作中修改树&#xff0…

springboot164党员教育和管理系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…