- UI组件
- 前端
【免费下载链接】flowbite
Open-source UI component library and front-end development framework based on Tailwind CSS
Flowbite 作为基于 Tailwind CSS 的开源 UI 组件库,其颜色系统完全继承并深化了 Tailwind 的设计语言。自 Tailwind v4 起,管理颜色的默认与推荐方式转向原生 CSS 变量——这些颜色变量可用于文字、边框、背景、焦点环(focus ring)等一切视觉属性。本篇以 content/customize/colors.md 为骨架,结合仓库源码,带你完整掌握 Flowbite 的默认调色板、--color-*变量的底层机制,以及如何通过@theme自定义品牌配色并让新颜色自动传播到所有工具类。
一、为什么 Tailwind v4 选择原生 CSS 变量
Tailwind v4 之前,主题配置集中在tailwind.config.js的theme.extend中;而 v4 之后,配置迁移到了主 CSS 文件内(参见 content/customize/configuration.md)。在颜色管理上,默认且推荐的方式是使用原生 CSS 变量:
- 颜色以
--color-{name}-{shade}形式声明,例如--color-blue-500; - 组件源码与工具类直接引用这些变量,实现"一处定义、处处生效";
- 运行时可在任意作用域(如
.dark选择器内)覆盖变量,从而无需重新编译即可切换主题。
仓库中 src/main.css 展示了文档站自身的入口写法:
@import "tailwindcss"; @import "./themes/themes.css"; @plugin "./../plugin.js"; @plugin "flowbite-typography"; @custom-variant dark (&:where(.dark, .dark *)); @import "./docs.css";其中@custom-variant dark将暗色模式与.dark类绑定(对应 content/customize/dark-mode.md 的策略),而颜色变量的真正定义集中在@theme块中。
二、Flowbite 默认调色板全览
Flowbite 设计系统精心挑选了一套兼顾美学与无障碍(accessibility)要求的默认调色板。每个色族包含从 50(最浅)到 900(最深)共 10 个色阶,且底层映射到 Tailwind 的对应颜色空间。以下数值与 content/customize/colors.md 中展示的色板完全一致。
1. Gray ——colors.coolGray
| 色阶 | HEX 值 | 色阶 | HEX 值 |
|---|---|---|---|
| 50 | #F9FAFB | 500 | #6B7280 |
| 100 | #F3F4F6 | 600 | #4B5563 |
| 200 | #E5E7EB | 700 | #374151 |
| 300 | #D1D5DB | 800 | #1F2937 |
| 400 | #9CA3AF | 900 | #111827 |
2. Red ——colors.red
| 色阶 | HEX 值 | 色阶 | HEX 值 |
|---|---|---|---|
| 50 | #FDF2F2 | 500 | #F05252 |
| 100 | #FDE8E8 | 600 | #E02424 |
| 200 | #FBD5D5 | 700 | #C81E1E |
| 300 | #F8B4B4 | 800 | #9B1C1C |
| 400 | #F98080 | 900 | #771D1D |
3. Yellow ——colors.amber
| 色阶 | HEX 值 | 色阶 | HEX 值 |
|---|---|---|---|
| 50 | #FDFDEA | 500 | #C27803 |
| 100 | #FDF6B2 | 600 | #9F580A |
| 200 | #FCE96A | 700 | #8E4B10 |
| 300 | #FACA15 | 800 | #723B13 |
| 400 | #E3A008 | 900 | #633112 |
4. Green ——colors.emerald
| 色阶 | HEX 值 | 色阶 | HEX 值 |
|---|---|---|---|
| 50 | #F3FAF7 | 500 | #0E9F6E |
| 100 | #DEF7EC | 600 | #057A55 |
| 200 | #BCF0DA | 700 | #046C4E |
| 300 | #84E1BC | 800 | #03543F |
| 400 | #31C48D | 900 | #014737 |
5. Blue ——colors.blue
| 色阶 | HEX 值 | 色阶 | HEX 值 |
|---|---|---|---|
| 50 | #EBF5FF | 500 | #3F83F8 |
| 100 | #E1EFFE | 600 | #1C64F2 |
| 200 | #C3DDFD | 700 | #1A56DB |
| 300 | #A4CAFE | 800 | #1E429F |
| 400 | #76A9FA | 900 | #233876 |
6. Indigo ——colors.indigo
| 色阶 | HEX 值 | 色阶 | HEX 值 |
|---|---|---|---|
| 50 | #F0F5FF | 500 | #6875F5 |
| 100 | #E5EDFF | 600 | #5850EC |
| 200 | #CDDBFE | 700 | #5145CD |
| 300 | #B4C6FC | 800 | #42389D |
| 400 | #8DA2FB | 900 | #362F78 |
7. Purple ——colors.violet
| 色阶 | HEX 值 | 色阶 | HEX 值 |
|---|---|---|---|
| 50 | #F6F5FF | 500 | #9061F9 |
| 100 | #EDEBFE | 600 | #7E3AF2 |
| 200 | #DCD7FE | 700 | #6C2BD9 |
| 300 | #CABFFD | 800 | #5521B5 |
| 400 | #AC94FA | 900 | #4A1D96 |
8. Pink ——colors.pink
| 色阶 | HEX 值 | 色阶 | HEX 值 |
|---|---|---|---|
| 50 | #FDF2F8 | 500 | #E74694 |
| 100 | #FCE8F3 | 600 | #D61F69 |
| 200 | #FAD1E8 | 700 | #BF125D |
| 300 | #F8B4D9 | 800 | #99154B |
| 400 | #F17EB8 | 900 | #751A3D |
注意一个细节:Flowbite 文档中的色族标签(Gray/Red/Yellow/Green/Blue/Indigo/Purple/Pink)与底层变量命名(coolGray/red/amber/emerald/blue/indigo/violet/pink)并非一一对应。例如界面显示为"Yellow"的色板实际引用的是colors.amber色系,显示为"Green"的引用colors.emerald,显示为"Purple"的引用colors.violet。这是 Flowbite 在既有 Tailwind 色板中精挑细选的结果,使用工具类(如bg-amber-500、text-emerald-600)时请以底层变量名为准。
三、通过--color-{name}自定义颜色
如果你希望调整现有颜色或引入全新配色,只需在@theme块中创建新的--color-{name}变量。该颜色随即对所有文字(text)、背景(background)与边框(border)工具类生效。
这是 content/customize/colors.md 给出的最小示例:
/* input.css 文件 */ @import "tailwindcss"; @plugin "flowbite/plugin"; @source "../node_modules/flowbite"; @theme { /* 主文本颜色 */ --color-body: var(--color-stone-600); --color-body-subtle: var(--color-stone-500); /* 标题文本颜色 */ --color-heading: var(--color-stone-900); /* 用于自定义品牌色 */ --color-fg-brand-subtle: var(--color-stone-200); --color-fg-brand: var(--color-stone-950); --color-fg-brand-strong: var(--color-stone-900); }这段配置的底层原理值得展开:
--color-body、--color-heading是 Flowbite 语义化文本变量,组件内部通过var(--color-body)引用正文色、var(--color-heading)引用标题色;--color-fg-brand-*系列用于品牌前景色,后缀subtle(柔和)、无后缀(常规)、strong(加强)表示颜色强度递进;- 由于 Tailwind v4 的
@theme会自动为每个--color-*变量生成对应的工具类,你还可以直接使用text-fg-brand、bg-body等类名。
以仓库内置主题为例,src/themes/default.css 中默认主题的正文色是var(--color-gray-600)、标题色是var(--color-gray-900)、品牌色是var(--color-blue-700):
--color-body: var(--color-gray-600); --color-body-subtle: var(--color-gray-500); --color-heading: var(--color-gray-900); --color-fg-brand-subtle: var(--color-blue-200); --color-fg-brand: var(--color-blue-700); --color-fg-brand-strong: var(--color-blue-900);对比可知,上文示例将整套配色从 Gray/Blue 切换到 Stone 系,仅改动几个变量即可让全部组件的外观随之变化。
四、Flowbite 语义化颜色变量体系
Flowbite 在 Tailwind 基础色板之上封装了一套语义化变量,覆盖文本、背景、边框三大用途。完整的变量清单见 content/customize/variables.md,其命名规范为:
color-brand-{level}-{accent}:品牌色,level可取primary/secondary/tertiary/quaternary(按重要程度分层),accent可取soft/subtle/medium/strong(按颜色浓度分层);color-neutral-{level}-{accent}:中性色,对应灰色系;color-fg-{type}-{level}-{accent}:前景色(文字色);color-{status}-{accent}:状态色(success、warning、danger 等)。
文本颜色变量
@theme { /* 主文本颜色 */ --color-body: var(--color-stone-600); --color-body-subtle: var(--color-stone-500); /* 标题文本颜色 */ --color-heading: var(--color-stone-900); /* 品牌前景色 */ --color-fg-brand-subtle: var(--color-stone-200); --color-fg-brand: var(--color-stone-950); --color-fg-brand-strong: var(--color-stone-900); /* 状态前景色 */ --color-fg-success: var(--color-green-700); --color-fg-danger: var(--color-red-700); --color-fg-warning: var(--color-orange-900); --color-fg-yellow: var(--color-yellow-400); --color-fg-disabled: var(--color-stone-400); --color-fg-purple: var(--color-purple-600); --color-fg-cyan: var(--color-cyan-600); --color-fg-indigo: var(--color-indigo-600); --color-fg-pink: var(--color-pink-600); --color-fg-lime: var(--color-lime-600); }背景颜色变量
@theme { /* 中性色背景 */ --color-neutral-primary-soft: var(--color-white); --color-neutral-primary: var(--color-white); --color-neutral-secondary-soft: var(--color-gray-50); --color-neutral-secondary: var(--color-gray-50); --color-neutral-tertiary-soft: var(--color-gray-100); --color-neutral-tertiary: var(--color-gray-100); --color-neutral-quaternary: var(--color-gray-200); /* 品牌色背景 */ --color-brand-softer: var(--color-blue-50); --color-brand-soft: var(--color-blue-100); --color-brand: var(--color-blue-700); --color-brand-medium: var(--color-blue-200); --color-brand-strong: var(--color-blue-800); /* 状态色背景 */ --color-success-soft: var(--color-emerald-50); --color-success: var(--color-emerald-700); --color-danger-soft: var(--color-rose-50); --color-danger: var(--color-rose-700); --color-warning-soft: var(--color-orange-50); --color-warning: var(--color-orange-500); --color-disabled: var(--color-gray-100); }边框颜色变量
@theme { /* 边框颜色变量 */ --color-buffer: var(--color-white); --color-muted: var(--color-gray-50); --color-light-subtle: var(--color-gray-100); --color-light: var(--color-gray-100); --color-default-subtle: var(--color-gray-200); --color-default: var(--color-gray-200); --color-default-medium: var(--color-gray-200); --color-default-strong: var(--color-gray-200); /* 状态边框色 */ --color-success-subtle: var(--color-emerald-200); --color-danger-subtle: var(--color-rose-200); --color-warning-subtle: var(--color-orange-200); --color-brand-subtle: var(--color-blue-200); --color-brand-light: var(--color-blue-600); --color-dark-subtle: var(--color-gray-800); --color-dark-backdrop: var(--color-gray-950); }五、组件源码如何消费这些颜色变量
为了理解"改一个变量、全组件变色"的机制,可以看 plugin.js 中 Flowbite 插件如何引用变量。例如表单控件在聚焦时使用var(--color-brand)作为 ring 与边框色:
'&:focus': { ... '--tw-ring-color': 'var(--color-brand)', ... 'border-color': 'var(--color-brand)', },复选框、单选按钮的选中态同样绑定var(--color-brand):
[`[type='checkbox']`, `[type='radio']`]: { ... color: 'var(--color-brand)', 'background-color': '#fff', 'border-color': 'var(--color-default)', },范围滑块(range)的滑块与轨道色、文件上传按钮的背景与文字色(var(--color-neutral-quaternary)、var(--color-body))、tooltip 的箭头边框色(var(--color-neutral-tertiary))等,全部通过变量引用。这意味着你只需在@theme中重定义--color-brand或--color-body,就能同时影响按钮、输入框、开关、滑块等全部组件——这正是颜色变量机制的核心价值。
六、完整可运行的配色配置示例
将上述要点组合起来,一个完整的、可直接编译的input.css如下(同时涵盖默认主题文件导入、暗色变体与自定义配色,综合参考 content/customize/configuration.md 与 content/customize/theming.md):
/* input.css */ @import "tailwindcss"; /* 引入 Flowbite 插件:确保表单、复选框、tooltip、图表、datatables 的伪类样式生效 */ @plugin "flowbite/plugin"; /* 显式扫描 node_modules 中的 Flowbite 源码,拾取其使用的工具类 */ @source "../node_modules/flowbite"; /* 暗色模式基于 .dark 类切换 */ @custom-variant dark (&:where(.dark, .dark *)); @theme { /* 主文本颜色 */ --color-body: var(--color-stone-600); --color-body-subtle: var(--color-stone-500); /* 标题文本颜色 */ --color-heading: var(--color-stone-900); /* 品牌前景色 */ --color-fg-brand-subtle: var(--color-stone-200); --color-fg-brand: var(--color-stone-950); --color-fg-brand-strong: var(--color-stone-900); /* 品牌背景色 */ --color-brand-softer: var(--color-stone-50); --color-brand-soft: var(--color-stone-100); --color-brand: var(--color-stone-900); --color-brand-medium: var(--color-stone-200); --color-brand-strong: var(--color-stone-800); /* 字体变量 */ --font-sans: 'Inter', 'ui-sans-serif', 'system-ui', '-apple-system', 'system-ui', 'Segoe UI', 'Roboto', 'Helvetica Neue', 'Arial', 'Noto Sans', 'sans-serif'; --font-body: 'Inter', 'ui-sans-serif', 'system-ui', '-apple-system', 'system-ui', 'Segoe UI', 'Roboto', 'Helvetica Neue', 'Arial', 'Noto Sans', 'sans-serif'; --font-mono: 'ui-monospace', 'SFMono-Regular', 'Menlo', 'Monaco', 'Consolas', 'Liberation Mono', 'Courier New', 'monospace'; }配置完成后,text-fg-brand、bg-brand、border-default等类名就会呈现你自定义的 Stone 品牌配色。
若想使用 Flowbite v4 提供的开箱主题(modern / minimal / enterprise / playful / mono),只需在input.css顶部导入对应主题文件即可(详见 content/customize/theming.md 与 src/themes/themes.css):
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap'); @import "flowbite/src/themes/default"; /* MINIMAL THEME @import "flowbite/src/themes/minimal"; */ /* ENTERPRISE THEME @import "flowbite/src/themes/enterprise"; */ /* PLAYFUL THEME @import "flowbite/src/themes/playful"; */ /* MONO THEME @import "flowbite/src/themes/mono"; */七、暗色模式下的颜色变量
颜色变量的另一大优势在于暗色模式的实现:只需在.dark作用域内重新赋值,无需重新编译。仓库中 src/themes/default.css 的.dark块即为典型做法:
.dark { /* 文本颜色变量 */ --color-body: var(--color-gray-400); --color-body-subtle: var(--color-gray-400); --color-heading: var(--color-white); --color-fg-brand-subtle: var(--color-blue-200); --color-fg-brand: var(--color-blue-500); --color-fg-brand-strong: var(--color-blue-400); /* 背景颜色变量 */ --color-neutral-primary: var(--color-gray-950); --color-neutral-primary-medium: var(--color-gray-800); --color-brand: var(--color-blue-600); --color-brand-strong: var(--color-blue-700); /* 边框颜色变量 */ --color-default: var(--color-gray-800); --color-default-strong: var(--color-gray-600); }对照上一节可见:同一套--color-brand、--color-neutral-primary等变量,在亮色下解析为浅色值、暗色下解析为深色值,组件无需任何改动即自动适配深浅两套主题。各主题的暗色变量(minimal、enterprise、playful、mono)同样可在 src/themes/themes.css 中以[data-theme="xxx"].dark的形式找到。
八、快速自查清单
- 想换一套品牌主色:重定义
--color-brand、--color-brand-soft、--color-brand-strong与--color-fg-brand系列; - 想调整正文/标题色:重定义
--color-body、--color-body-subtle、--color-heading; - 想新增一个独立色系:在
@theme中新增--color-myspecial-500之类的变量,即可使用bg-myspecial-500、text-myspecial-500; - 想适配暗色模式:在
.dark { }作用域内覆盖同一组变量; - 想整体更换主题风格:在 src/themes/themes.css 提供的 five 个主题文件中选择导入。
如需查阅 Flowbite 侧完整的变量命名空间说明,可继续阅读 content/customize/variables.md;如需了解@theme之外的配置指令(@utility、@variant、@config、prefix等),可参考 content/customize/configuration.md。
- UI组件
- 前端
【免费下载链接】flowbite
Open-source UI component library and front-end development framework based on Tailwind CSS
相关推荐
Chart.js 配色体系详解:默认色板、Colors 插件与图案/渐变填充
Chart.js 配色体系详解:默认色板、Colors 插件与图案/渐变填充 本文基于 Chart.js 仓库的 Colors 文档 https://link.
图表库前端数据可视化ggplot2配色方案终极指南:从默认调色板到高级自定义色彩
ggplot2配色方案终极指南:从默认调色板到高级自定义色彩 在数据可视化领域, ggplot2配色方案 是提升图表专业性和美观度的关键因素。作为R语言中最受欢
数据可视化MAS 免费激活 Windows 与 Office:照做就能快速跑通的上手指南
MAS 免费激活 Windows 与 Office:照做就能快速跑通的上手指南 右下角"激活 Windows"水印、Office 到期弹窗,用 MAS 一次解决
操作系统
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考