修正移动端样式
This commit is contained in:
parent
aab7ab5a67
commit
90fabfff12
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
import {getAssetURL} from "@/utils/function.ts";
|
import {getAssetURL} from "@/utils/function.ts";
|
||||||
import NavBarEntryItem from "@/components/nav/NavBarEntryItem.vue";
|
import NavBarEntryItem from "@/components/nav/NavBarEntryItem.vue";
|
||||||
import {computed} from "vue";
|
import {computed, ref} from "vue";
|
||||||
|
|
||||||
type Widget = {
|
type Widget = {
|
||||||
icon: string[]
|
icon: string[]
|
||||||
@ -30,6 +30,7 @@ const littleWidget: Widget[] = [
|
|||||||
const logoUrl = getAssetURL("logo-c.png")
|
const logoUrl = getAssetURL("logo-c.png")
|
||||||
const logoType: string = "logo";
|
const logoType: string = "logo";
|
||||||
const showLogo = computed(() => logoType === 'text')
|
const showLogo = computed(() => logoType === 'text')
|
||||||
|
const isExpended = ref<boolean>(true)
|
||||||
|
|
||||||
const entry = [
|
const entry = [
|
||||||
{
|
{
|
||||||
@ -75,29 +76,39 @@ const entry = [
|
|||||||
entry: []
|
entry: []
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
const menuExpanded = () => {
|
||||||
|
isExpended.value = !isExpended.value
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<nav
|
<nav class="fixed z-20 h-16 w-full bg-white bg-opacity-70 text-gray-600 shadow backdrop-blur-md">
|
||||||
class="fixed z-20 h-16 w-full bg-white bg-opacity-70 text-gray-600 shadow backdrop-blur-md"
|
|
||||||
>
|
|
||||||
<div class="container mx-auto flex h-16 w-full items-center justify-between px-4 md:px-0 xl:max-w-screen-xl">
|
<div class="container mx-auto flex h-16 w-full items-center justify-between px-4 md:px-0 xl:max-w-screen-xl">
|
||||||
<!-- 下拉菜单按钮 -->
|
<!-- 下拉菜单按钮 -->
|
||||||
<div class="flex h-8 w-10 rounded-md border-gray-600 md:hidden justify-center items-center">
|
<div class="flex h-8 w-10 items-center justify-center rounded-md border-gray-600 md:hidden"
|
||||||
|
@click="menuExpanded"
|
||||||
|
>
|
||||||
<font-awesome-icon :icon="['fas', 'bars']" class="h-6"/>
|
<font-awesome-icon :icon="['fas', 'bars']" class="h-6"/>
|
||||||
</div>
|
</div>
|
||||||
<!-- Logo -->
|
<!-- Logo -->
|
||||||
<div class="absolute left-1/2 -translate-x-1/2 md:relative md:translate-x-0 md:left-0">
|
<div class="absolute left-1/2 -translate-x-1/2 md:relative md:left-0 md:translate-x-0">
|
||||||
|
<!-- 文字模式 -->
|
||||||
<div v-if="showLogo" class="h-full text-4xl min-w-16 logo py-3.5">
|
<div v-if="showLogo" class="h-full text-4xl min-w-16 logo py-3.5">
|
||||||
<span>CantyOni_on's Index</span>
|
<span>CantyOni_on's Index</span>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- 图片模式 -->
|
||||||
<div v-else class="py-2">
|
<div v-else class="py-2">
|
||||||
<img :src="logoUrl" alt="" class="h-12 w-12"/>
|
<img :src="logoUrl" alt="" class="h-12 w-12"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Entry -->
|
<!-- Entry -->
|
||||||
<div class="hidden md:flex">
|
<div
|
||||||
|
:class="{'h-screen opacity-100 visible': isExpended, 'h-0 opacity-0 invisible': !isExpended}"
|
||||||
|
class="absolute top-full right-0 left-0 bg-white transition-all md:visible md:relative md:top-0 md:flex md:h-auto md:bg-transparent md:opacity-100"
|
||||||
|
>
|
||||||
<nav-bar-entry-item v-for="item in entry" :key="item.title"
|
<nav-bar-entry-item v-for="item in entry" :key="item.title"
|
||||||
:entry="item.entry" :icon="item.icon"
|
:entry="item.entry" :icon="item.icon"
|
||||||
:title="item.title"/>
|
:title="item.title"/>
|
||||||
@ -123,6 +134,6 @@ const entry = [
|
|||||||
}
|
}
|
||||||
|
|
||||||
.active {
|
.active {
|
||||||
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
@ -12,22 +12,20 @@ defineProps<{
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="container relative w-16 max-w-max flex-auto shrink-0 cursor-pointer
|
<div class="container relative w-full max-w-max flex-auto shrink-0 cursor-pointer group md:w-16 md:hover:w-full">
|
||||||
group hover:w-full">
|
<div class="my-1 flex h-14 w-screen items-center rounded-md pr-4 pl-2 md:w-auto md:group-hover:bg-gray-200">
|
||||||
<div class="my-1 flex h-14 items-center rounded-md pr-4 pl-2 group-hover:bg-gray-200">
|
<font-awesome-icon :icon="icon" class="mx-2 md:h-8 md:w-8"/>
|
||||||
<font-awesome-icon :icon="icon" class="mx-2 h-8 w-8"/>
|
<span
|
||||||
<span class="w-0 max-w-max overflow-hidden text-xl transition-all duration-300
|
class="w-full max-w-max overflow-hidden text-lg transition-all duration-300 text-nowrap md:w-0 md:text-xl md:group-hover:w-full">
|
||||||
text-nowrap group-hover:w-full">
|
|
||||||
{{ title }}
|
{{ title }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 下拉菜单 -->
|
<!-- 下拉菜单 -->
|
||||||
<div v-if="entry"
|
<div v-if="entry"
|
||||||
class="invisible absolute top-full left-1/2 overflow-hidden rounded-xl bg-white
|
class="grid grid-cols-2 overflow-hidden transition-all duration-300 min-w-32 item md:invisible md:absolute md:top-full md:left-1/2 md:block md:rounded-xl md:bg-white md:opacity-0 md:shadow-md md:group-hover:visible md:group-hover:-translate-x-1/2 md:group-hover:opacity-100">
|
||||||
opacity-0 shadow-md transition-all duration-300 min-w-32 item
|
<div v-for="item in entry" :key="item.title"
|
||||||
group-hover:visible group-hover:-translate-x-1/2 group-hover:opacity-100">
|
class="px-10 py-2 text-gray-500 text-md md:px-0 md:text-center md:text-lg md:hover:bg-gray-100">
|
||||||
<div v-for="item in entry" :key="item.title" class="py-2 text-center text-lg text-gray-500 hover:bg-gray-100">
|
|
||||||
{{ item.title }}
|
{{ item.title }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -37,6 +35,8 @@ defineProps<{
|
|||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.item {
|
.item {
|
||||||
transform: perspective(500px) rotateX(-45deg) translateX(-50%);
|
@media (min-width: 768px) {
|
||||||
|
transform: perspective(500px) rotateX(-45deg) translateX(-50%);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
Loading…
x
Reference in New Issue
Block a user