Files
2026-07-30 11:23:50 +08:00

11 KiB
Raw Permalink Blame History

Luxsin CMS Dashboard — Design System Specification

Version: 1.0
Style: Glassmorphism + Dimensional Layering + Dark Mode OLED
Scope: Vue 3 + Element Plus SPA (内部管理系统)


1. Design Philosophy

Luxsin CMS Dashboard 采用三层融合设计语言,将登录页的精致玻璃美学统一到全站:

层级 风格 占比 职责
主风格 Glassmorphism 60% 半透明毛玻璃表面、backdrop-filter 模糊、微弱边框光晕
辅助风格 Dimensional Layering 25% 4 级 elevation 空间层级,通过阴影和浮起建立信息层次
辅助风格 Dark Mode OLED 15% 深空黑底色保障对比度,焦点 ring 反馈,minimal glow

Design Principles

  1. Glass everywhere — 侧栏、顶栏、卡片、表格、对话框、输入框全部使用半透明玻璃
  2. Depth through layers — 4 级 elevation (bg → content → floating → overlay) 建立空间秩序
  3. Contrast first — 所有文本确保 WCAG AA (4.5:1),关键文本 AAA (7:1)
  4. Consistency over creativity — 统一 Token 驱动,不做页面级定制

2. Color System

2.1 Primitives (不可变)

/* 基础色板 */
--lux-space-900:  #020617;
--lux-space-800:  #0a0e14;    /* 页面底色 */
--lux-space-700:  #0f172a;    /* 输入框底色 */
--lux-space-600:  #1e293b;    /* 卡片底色 */
--lux-space-500:  #334155;
--lux-space-400:  #475569;
--lux-space-300:  #94a3b8;    /* muted text */
--lux-space-200:  #cbd5e1;
--lux-space-100:  #e2e8f0;    /* strong text */

/* 品牌色 */
--lux-cyan:       #38bdf8;    /* 主品牌 */
--lux-cyan-light: #7dd3fc;
--lux-cyan-glow:  rgba(56, 189, 248, 0.25);
--lux-indigo:     #6366f1;
--lux-violet:     #7c3aed;

2.2 Semantic Tokens

/* 页面 */
--lux-page-bg:            #0a0e14;
--lux-page-gradient:      radial-gradient(ellipse 120% 90% at 50% -15%, #1a2840 0%, #0d1117 48%, #0a0e14 100%);

/* 文本 */
--lux-text-strong:        #e2e8f0;    /* 标题、重要文本 — 对比度 13.5:1 */
--lux-text-body:          #cbd5e1;    /* 正文 — 对比度 10.2:1 */
--lux-text-muted:         #94a3b8;    /* 辅助文本 — 对比度 5.8:1 */
--lux-text-dim:           #64748b;    /* 最弱文本 — 对比度 3.5:1 (仅装饰性) */

/* 玻璃表面 */
--lux-glass-bg-card:      rgba(30, 41, 59, 0.55);    /* 卡片 */
--lux-glass-bg-table:     rgba(30, 41, 59, 0.45);    /* 表格 */
--lux-glass-bg-input:     rgba(15, 23, 42, 0.45);    /* 输入框 */
--lux-glass-bg-dialog:    rgba(30, 41, 59, 0.72);    /* 对话框 */
--lux-glass-bg-sidebar:   rgba(15, 23, 42, 0.60);    /* 侧栏 */
--lux-glass-bg-header:    rgba(30, 41, 59, 0.75);    /* 顶栏 */
--lux-glass-bg-tab:       rgba(30, 41, 59, 0.35);    /* 标签页 */

/* 玻璃边框 */
--lux-glass-border:       rgba(255, 255, 255, 0.08);
--lux-glass-border-hover: rgba(255, 255, 255, 0.14);
--lux-glass-border-focus: rgba(56, 189, 248, 0.45);

/* 模糊强度 */
--lux-blur-sm:   blur(8px);
--lux-blur-md:   blur(14px);
--lux-blur-lg:   blur(20px);
--lux-blur-xl:   blur(24px);

2.3 Elevation Shadows

/* 4级 Elevation */
--lux-shadow-1:  0 2px 8px rgba(0, 0, 0, 0.18);                    /* 卡片 resting */
--lux-shadow-2:  0 4px 16px rgba(0, 0, 0, 0.25);                   /* 卡片 hover / 浮起 */
--lux-shadow-3:  0 8px 32px rgba(0, 0, 0, 0.35);                   /* 弹出层 */
--lux-shadow-4:  0 25px 50px rgba(0, 0, 0, 0.50);                  /* 对话框 overlay */

/* 品牌 glow (焦点态) */
--lux-glow-cyan: 0 0 0 3px rgba(56, 189, 248, 0.15), 0 0 0 1px rgba(56, 189, 248, 0.45) inset;

3. Typography

Font Stack

--lux-font: 'Inter', 'Segoe UI', system-ui, -apple-system, 'PingFang SC', 'Microsoft YaHei', sans-serif;
--lux-font-mono: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', ui-monospace, monospace;

Scale

Token Size Weight Use
--lux-text-hero 24px 700 首页欢迎标题
--lux-text-h1 18px 700 页面标题、卡片标题
--lux-text-h2 16px 600 子标题、对话框标题
--lux-text-body 14px 400 正文、表格单元格
--lux-text-sm 13px 400 辅助文本、分页
--lux-text-xs 12px 500 标签、徽章、脚注

Letter Spacing

  • 标题: -0.02em
  • 正文: 0
  • 大写标签: 0.03em

4. Spacing

--lux-space-1:  4px;
--lux-space-2:  8px;
--lux-space-3:  12px;
--lux-space-4:  16px;
--lux-space-5:  20px;
--lux-space-6:  24px;
--lux-space-8:  32px;
--lux-space-10: 40px;
--lux-space-12: 48px;

5. Border Radius

--lux-radius-sm:  8px;    /* 标签、小按钮 */
--lux-radius-md:  10px;   /* 输入框、下拉菜单 */
--lux-radius-lg:  14px;   /* 卡片、搜索栏 */
--lux-radius-xl:  18px;   /* 对话框 */
--lux-radius-2xl: 24px;   /* 登录卡片 */
--lux-radius-pill: 999px; /* 徽章、圆形按钮 */

6. Elevation System (Dimensional Layering)

Level Z-index Surface Use
L0 — Background 0 页面渐变 + 光球 宇宙底色装饰层
L1 — Content 1 玻璃卡片 (blur 1420px) 搜索栏、表格卡片、首页卡片
L2 — Floating 10100 侧栏、顶栏、TabsView 导航/定位组件
L3 — Overlay 2000+ 对话框、下拉菜单 Teleport 弹出层

7. Component Specifications

7.1 Card (el-card)

背景:        var(--lux-glass-bg-card)
模糊:        var(--lux-blur-lg)  [20px]
边框:        1px solid var(--lux-glass-border)
圆角:        var(--lux-radius-lg)  [14px]
阴影:        var(--lux-shadow-1)
hover 阴影:  var(--lux-shadow-2)
padding:     20px (body), 16px 20px (header)

7.2 Table (el-table)

表头背景:    rgba(15, 23, 42, 0.65) + blur(14px)
行背景:      transparent (卡片底色透出)
hover 行:    rgba(56, 189, 248, 0.06)
边框色:      rgba(255, 255, 255, 0.06)
文字:        var(--lux-text-body)
表头文字:    var(--lux-text-muted)
圆角:        12px (overflow hidden)

7.3 Dialog (el-dialog, Teleport)

背景:        var(--lux-glass-bg-dialog) + blur(24px)
边框:        1px solid var(--lux-glass-border)
圆角:        var(--lux-radius-xl)  [18px]
阴影:        var(--lux-shadow-4) + inset glow
header:      1px solid rgba(255, 255, 255, 0.08) 底分割

7.4 Input (el-input, el-select)

背景:        var(--lux-glass-bg-input)
圆角:        var(--lux-radius-md)  [10px]
边框:        1px solid var(--lux-glass-border)
focus:       1px solid var(--lux-glass-border-focus) + var(--lux-glow-cyan)
placeholder: var(--lux-text-dim)

7.5 Button — Primary

背景:        linear-gradient(135deg, #38bdf8, #22d3ee)
文字:        #fff
圆角:        var(--lux-radius-md)  [10px]
阴影:        0 4px 12px rgba(56, 189, 248, 0.25)
hover 阴影:  0 6px 16px rgba(56, 189, 248, 0.35)

7.6 Sidebar

背景:        var(--lux-glass-bg-sidebar)
模糊:        var(--lux-blur-lg)  [18px]
宽度:        64px (collapsed) / 220px (expanded)
边框右:      1px solid rgba(255, 255, 255, 0.08)
z-index:     100 (L2)
active item: gradient bg rgba(56,189,248,0.22) → rgba(99,102,241,0.14)
             + 1px inset border rgba(56,189,248,0.25)

7.7 Header

背景:        var(--lux-glass-bg-header)
模糊:        var(--lux-blur-md)  [14px]
高度:        44px
圆角:        10px
边框:        1px solid var(--lux-glass-border)
阴影:        var(--lux-shadow-1)

7.8 TabsView

inactive:    rgba(30, 41, 59, 0.35) 背景, 无模糊
active:      rgba(30, 41, 59, 0.55) + 上方 2px cyan 指示条
圆角:        10px
gap:         4px

7.9 Pagination

背景:        transparent
active:      #38bdf8 实心背景 + white text + 8px radius
hover:       cyan 文字

7.10 Tag (el-tag)

圆角:        8px
背景:        rgba 半透明 (继承 Element Plus type 色 at 15% alpha)

7.11 Dropdown Menu

背景:        rgba(30, 41, 59, 0.82) + blur(18px)
边框:        1px solid var(--lux-glass-border)
圆角:        10px
hover item:  rgba(56, 189, 248, 0.12)

8. Motion

/* 过渡时间 */
--lux-duration-fast:   0.15s;    /* hover 状态切换 */
--lux-duration-normal: 0.25s;    /* 展开/折叠 */
--lux-duration-slow:   0.35s;    /* 页面切换 */

/* 缓动 */
--lux-ease:            ease;
--lux-ease-out:        cubic-bezier(0.16, 1, 0.3, 1);

Key Transitions

  • 卡片 hover: transform: translateY(-2px) + shadow 加深, 0.15s
  • 侧栏展开/折叠: width 64→220px, 0.30s ease
  • 对话框进出: Element Plus 默认 fade + scale (不覆盖)
  • 输入框 focus: box-shadow ring 0.2s ease

9. Accessibility

项目 标准
正文文本对比度 WCAG AA ≥ 4.5:1 (实际 #e2e8f0 on #0a0e14 = 13.5:1)
辅助文本对比度 WCAG AA ≥ 4.5:1 (实际 #94a3b8 on #1e293b = 5.8:1)
焦点指示 3px cyan glow ring (box-shadow)
触摸目标 按钮 ≥ 32×32px, 输入框高度 ≥ 32px
半透明文本 不低于 rgba(255,255,255,0.55)

10. Bug Fixes (Pre-refactoring)

文件 问题 修复
views/brand/index.vue .title { color: #333 } 深色背景不可见 #e2e8f0
views/blacklist/index.vue .title { color: #333 } #e2e8f0
views/ota-target-device/index.vue .title { color: #333 } #e2e8f0

11. File Impact Map

文件 改动类型 改动范围
styles/lux-theme.css 主改 Token 扩展 + 全组件玻璃化 (~60% 改动)
components/TabsView.vue 样式 玻璃标签页样式
views/home/index.vue 样式 首页卡片玻璃化
views/brand/index.vue 样式+bug 列表页玻璃化 + 修复 .title
views/model/index.vue 样式 列表页玻璃化
views/ota/index.vue 样式 列表页玻璃化
views/blacklist/index.vue 样式+bug 列表页玻璃化 + 修复 .title
views/ota-target-device/index.vue 样式+bug 列表页玻璃化 + 修复 .title
views/share-code/log.vue 样式 列表页玻璃化
views/system/users/index.vue 样式 列表页玻璃化
views/login/index.vue 无改动 已是标杆实现
layout/index.vue 无改动 已是玻璃化实现

12. Implementation Phases

  1. Token 扩展 — lux-theme.css 新增 glass/elevation/spacing 变量
  2. Bug 修复 — 3 个文件 .title 颜色修复
  3. 卡片玻璃化.el-card 改为半透明 + blur
  4. 表格玻璃化.el-table 透明底 + 半透明表头
  5. 输入框玻璃化.el-input / .el-select 玻璃输入
  6. 对话框玻璃化.el-dialog 玻璃面板
  7. 按钮/标签/分页 — 统一 glass 风格
  8. TabsView 玻璃化 — 标签栏玻璃标签
  9. 列表页 scoped 样式 — 各页面 .title/.card-header 统一
  10. 首页增强 — 快捷入口卡片 + 今日新增卡片玻璃化
  11. 下拉菜单/消息框 — 弹出层玻璃化