当前位置: 首页 > news >正文

vue设置每次加载页面时展示一个双开门效果

一、首先创建一个双开门的蒙层组件

<!-- DoorOverlay.vue -->
<template><div v-if="isVisible" class="door-overlay"><div class="door left-door"></div><div class="door right-door"></div></div></template><script>export default {data() {return {isVisible: false};},methods: {show() {this.isVisible = true;},hide() {this.isVisible = false;}}};</script><style scoped>.door-overlay {position: fixed;top: 0;left: 0;width: 100%;height: 100%;display: flex;justify-content: space-between;align-items: center;/* background-color: rgba(0, 0, 0, 0.5); */z-index: 9999;overflow: hidden;}.door {width: 50%;height: 100%;background-color: #4891DA;transition: transform 0.5s;}.left-door {transform: translateX(0);}.right-door {transform: translateX(0);}.door-overlay.hide .left-door {transform: translateX(-100%);}.door-overlay.hide .right-door {transform: translateX(100%);}</style>

二、在router的index.js文件中引用

import Vue from 'vue'
import VueRouter from 'vue-router'import DoorOverlay from '@/components/DoorOverlay'Vue.use(VueRouter)const router = new VueRouter({mode: 'hash',routes:[ {path: '/',// 默认打开后就是这个主页component: () => import('@/components/Home/Home'),}]}) // 创建 DoorOverlay 实例
const doorOverlay = new Vue(DoorOverlay).$mount();
document.body.appendChild(doorOverlay.$el);// 全局前置守卫
router.beforeEach((to, from, next) => {doorOverlay.show();setTimeout(() => {next();}, 100); // 设置动画持续时间
});// 全局后置守卫
router.afterEach(() => {setTimeout(() => {doorOverlay.$el.classList.add('hide');setTimeout(() => {doorOverlay.hide();doorOverlay.$el.classList.remove('hide');}, 500); // 设置动画持续时间}, 100); // 设置动画持续时间
});export default router;

三、在App.vue文件中使用蒙层组件

<template><div id="app"><Header></Header><!-- 路由挂载 --><router-view></router-view><Footer></Footer></div>
</template><script>
import Header from '@/components/Header/Header'
import Footer from '@/components/Footer/Footer'
import DoorOverlay from './components/DoorOverlay'export default {name: 'App',components: {Header,Footer,DoorOverlay}
}
</script><style>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;
}
a{text-decoration: none;color: #000000;
}
li{list-style: none;
}
*{margin: 0;padding: 0;
}
@media screen and (max-width:768px) {/* #app {padding-top:200px;} */
}
</style>

四、效果展示

http://www.lryc.cn/news/418835.html

相关文章:

  • 简单的docker学习 第8章 docker常用服务安装
  • 01、MySQL-DDL(数据定义语言)
  • RT-Thread 操作系统 之 线程间同步 IO设备模型
  • 力扣leetcode移动0(C++)
  • 阿里云部署open-webui实现openai代理服务
  • 你的工作环境,选对劳保鞋了吗?守护安全,从脚下开始!
  • 【Linux】编译器gcc/g++ 、程序翻译过程、动静态库
  • 通义灵码-阿里云推出的AI智能编码助手
  • 构建智能生态,视频监控/安防监控EasyCVR视频汇聚流媒体技术在智能分析领域的应用
  • LeetCode Hard|【460. LFU 缓存】
  • 积极参与全球能源科技前沿对话,海博思创推动绿色低碳发展
  • [工具]-ffmpeg-笔记
  • Android Fragment:详解,结合真实开发场景Navigation
  • JavaWeb中的Servlet
  • SpringBoot AOP 简单的权限校验
  • Java生成Word->PDF->图片:基于poi-tl 进行word模板渲染
  • JVM内存模型笔记
  • 每日一练 - eSight 网管远程告警通知方式
  • [matlab] 鲸鱼优化算法优化KNN分类器的特征选择
  • vscode ssh-remote 疑似内存泄漏问题
  • 初识自然语言处理NLP
  • 分布式系统架构-微服务架构
  • docker搭建内网穿透服务
  • html+css+js网页设计 体育 金轮健身7个页面
  • BGP基础简介(一)
  • 力扣面试150 反转链表 II 三指针
  • GPT-4.o mini
  • 【C++】优先级队列(容器适配器)
  • docker代理
  • (四)activit5.23.0修复跟踪高亮显示BUG