Index界面可以隐藏NavBar
This commit is contained in:
39
src/App.vue
39
src/App.vue
@@ -12,6 +12,14 @@ const isDarkMode = ref(
|
||||
window.matchMedia("(prefers-color-scheme: dark)").matches,
|
||||
);
|
||||
|
||||
// Navbar显示状态管理
|
||||
const showNavbar = ref(true);
|
||||
|
||||
// 切换Navbar显示状态
|
||||
const toggleNavbar = () => {
|
||||
showNavbar.value = !showNavbar.value;
|
||||
};
|
||||
|
||||
// 初始化主题设置
|
||||
onMounted(() => {
|
||||
// 应用初始主题
|
||||
@@ -47,6 +55,12 @@ provide("theme", {
|
||||
toggleTheme,
|
||||
});
|
||||
|
||||
// 提供Navbar控制给子组件
|
||||
provide("navbar", {
|
||||
showNavbar,
|
||||
toggleNavbar,
|
||||
});
|
||||
|
||||
const currentRoutePath = computed(() => {
|
||||
return router.currentRoute.value.path;
|
||||
});
|
||||
@@ -56,8 +70,8 @@ useAlertProvider();
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<header class="relative">
|
||||
<Navbar />
|
||||
<header class="relative" :class="{ 'navbar-hidden': !showNavbar }">
|
||||
<Navbar v-show="showNavbar" />
|
||||
<Dialog />
|
||||
<Alert />
|
||||
</header>
|
||||
@@ -79,4 +93,25 @@ useAlertProvider();
|
||||
|
||||
<style scoped>
|
||||
/* 特定于App.vue的样式 */
|
||||
header {
|
||||
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||
transform-origin: top;
|
||||
}
|
||||
|
||||
.navbar-hidden {
|
||||
transform: scaleY(0);
|
||||
height: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Navbar显示/隐藏动画 */
|
||||
header .navbar {
|
||||
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||
transform-origin: top;
|
||||
}
|
||||
|
||||
/* 当header被隐藏时,确保navbar也相应变化 */
|
||||
.navbar-hidden .navbar {
|
||||
opacity: 0;
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user