当前位置:网站首页 > Vue.js开发 > 正文

vue中,404页面——当前页面不存在,直接跳转首页

vue中,404页面——当前页面不存在,直接跳转首页

效果

在这里插入图片描述

代码
1、页面

src\components\errorPage\404page.vue

<template> <div style="height:100%;"> <div class="wscn-http404"> <div class="pic-404"> <img class="pic-404__parent" :src="img_404" alt="404"> <img class="pic-404__child left" :src="img_404_cloud" alt="404"> <img class="pic-404__child mid" :src="img_404_cloud" alt="404"> <img class="pic-404__child right" :src="img_404_cloud" alt="404"> </div> <div class="bullshit"> <div class="bullshit__oops">OOPS!</div> <!-- <div class="bullshit__info">版权所有 <a class='link-type' href='https://wallstreetcn.com' target='_blank'>华尔街见闻</a> </div> <div class="bullshit__headline">{ 
  { message }}</div>--> <div class="bullshit__info">当前页面不存在,<span class="bullshit__return-second">{ 
  {second}}</span> &nbsp;秒后直接跳转首页</div> <!-- <a href="/" class="bullshit__return-home">返回首页</a>--> <el-button @click="back" icon='arrow-left' class="bullshit__return-home">直接跳转首页</el-button> </div> </div> </div> </template> <script> import img_404 from '@/assets/404_images/404.png' import img_404_cloud from '@/assets/404_images/404_cloud.png' export default { name: 'page404', data() { return { img_404, img_404_cloud, second : 5, interval : "" } }, methods:{ back() { this.$router.push({ path: '/homePage' }) } }, created(){ this.interval = setInterval(() => { this.second --; if(this.second === 0){ // this.back(); } }, 1000); }, destroyed(){ clearInterval(this.interval); } } </script> <style rel="stylesheet/scss" lang="scss" scoped> .wscn-http404 { position: relative; width: 1200px; margin: 20px auto 60px; padding: 0 100px; overflow: hidden; .pic-404 { position: relative; float: left; width: 600px; padding: 150px 0; overflow: hidden; &__parent { width: 100%; } &__child { position: absolute; &.left { width: 80px; top: 17px; left: 220px; opacity: 0; animation-name: cloudLeft; animation-duration: 2s; animation-timing-function: linear; animation-fill-mode: forwards; animation-delay: 1s; } &.mid { width: 46px; top: 10px; left: 420px; opacity: 0; animation-name: cloudMid; animation-duration: 2s; animation-timing-function: linear; animation-fill-mode: forwards; animation-delay: 1.2s; } &.right { width: 62px; top: 100px; left: 500px; opacity: 0; animation-name: cloudRight; animation-duration: 2s; animation-timing-function: linear; animation-fill-mode: forwards; animation-delay: 1s; } @keyframes cloudLeft { 0% { top: 17px; left: 220px; opacity: 0; } 20% { top: 33px; left: 188px; opacity: 1; } 80% { top: 81px; left: 92px; opacity: 1; } 100% { top: 97px; left: 60px; opacity: 0; } } @keyframes cloudMid { 0% { top: 10px; left: 420px; opacity: 0; } 20% { top: 40px; left: 360px; opacity: 1; } 70% { top: 130px; left: 180px; opacity: 1; } 100% { top: 160px; left: 120px; opacity: 0; } } @keyframes cloudRight { 0% { top: 100px; left: 500px; opacity: 0; } 20% { top: 120px; left: 460px; opacity: 1; } 80% { top: 180px; left: 340px; opacity: 1; } 100% { top: 200px; left: 300px; opacity: 0; } } } } .bullshit { position: relative; float: left; width: 330px; padding: 180px 0; overflow: hidden; &__oops { font-size: 32px; font-weight: bold; line-height: 40px; color: #1482f0; opacity: 0; margin-bottom: 20px; animation-name: slideUp; animation-duration: 0.5s; animation-fill-mode: forwards; } &__headline { font-size: 20px; line-height: 24px; color: #1482f0; opacity: 0; margin-bottom: 10px; animation-name: slideUp; animation-duration: 0.5s; animation-delay: 0.1s; animation-fill-mode: forwards; } &__info { font-size: 13px; line-height: 21px; color: grey; opacity: 0; margin-bottom: 30px; animation-name: slideUp; animation-duration: 0.5s; animation-delay: 0.2s; animation-fill-mode: forwards; } &__return-second{ color:red; } &__return-home { display: block; float: left; width: 130px; height: 36px; background: #1482f0; border-radius: 100px; text-align: center; color: #ffffff; opacity: 0; font-size: 14px; /* line-height: 36px;*/ cursor: pointer; animation-name: slideUp; animation-duration: 0.5s; animation-delay: 0.3s; animation-fill-mode: forwards; } @keyframes slideUp { 0% { transform: translateY(60px); opacity: 0; } 100% { transform: translateY(0); opacity: 1; } } } } </style> 
2、路由

src\router\index.ts

import { 
    createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router'; type NewRouteRecordRaw = RouteRecordRaw & { 
    redirect?: string } const routes: Array<RouteRecordRaw> = [ // 404页面 { 
    path: '/errorPage', name: 'ErrorPage', component: () => import('@/components/errorPage/404page.vue'), }, // 401页面 { 
    path: '/401', name: '401', component: () => import('@/components/errorPage/401page.vue'), }, //如需点击返回首页的路由跳转homePage { 
    path: '/', name: 'home', redirect: '/homePage', }, // 首页 { 
    path: '/homePage', name: 'homePage', component: () => import('@/views/homePage.vue') }, ] const router = createRouter({ 
    history: createWebHashHistory(), routes, scrollBehavior(to, from, savedPosition) { 
    return { 
    left: 0, top: 0 } } }) export default router 

src\main.ts

import router from './router' app.use(router) router.beforeEach((to, from, next) => { 
   }) 
到此这篇vue中,404页面——当前页面不存在,直接跳转首页的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • vue中,el-table树形数据与懒加载【实例】(二)——封装拖拽上传el-upload & 本地下载模板-public下的file文件夹 & JSON.parse转对象 & 表单禁止输入特殊字符2024-11-29 23:09:05
  • vue3中,el-table级联表格——default-expand-all & row-key & show-overflow-tooltip & 树状表格计算总价合计总计2024-11-29 23:09:05
  • vue中,表单增加一行删除一行上移一行下移一行2024-11-29 23:09:05
  • 自定义vue指令v-drag & 封装自定义可拖拽弹框 & id定义样式、computed实现动态style动态class & 具名插槽name属性定义slot & 引入全局组件 & 定义全局样式2024-11-29 23:09:05
  • js封装,小写金额转化为大写金额,用于发票金额、合同资金等2024-11-29 23:09:05
  • vue中,401页面——您没有权限访问当前页面,直接跳转登录页2024-11-29 23:09:05
  • vue3中,项目甘特图实现项目进度条——封装组件之tabs标签页的使用、定义方法实现动态样式style、reduce方法、数组每个下标对应的当前下标前几位之和、new Date()转换日期格式2024-11-29 23:09:05
  • vue3中,tabs标签页的使用、调用方法实现动态style2024-11-29 23:09:05
  • vue3中,el-table表格的禁用、回显和多选操作——标识row-key、是否勾选selectable & toggleRowSelection(row, true)-true选中2024-11-29 23:09:05
  • vue3中,el-table表格中基础的查询、重置、新增、编辑回显、删除2024-11-29 23:09:05
  • 全屏图片