blog / src /styles /navbar.css
cacode's picture
Upload 434 files
96dd062 verified
/**
* 统一导航栏样式
*
* 模式说明:
* ============================================
* 1. 壁纸模式 (backgroundWallpaper.mode):
* - "banner": 横幅壁纸模式 (有 #banner-wrapper)
* - "overlay": 全屏壁纸模式 (body.wallpaper-transparent)
* - "none": 纯色背景无壁纸
*
* 2. 导航栏配置 (banner.navbar):
* - transparentMode: "semi" | "full" | "semifull" (仅在 Banner 模式下生效)
* - enableBlur: true/false (仅在 Banner 模式下生效)
*
* 注意:Overlay 模式下的导航栏始终跟随卡片样式 (var(--card-bg-transparent) + blur),
* 不受 Banner 配置 (transparentMode, enableBlur) 的影响。
* ============================================
*/
/* ============================================
* 基础导航栏样式
* 适用: 所有模式,所有设备
* ============================================ */
#navbar>div {
background: var(--card-bg);
border: 1px solid transparent;
border-radius: 0 0 0.75rem 0.75rem;
transition: all var(--duration-medium) var(--ease-standard);
}
/* ============================================
* 桌面端 - 亮色主题 - Banner模式
* 适用: 桌面端(≥1024px) + Banner模式 + 亮色主题
* 遵循: transparentMode, enableBlur 配置
* ============================================ */
@media (min-width: 1024px) {
/* "semi" */
#banner-wrapper~* #navbar[data-transparent-mode="semi"]>div,
body:has(#banner-wrapper) #navbar[data-transparent-mode="semi"]>div {
backdrop-filter: blur(var(--navbar-glass-blur, 20px)) !important;
background: rgba(255, 255, 255, var(--opacity-55)) !important;
border: 1px solid rgba(255, 255, 255, var(--opacity-55)) !important;
border-radius: 0 0 0.75rem 0.75rem !important;
box-shadow: var(--shadow-navbar) !important;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
}
/* "full" */
#banner-wrapper~* #navbar[data-transparent-mode="full"]>div,
body:has(#banner-wrapper) #navbar[data-transparent-mode="full"]>div {
backdrop-filter: none !important;
background: transparent !important;
border: none !important;
border-radius: 0 !important;
box-shadow: none !important;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
}
/* "semifull" (static) */
#banner-wrapper~* #navbar[data-transparent-mode="semifull"]>div,
body:has(#banner-wrapper) #navbar[data-transparent-mode="semifull"]>div {
backdrop-filter: none !important;
background: transparent !important;
border: none !important;
border-radius: 0 0 0.75rem 0.75rem !important;
box-shadow: none !important;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
}
/* "semifull" (scrolled) */
#banner-wrapper~* #navbar[data-transparent-mode="semifull"].scrolled>div,
body:has(#banner-wrapper) #navbar[data-transparent-mode="semifull"].scrolled>div {
backdrop-filter: blur(var(--navbar-glass-blur, 20px)) !important;
background: rgba(255, 255, 255, var(--opacity-55)) !important;
border: 1px solid rgba(255, 255, 255, var(--opacity-55)) !important;
border-radius: 0 0 0.75rem 0.75rem !important;
box-shadow: var(--shadow-navbar) !important;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
}
}
/* ============================================
* 移动端 - 亮色主题 - Banner模式
* 适用: 移动端(≤1023px) + Banner模式 + 亮色主题 + 仅首页生效
* ============================================ */
@media (max-width: 1023px) {
/* "semi" */
#banner-wrapper~* #navbar[data-transparent-mode="semi"][data-is-home="true"]>div,
body:has(#banner-wrapper) #navbar[data-transparent-mode="semi"][data-is-home="true"]>div {
backdrop-filter: blur(var(--navbar-glass-blur, 20px)) !important;
background: rgba(255, 255, 255, var(--opacity-55)) !important;
border: 1px solid rgba(255, 255, 255, var(--opacity-55)) !important;
border-radius: 0 0 0.75rem 0.75rem !important;
box-shadow: var(--shadow-navbar) !important;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
}
/* "full" */
#banner-wrapper~* #navbar[data-transparent-mode="full"][data-is-home="true"]>div,
body:has(#banner-wrapper) #navbar[data-transparent-mode="full"][data-is-home="true"]>div {
backdrop-filter: none !important;
background: transparent !important;
border: none !important;
border-radius: 0 !important;
box-shadow: none !important;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
}
/* "semifull" (static) */
#banner-wrapper~* #navbar[data-transparent-mode="semifull"][data-is-home="true"]>div,
body:has(#banner-wrapper) #navbar[data-transparent-mode="semifull"][data-is-home="true"]>div {
backdrop-filter: none !important;
background: transparent !important;
border: none !important;
border-radius: 0 0 0.75rem 0.75rem !important;
box-shadow: none !important;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
}
/* "semifull" (scrolled) */
#banner-wrapper~* #navbar[data-transparent-mode="semifull"][data-is-home="true"].scrolled>div,
body:has(#banner-wrapper) #navbar[data-transparent-mode="semifull"][data-is-home="true"].scrolled>div {
backdrop-filter: blur(var(--navbar-glass-blur, 20px)) !important;
background: rgba(255, 255, 255, var(--opacity-55)) !important;
border: 1px solid rgba(255, 255, 255, var(--opacity-55)) !important;
border-radius: 0 0 0.75rem 0.75rem !important;
box-shadow: var(--shadow-navbar) !important;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
}
}
/* ============================================
* 桌面端 - 暗色主题 - Banner模式
* ============================================ */
@media (min-width: 1024px) {
/* "semi" */
:root.dark #banner-wrapper~* #navbar[data-transparent-mode="semi"]>div,
:root.dark body:has(#banner-wrapper) #navbar[data-transparent-mode="semi"]>div {
background: rgba(0, 0, 0, var(--opacity-55)) !important;
border: 1px solid rgba(0, 0, 0, var(--opacity-55)) !important;
box-shadow: var(--shadow-navbar-dark) !important;
}
/* "full" */
:root.dark #banner-wrapper~* #navbar[data-transparent-mode="full"]>div,
:root.dark body:has(#banner-wrapper) #navbar[data-transparent-mode="full"]>div {
background: transparent !important;
border: none !important;
box-shadow: none !important;
}
/* "semifull" (static) */
:root.dark #banner-wrapper~* #navbar[data-transparent-mode="semifull"]>div,
:root.dark body:has(#banner-wrapper) #navbar[data-transparent-mode="semifull"]>div {
background: transparent !important;
border: none !important;
box-shadow: none !important;
}
/* "semifull" (scrolled) */
:root.dark #banner-wrapper~* #navbar[data-transparent-mode="semifull"].scrolled>div,
:root.dark body:has(#banner-wrapper) #navbar[data-transparent-mode="semifull"].scrolled>div {
background: rgba(0, 0, 0, var(--opacity-55)) !important;
border: 1px solid rgba(0, 0, 0, var(--opacity-55)) !important;
box-shadow: var(--shadow-navbar-dark) !important;
}
}
/* ============================================
* 移动端 - 暗色主题 - Banner模式
* ============================================ */
@media (max-width: 1023px) {
/* "semi" */
:root.dark #banner-wrapper~* #navbar[data-transparent-mode="semi"][data-is-home="true"]>div,
:root.dark body:has(#banner-wrapper) #navbar[data-transparent-mode="semi"][data-is-home="true"]>div {
background: rgba(0, 0, 0, var(--opacity-55)) !important;
border: 1px solid rgba(0, 0, 0, var(--opacity-55)) !important;
box-shadow: var(--shadow-navbar-dark) !important;
}
/* "full" */
:root.dark #banner-wrapper~* #navbar[data-transparent-mode="full"][data-is-home="true"]>div,
:root.dark body:has(#banner-wrapper) #navbar[data-transparent-mode="full"][data-is-home="true"]>div {
background: transparent !important;
border: none !important;
box-shadow: none !important;
}
/* "semifull" (static) */
:root.dark #banner-wrapper~* #navbar[data-transparent-mode="semifull"][data-is-home="true"]>div,
:root.dark body:has(#banner-wrapper) #navbar[data-transparent-mode="semifull"][data-is-home="true"]>div {
background: transparent !important;
border: none !important;
box-shadow: none !important;
}
/* "semifull" (scrolled) */
:root.dark #banner-wrapper~* #navbar[data-transparent-mode="semifull"][data-is-home="true"].scrolled>div,
:root.dark body:has(#banner-wrapper) #navbar[data-transparent-mode="semifull"][data-is-home="true"].scrolled>div {
background: rgba(0, 0, 0, var(--opacity-55)) !important;
border: 1px solid rgba(0, 0, 0, var(--opacity-55)) !important;
box-shadow: var(--shadow-navbar-dark) !important;
}
}
/* ============================================
* 关闭毛玻璃模糊效果 - Banner模式
* ============================================ */
body:has(#banner-wrapper) #navbar[data-transparent-mode="semi"][data-enable-blur="false"]>div,
body:has(#banner-wrapper) #navbar[data-transparent-mode="semi"][data-enable-blur="false"].scrolled>div {
backdrop-filter: none !important;
}
body:has(#banner-wrapper) #navbar[data-transparent-mode="full"][data-enable-blur="false"]>div,
body:has(#banner-wrapper) #navbar[data-transparent-mode="full"][data-enable-blur="false"].scrolled>div {
backdrop-filter: none !important;
}
body:has(#banner-wrapper) #navbar[data-transparent-mode="semifull"][data-enable-blur="false"]>div,
body:has(#banner-wrapper) #navbar[data-transparent-mode="semifull"][data-enable-blur="false"].scrolled>div {
backdrop-filter: none !important;
}
/* 调整下拉菜单和浮动面板的背景透明度 */
/* 亮色主题 */
#banner-wrapper~* .dropdown-content,
#banner-wrapper~* .float-panel,
body:has(#banner-wrapper) .dropdown-content,
body:has(#banner-wrapper) .float-panel,
body.wallpaper-transparent .dropdown-content,
body.wallpaper-transparent .float-panel {
background: rgba(255, 255, 255, 0.95) !important;
box-shadow: var(--shadow-md) !important;
border: 1px solid rgba(0, 0, 0, 0.05) !important;
}
/* 暗色主题 */
:root.dark #banner-wrapper~* .dropdown-content,
:root.dark #banner-wrapper~* .float-panel,
:root.dark body:has(#banner-wrapper) .dropdown-content,
:root.dark body:has(#banner-wrapper) .float-panel,
:root.dark body.wallpaper-transparent .dropdown-content,
:root.dark body.wallpaper-transparent .float-panel {
background: rgba(23, 23, 23, 0.95) !important;
box-shadow: var(--shadow-md) !important;
border: 1px solid rgba(255, 255, 255, 0.1) !important;
}
/* ============================================
* 全宽导航栏适配 (Full Width Navbar)
* 确保在开启全宽模式时覆盖所有圆角和宽度限制
* 针对所有模式(Banner模式、壁纸模式、透明模式)统一去除圆角
* 使用高优先级选择器确保覆盖原主题样式
* 仅在桌面端 (min-width: 1024px) 生效,移动端保留圆角
* ============================================ */
@media (min-width: 1024px) {
#navbar-wrapper #navbar[data-full-width="true"] > div,
body:has(#banner-wrapper) #navbar-wrapper #navbar[data-full-width="true"] > div,
body.wallpaper-transparent #navbar-wrapper #navbar[data-full-width="true"] > div,
#navbar-wrapper #navbar[data-full-width="true"].scrolled > div {
border-radius: 0 !important;
width: 100% !important;
max-width: none !important;
margin: 0 !important;
}
}
/* ============================================
* 小于1200px时隐藏导航栏菜单图标
* ============================================ */
@media (max-width: 1199px) {
.navbar-icon {
display: none !important;
}
}