/* ============================================================ Sidebar.css - 侧边栏导航样式(Task 1.3) 结构: .xx-sidebar-nav 导航容器 ├── .xx-sidebar-group 分组 │ ├── .xx-sidebar-group-title 分组标题(折叠时隐藏) │ └── .xx-sidebar-menu 菜单列表 │ └── .xx-sidebar-menu-item 菜单项 │ ├── .xx-sidebar-menu-icon 图标 │ └── .xx-sidebar-menu-label 文字标签(折叠时隐藏) └── .xx-sidebar-nav--collapsed 折叠态修饰类 所有样式使用 global.css 设计系统变量 ============================================================ */ /* ── 导航容器 ─────────────────────────────────────────────── */ .xx-sidebar-nav { display: flex; flex-direction: column; gap: var(--space-xs); padding: var(--space-xs) 0; } /* ── 分组 ─────────────────────────────────────────────────── */ .xx-sidebar-group { display: flex; flex-direction: column; } /* 分组标题 */ .xx-sidebar-group-title { padding: var(--space-sm) var(--space-md) var(--space-xs); font-size: var(--font-size-xs); font-weight: var(--font-weight-semibold); color: var(--text-tertiary); text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); line-height: var(--line-height-tight); white-space: nowrap; overflow: hidden; user-select: none; } /* ── 菜单列表 ─────────────────────────────────────────────── */ .xx-sidebar-menu { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--space-xxs); } /* ── 菜单项 ───────────────────────────────────────────────── */ .xx-sidebar-menu-item { display: flex; align-items: center; gap: var(--space-sm); padding: var(--space-sm) var(--space-md); margin: 0 var(--space-xs); border-radius: var(--radius-sm); cursor: pointer; color: var(--text-secondary); font-size: var(--font-size-base); font-weight: var(--font-weight-medium); line-height: var(--line-height-base); transition: var(--transition-colors); white-space: nowrap; overflow: hidden; user-select: none; min-height: 40px; box-sizing: border-box; } .xx-sidebar-menu-item:hover { color: var(--text-primary); background: var(--primary-soft); } /* 激活态 —— Indigo 高亮 */ .xx-sidebar-menu-item.xx-active { color: var(--primary-color); background: var(--primary-soft); font-weight: var(--font-weight-semibold); box-shadow: inset 3px 0 0 var(--primary-color); } .xx-sidebar-menu-item.xx-active:hover { color: var(--primary-hover); background: var(--primary-soft); } /* ── 菜单项图标 ───────────────────────────────────────────── */ .xx-sidebar-menu-icon { display: flex; align-items: center; justify-content: center; flex-shrink: 0; width: 36px; height: 36px; border-radius: 10px; background: #f1f5f9; color: var(--text-secondary); font-size: 18px; line-height: 1; transition: 0.15s ease; } .xx-sidebar-menu-item.xx-active .xx-sidebar-menu-icon { background: var(--primary-color); color: #fff; } .xx-sidebar-menu-item:hover .xx-sidebar-menu-icon { color: var(--primary-color); } /* ── 菜单项文字 ───────────────────────────────────────────── */ .xx-sidebar-menu-label { flex: 1; overflow: hidden; text-overflow: ellipsis; } /* ============================================================ 折叠态 —— 仅显示图标 ============================================================ */ .xx-sidebar-nav--collapsed { padding: var(--space-xs) 0; } /* 折叠时菜单项居中,仅图标 */ .xx-sidebar-nav--collapsed .xx-sidebar-menu-item { justify-content: center; padding: var(--space-sm); margin: 0 var(--space-xxs); } /* 折叠时隐藏分组标题 */ .xx-sidebar-nav--collapsed .xx-sidebar-group-title { display: none; } /* ============================================================ 响应式 —— 移动端(≤768px) 侧边栏整体由 MainLayout 控制显示/隐藏, 此处仅确保导航内容在移动端不溢出 ============================================================ */ @media (max-width: 768px) { .xx-sidebar-nav { padding: var(--space-xs) 0; } .xx-sidebar-menu-item { min-height: 44px; /* 移动端更大的点击区域 */ } }