fix(theme): fix nav screen and divider appearance (#5369)

pull/5374/head
Bjorn Lu 4 weeks ago committed by GitHub
parent 45cb85e510
commit a0401eed4b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -79,7 +79,6 @@ const { isHome, hasSidebar } = useLayout()
.VPNavBar.screen-open { .VPNavBar.screen-open {
transition: none; transition: none;
background-color: var(--vp-nav-bg-color); background-color: var(--vp-nav-bg-color);
border-bottom: 1px solid var(--vp-c-divider);
} }
.VPNavBar:not(.home) { .VPNavBar:not(.home) {
@ -252,19 +251,23 @@ const { isHome, hasSidebar } = useLayout()
.divider-line { .divider-line {
width: 100%; width: 100%;
height: 1px; height: 1px;
transition: background-color 0.5s; transition: background-color 0.25s;
} }
.VPNavBar:not(.home) .divider-line { .VPNavBar:not(.home) .divider-line {
background-color: var(--vp-c-gutter); background-color: var(--vp-c-gutter);
} }
.VPNavBar.screen-open .divider-line {
background-color: var(--vp-c-divider);
}
@media (min-width: 60rem) { @media (min-width: 60rem) {
.VPNavBar:not(.home.top) .divider-line { .divider-line {
background-color: var(--vp-c-gutter); transition: background-color 0.5s;
} }
.VPNavBar:not(.has-sidebar):not(.home.top) .divider { .VPNavBar:not(.home.top) .divider-line {
background-color: var(--vp-c-gutter); background-color: var(--vp-c-gutter);
} }
} }

@ -1,5 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { useScrollLock } from '@vueuse/core' import { useScrollLock, useWindowScroll } from '@vueuse/core'
import { inBrowser } from 'vitepress' import { inBrowser } from 'vitepress'
import VPNavScreenAppearance from './VPNavScreenAppearance.vue' import VPNavScreenAppearance from './VPNavScreenAppearance.vue'
import VPNavScreenMenu from './VPNavScreenMenu.vue' import VPNavScreenMenu from './VPNavScreenMenu.vue'
@ -11,6 +11,7 @@ defineProps<{
}>() }>()
const isLocked = useScrollLock(inBrowser ? document.body : null) const isLocked = useScrollLock(inBrowser ? document.body : null)
const { y } = useWindowScroll()
</script> </script>
<template> <template>
@ -19,7 +20,7 @@ const isLocked = useScrollLock(inBrowser ? document.body : null)
@enter="isLocked = true" @enter="isLocked = true"
@after-leave="isLocked = false" @after-leave="isLocked = false"
> >
<div v-if="open" class="VPNavScreen" id="VPNavScreen"> <div v-if="open" class="VPNavScreen" id="VPNavScreen" :style="{ '--vp-y': y + 'px' }">
<div class="container"> <div class="container">
<slot name="nav-screen-content-before" /> <slot name="nav-screen-content-before" />
<VPNavScreenMenu class="menu" /> <VPNavScreenMenu class="menu" />
@ -35,13 +36,15 @@ const isLocked = useScrollLock(inBrowser ? document.body : null)
<style scoped> <style scoped>
.VPNavScreen { .VPNavScreen {
position: fixed; position: fixed;
top: calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px)); /* reserve 1px for the VPNavBar divider */
top: calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 1px - var(--vp-y));
/*rtl:ignore*/ /*rtl:ignore*/
right: 0; right: 0;
bottom: 0; bottom: 0;
/*rtl:ignore*/ /*rtl:ignore*/
left: 0; left: 0;
padding: 0 2rem; padding: 0 2rem;
padding-top: var(--vp-y);
width: 100%; width: 100%;
background-color: var(--vp-nav-screen-bg-color); background-color: var(--vp-nav-screen-bg-color);
overflow-y: auto; overflow-y: auto;

Loading…
Cancel
Save