修复headerVue中,屏幕宽度小于800px,无法切换显示选项的问题

This commit is contained in:
2024-08-29 13:29:16 +08:00
parent d9a44505bc
commit 2a005b2e14

View File

@@ -1,5 +1,41 @@
<script setup lang="ts"> <script setup lang="ts">
import { onMounted } from 'vue';
import { useRouter } from 'vue-router';
const router = useRouter()
interface MoreOptionsVisable {
moreOptions: HTMLElement | null;
show(): void;
hidden(): void;
toggle(): void;
}
const moreOptionsVisable: MoreOptionsVisable = {
moreOptions: null,
show() {
if (!this.moreOptions)
throw new Error('moreOptions元素不存在');
this.moreOptions.classList.remove('header-right-hidden');
},
hidden() {
if (!this.moreOptions)
throw new Error('moreOptions元素不存在');
this.moreOptions.classList.add('header-right-hidden');
},
toggle() {
if (!this.moreOptions)
throw new Error('moreOptions元素不存在');
this.moreOptions.classList.toggle('header-right-hidden')
}
}
onMounted(async () => {
moreOptionsVisable.moreOptions = document.querySelector("#header-right");
});
router.afterEach(() => {
moreOptionsVisable.hidden();
});
</script> </script>
<template> <template>
<div class="main-container"> <div class="main-container">
@@ -13,7 +49,8 @@
<div class="title">特恩(TONE)</div> <div class="title">特恩(TONE)</div>
</RouterLink> </RouterLink>
</div> </div>
<div class="more" tabindex="0" id="header-more"> <!-- 更多选项按钮宽度小于800时出现 -->
<div class="more" tabindex="0" id="header-more" @click="moreOptionsVisable.toggle">
<svg t="1705913460674" class="icon" viewBox="0 0 1024 1024" version="1.1" <svg t="1705913460674" class="icon" viewBox="0 0 1024 1024" version="1.1"
xmlns="http://www.w3.org/2000/svg" p-id="10513" width="20" height="20"> xmlns="http://www.w3.org/2000/svg" p-id="10513" width="20" height="20">
<path <path
@@ -34,7 +71,8 @@
<div class="link" :class="{ 'link-chosen': $route.name === 'blog' }">博客</div> <div class="link" :class="{ 'link-chosen': $route.name === 'blog' }">博客</div>
</RouterLink> </RouterLink>
<RouterLink :to="{ name: 'login' }" v-show="true"> <RouterLink :to="{ name: 'login' }" v-show="true">
<div class="link" :class="{ 'link-chosen': $route.name === 'login' || $route.name === 'dashboard'}">控制台</div> <div class="link"
:class="{ 'link-chosen': $route.name === 'login' || $route.name === 'dashboard' }">控制台</div>
</RouterLink> </RouterLink>
</div> </div>
</div> </div>