这里会使用 shadcn/ui 作为基础的样式,不会使用原始的 CSS。
定义项目
项目终归有一个主题。你要清楚你的目标客户是谁。这个网站要做什么。
主题与系统
颜色是使用 HSL 定义的,即色相、饱和度、亮度。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| @layer base { :root { --background: 0 0% 100%; --foreground: 20 14.3% 4.1%; --card: 0 0% 100%; --card-foreground: 20 14.3% 4.1%; --popover: 0 0% 100%; --popover-foreground: 20 14.3% 4.1%; --primary: 24.6 95% 53.1%; --primary-foreground: 60 9.1% 97.8%; --secondary: 60 4.8% 95.9%; --secondary-foreground: 24 9.8% 10%; --muted: 60 4.8% 95.9%; --muted-foreground: 25 5.3% 44.7%; --accent: 60 4.8% 95.9%; --accent-foreground: 24 9.8% 10%; --destructive: 0 84.2% 60.2%; --destructive-foreground: 60 9.1% 97.8%; --border: 20 5.9% 90%; --input: 20 5.9% 90%; --ring: 24.6 95% 53.1%; --radius: 0.75rem; }
.dark { --background: 20 14.3% 4.1%; --foreground: 60 9.1% 97.8%; --card: 20 14.3% 4.1%; --card-foreground: 60 9.1% 97.8%; --popover: 20 14.3% 4.1%; --popover-foreground: 60 9.1% 97.8%; --primary: 20.5 90.2% 48.2%; --primary-foreground: 60 9.1% 97.8%; --secondary: 12 6.5% 15.1%; --secondary-foreground: 60 9.1% 97.8%; --muted: 12 6.5% 15.1%; --muted-foreground: 24 5.4% 63.9%; --accent: 12 6.5% 15.1%; --accent-foreground: 60 9.1% 97.8%; --destructive: 0 72.2% 50.6%; --destructive-foreground: 60 9.1% 97.8%; --border: 12 6.5% 15.1%; --input: 12 6.5% 15.1%; --ring: 20.5 90.2% 48.2%; } }
|
shadcn UI 使用 CSS 自定义属性(CSS 变量)来定义其主题系统。以下是每个变量的含义和典型用法:
背景和前景
--background
: 整个应用的主要背景色
--foreground
: 主要文本颜色,通常在背景色上使用
卡片
--card
: 卡片、面板等组件的背景色
--card-foreground
: 卡片内的文本颜色
弹出框
--popover
: 弹出菜单、工具提示等的背景色
--popover-foreground
: 弹出元素内的文本颜色
主要强调色
--primary
: 用于主要按钮、链接等重要交互元素
--primary-foreground
: 在主要强调色上的文本颜色
次要强调色
--secondary
: 用于次要按钮、标签等较不突出的元素
--secondary-foreground
: 次要强调色上的文本颜色
柔和色
--muted
: 用于背景较轻的区域,如禁用状态或次要信息
--muted-foreground
: 用于柔和背景上的文本,通常较浅
强调色
--accent
: 用于高亮显示特定元素,如选中状态
--accent-foreground
: 强调色上的文本颜色
破坏性操作色
--destructive
: 用于警告或删除按钮等危险操作
--destructive-foreground
: 破坏性操作按钮上的文本颜色
其他
--border
: 用于元素边框
--input
: 输入框的边框或背景
--ring
: 元素获得焦点时显示的轮廓环颜色
--radius
: 控制元素的圆角半径
这些颜色变量的使用确保了整个界面的一致性,并且可以轻松地创建不同的主题变体(如暗色模式)。在实际应用中,可以根据需要微调这些颜色的使用位置。