- 安装和配置 TailwindCSS + shadcn/ui 框架 - 实现完整的 CSS 变量系统(颜色、排版、间距、阴影) - 创建暗黑色主题,紫色系强调色和发光效果 - 实现按钮、卡片、输入框、徽章等组件样式 - 添加流畅的动画和过渡效果 - 创建示例展示页面 - 配置路径别名和 TypeScript 设置 - 添加设计文档 DESIGN.md
4.3 KiB
4.3 KiB
DarkUI - 暗黑色时尚设计系统
基于 TailwindCSS 和 shadcn/ui 构建的现代化暗黑色 UI 设计系统。
🎨 设计理念
- 深邃优雅 - 多层次暗黑色调营造沉浸式体验
- 微光点缀 - 精致的发光效果和渐变
- 现代极简 - 干净利落,注重留白和层次
- 科技感 - 融入现代科技元素
📦 安装
# 安装依赖
npm install
# 启动开发服务器
npm run dev
🎯 颜色系统
基础颜色
| Token | HSL 值 | 预览 | 用途 |
|---|---|---|---|
--background |
240 10% 4% |
🌑 | 主背景色 |
--foreground |
0 0% 98% |
⬜ | 前景文字 |
--surface-1 |
240 8% 7% |
🌑 | 一级卡片 |
--surface-2 |
240 6% 11% |
🌑 | 二级卡片 |
--surface-3 |
240 5% 16% |
🌑 | 三级元素 |
主色(紫色系)
| Token | HSL 值 | 用途 |
|---|---|---|
--primary-500 |
255 87% 70% |
主强调色 |
--primary-600 |
258 87% 61% |
悬停状态 |
--primary-700 |
262 71% 53% |
按下状态 |
功能色
| Token | HSL 值 | 用途 |
|---|---|---|
--success |
152 76% 47% |
成功状态 🟢 |
--warning |
38 92% 56% |
警告提示 🟡 |
--error |
350 86% 61% |
错误信息 🔴 |
--info |
199 89% 54% |
信息提示 🔵 |
🔤 排版系统
/* 字体家族 */
--font-sans: 'Inter', 'SF Pro Display', sans-serif;
--font-mono: 'JetBrains Mono', 'Fira Code', monospace;
/* 字体大小 */
--text-xs: 0.75rem; /* 12px */
--text-sm: 0.875rem; /* 14px */
--text-base: 1rem; /* 16px */
--text-lg: 1.125rem; /* 18px */
--text-xl: 1.25rem; /* 20px */
--text-2xl: 1.5rem; /* 24px */
--text-3xl: 1.875rem; /* 30px */
--text-4xl: 2.25rem; /* 36px */
🧩 组件
按钮
// 主要按钮
<button className="btn-primary">
主要按钮
</button>
// 次要按钮
<button className="btn-secondary">
次要按钮
</button>
// 幽灵按钮
<button className="btn-ghost">
幽灵按钮
</button>
// 发光按钮
<button className="btn-glow">
发光按钮
</button>
卡片
<div className="card">
<h3>卡片标题</h3>
<p>卡片内容</p>
</div>
// 带发光效果
<div className="card card-glow">
<h3>发光卡片</h3>
</div>
输入框
<input
type="email"
className="input"
placeholder="name@example.com"
/>
徽章
<span className="badge-primary">主要</span>
<span className="badge-success">成功</span>
<span className="badge-warning">警告</span>
<span className="badge-error">错误</span>
🎭 特效
发光效果
.glow-primary {
box-shadow: 0 0 20px -5px hsl(var(--glow-primary) / 0.5);
}
渐变背景
.gradient-bg {
background:
radial-gradient(circle at 50% 0%,
hsl(var(--primary) / 0.15) 0%,
transparent 50%
),
linear-gradient(180deg,
hsl(var(--background)) 0%,
hsl(var(--surface-1)) 100%
);
}
玻璃态
.glass {
@apply bg-surface-2/60 backdrop-blur-xl;
border: 1px solid hsl(var(--border) / 0.5);
}
📐 间距系统
基于 4px 网格:
--space-1: 0.25rem; /* 4px */
--space-2: 0.5rem; /* 8px */
--space-3: 0.75rem; /* 12px */
--space-4: 1rem; /* 16px */
--space-5: 1.25rem; /* 20px */
--space-6: 1.5rem; /* 24px */
--space-8: 2rem; /* 32px */
--space-10: 2.5rem; /* 40px */
--space-12: 3rem; /* 48px */
--space-16: 4rem; /* 64px */
🎬 动画
淡入
.fade-in {
animation: fade-in 0.5s ease-out forwards;
}
滑入
.slide-in-left {
animation: slide-in-left 0.3s ease-out forwards;
}
缩放
.scale-in {
animation: scale-in 0.2s ease-out forwards;
}
📱 响应式断点
| 断点 | 最小宽度 | 设备 |
|---|---|---|
sm |
640px | 小屏手机 |
md |
768px | 平板 |
lg |
1024px | 笔记本 |
xl |
1280px | 桌面 |
2xl |
1536px | 大屏 |
♿ 可访问性
- 所有文本对比度符合 WCAG AA 标准(至少 4.5:1)
- 焦点指示器清晰可见
- 最小点击区域 44x44px
- 支持键盘导航
🛠 工具函数
// 合并类名
import { cn } from '@/lib/utils'
cn('btn', 'btn-primary', className)
📄 许可证
MIT License