使用方法
- 在「基色」取色器里选定主色。示例值 #3b82f6(一种常用蓝色),也可以先在别处取好色再粘贴进取色器。
- 在「饱和度 S」填 91(示例值),「亮度 L」填 60(示例值),两者都只收 0~100 的整数。取色器不带 S/L 时,这两个数就是微调口。
- 在「配色规则」里选一条:三角 · 相差 120°(示例值)、互补 180°、类比 30° 或单色明暗。
- 点「生成调色板」(或在饱和度、亮度输入框里按 Enter),色块和三格式文本会立即刷新。
- 要写进样式表就点「复制 CSS 变量」,得到
:root开头的自定义属性;要进表格就点「导出 CSV」。
这个颜色配色生成器能解决什么问题
「主色定了、配色靠猜」是很多非设计岗的真实痛点,颜色配色生成器把这件事压缩成可计算的三个字:角度差。具体场景:
一是给非设计岗兜底:写 PPT、做海报、搭落地页时最怕主色定了不知道配什么。色轮规则是百年平面设计沉淀下来的少数可量化共识,互补造冲突、三角造丰富、类比造安静,按角度差取色不会出现「凭感觉调脏了」的结果。
二是给前端交付规范格式:输出的每一条都同时给 HEX、rgb()、hsl() 三种写法,CSS 变量按钮直接拼出 :root 块,省掉手动逐个转格式的环节。
三是做明暗两档延伸:按钮的 hover 态、卡片的浅底、页脚的深底,本质都是同一色相的明度变化,「单色」规则一次给出五档明度,直接对应 60-30-10 配色比例里的层次位。
本页不做这些事:不做单个颜色的挑选与收藏,那是「颜色选择器」的事;不做线性渐变的预览与代码,请用「渐变色生成器」;也不做文字与背景的可读性判定,选完配色后要不要在浅底上放灰字,交给「颜色对比度检测」按 WCAG 阈值判断。
配色原理:HSL 色轮与四条规则
先说换算链。颜色配色生成器收到的输入是取色器给出的 HEX,按 W3C CSS Color Module 定义的 HSL 模型做两次换算:先把 HEX 拆成 R、G、B 三个 0~255 分量,再按 max/min 法转成 H(色相 0~360°)、S(饱和度 0~100%)、L(亮度 0~100%)。反向生成时用公式 c = (1 − |2L − 1|) × S 求色度 c,再按色相所在 60° 区间插值出 RGB,最后打包成 HEX。全部是标准公式,没有经验系数。
四条规则只在色相这一个维度上做旋转。互补 = 基色 ±180°,三角 = ±120° 和 ±240° 各取一点,类比 = ±30°,单色 = 角度差 0、只改明度。色相是环形变量,所以所有加减都要对 360 取模:示例基色 H=217,217+180=397,397 mod 360 = 37,互补点落在 37°(暖橙位)。这个取模不是实现细节而是色轮定义本身——397° 和 37° 在色轮上是同一个点。
为什么用 HSL 而不是直接在 RGB 上找搭配。RGB 三个通道各自独立,旋转其中两个通道得到的颜色人眼看起来毫无规律;HSL 把「是什么颜色(H)」「多鲜艳(S)」「多亮(L)」拆开,规则旋转 H、锁死 S 和 L,整板颜色鲜艳度和明暗感天然一致。
输入会被规范化。#3b82f6 拆出的精确值是 H 217.2°、S 91.2%、L 59.8%,工具四舍五入成整数 217/91/60 再反向输出,所以基色一栏显示 #3C83F6 而不是输入的 #3b82f6——两者换算回 HSL 只差 0.1°~0.2°,属于取整误差,不是算错。做这个取整是为了让正文、对照表和页面输出能逐位对上。
完整示例(数值仅作演示)
示例条件与页面打开时的默认值完全一致:基色 #3b82f6、S=91、L=60、规则=三角,即围绕 H=217 每隔 120° 取一点:
- 基色:217° →
hsl(217, 91%, 60%)→ rgb(60, 131, 246) → #3C83F6; - 第二点:217+120=337° →
hsl(337, 91%, 60%)→ rgb(246, 60, 131) → #F63C83; - 第三点:217+240=457,457 mod 360 = 97° →
hsl(97, 91%, 60%)→ rgb(131, 246, 60) → #83F63C。
复制 CSS 变量按钮在同样条件下输出:
:root{ --c1: #3C83F6; --c2: #F63C83; --c3: #83F63C; }
换成互补规则则是 217° 与 37° 两点:#3C83F6 与 #F6AF3C(rgb(246, 175, 60)),一冷一暖正好对撞。
输入范围与对照表
先看四条规则本身的档位,基色变化时角度差不变:
| 规则 | 角度差 | 颜色数 | 观感 | 典型用途 |
|---|---|---|---|---|
| 互补 | 180° | 2 | 冲突感最强 | 促销页主按钮与强调贴纸 |
| 三角 | 120° | 3 | 丰富且互相制衡 | 数据可视化分类色 |
| 类比 | ±30° | 3 | 安静、过渡自然 | 页面主视觉与背景层次 |
| 单色 | 0°(只动 L) | 5 | 统一、有纵深 | 同一色相的明暗两档延伸 |
下表把示例基色 H=217、S=91、L=60 代入四条规则,逐位实测(单色规则给出五档明度):
| 槽位 | HSL | RGB | HEX |
|---|---|---|---|
| 基色 | hsl(217, 91%, 60%) | rgb(60, 131, 246) | #3C83F6 |
| 互补 | hsl(37, 91%, 60%) | rgb(246, 175, 60) | #F6AF3C |
| 三角 · 第二点 | hsl(337, 91%, 60%) | rgb(246, 60, 131) | #F63C83 |
| 三角 · 第三点 | hsl(97, 91%, 60%) | rgb(131, 246, 60) | #83F63C |
| 类比 · 左邻 | hsl(187, 91%, 60%) | rgb(60, 224, 246) | #3CE0F6 |
| 类比 · 右邻 | hsl(247, 91%, 60%) | rgb(82, 60, 246) | #523CF6 |
| 单色 · L=90 | hsl(217, 91%, 90%) | rgb(206, 224, 253) | #CEE0FD |
| 单色 · L=75 | hsl(217, 91%, 75%) | rgb(133, 178, 249) | #85B2F9 |
| 单色 · L=45 | hsl(217, 91%, 45%) | rgb(10, 90, 219) | #0A5ADB |
| 单色 · L=30 | hsl(217, 91%, 30%) | rgb(7, 60, 146) | #073C92 |
输入范围、边界与精度说明
- 基色只接收 #RRGGBB 形态。取色器的原生输出就是 6 位十六进制,工具会先校验再拆通道;非法值会得到明确报错而不是黑屏色块。
- 饱和度与亮度必须是 0~100 的整数。HSL 模型里 S、L 是百分比,颜色配色生成器只收整数,是为了让页面输出、对照表、正文示例三处能逐位一致。非法输入会指出字段名和允许范围。
- 单色规则的明度档会自动钳制。五档按 L+30、L+15、L、L−15、L−30 生成,越过 0 或 100 的档被截回边界内,不会输出越界的
hsl()。若你把 L 填成 10,五档会挤在 0~40 的暗部区间,这是正常现象,把 L 调回中间值即可展开。 - 取整误差 ≤0.5°。色相保留整数位,四舍五入最大偏差 0.5°;把输出的 HEX 再转回 HSL(见 HSL 转 RGB 转换器),与输入基色的差在 0.1°~0.2° 之间,对配色用途不可感知。
- 互补的互补回到自己。37° 再加 180° 得 217°,所以互补规则永远只有两个成员,反复点不会出现第三种颜色。
- HSL 的 L 不等于感知亮度。黄色(H≈60)在 L=60 时人眼看远比蓝色(H≈217)亮,这是 HSL 模型的已知特性;对明暗有严格要求的场景(比如灰阶层次)应该以实测为准,而不是只看 L 数值。
常见问题
为什么输出的 HEX 和我选的基色不一样?
工具把 #3b82f6 换算成 HSL 后取整为 217/91/60,再反向换算输出 #3C83F6,两者在 HSL 上只差零点几度。取整是为了让正文、表格与工具输出逐位一致;如果你需要逐位保留原值,基色本身直接用即可,它的 HEX 本来就在你手里。
四条规则到底怎么选?
想要强调与冲突选互补;一个画面里要区分三四个类别选三角;做主视觉与背景的和谐过渡选类比;只想要同一颜色的深浅两档(hover 态、浅色底)选单色。拿不准就先让颜色配色生成器出一套类比,它最不容易出错。
类比色为什么是 ±30°,不是 ±15° 或 ±60°?
±15° 以内两个颜色在多数屏幕上几乎无法区分,起不到配色作用;±60° 已经跨入下一个色相家族,和谐感断裂。±30° 是传统色轮教程通用的「相邻色」定义,本页与主流设计教材保持同一口径。
单色调色板会不会太闷?
单色板本来就是做层次而不是做对比的。常见用法是 L=90 做卡片底、L=60 做主题色、L=30 做正文标题或深色页脚,三档拉开的明度差本身就有层次感。若嫌闷,把规则切到类比即可。
互补色一比一铺在页面上为什么刺眼?
两条互补色明度、饱和度相同时视觉振动最强。实践里用 60-30-10 比例:主色占六成、中性色占三成、互补色只给一成做点睛,本页输出的互补点适合当那个「一成」。
能一次生成多套方案对比吗?
本页一次只算一个基色的一套规则。想对比就换基色再点一次生成,或者把几套的 CSS 变量分别复制出来并排放。批量出几十个随机单色的需求属于「随机颜色生成器」的范围。
导出的 CSV 用 Excel 打开会乱码吗?
不会。CSV 以 UTF-8 编码并在文件头写入了 BOM 标记,Excel 依赖这个标记识别 UTF-8;表头为槽位、HEX、RGB、HSL 四列,可直接进设计交接表。
选的颜色会上传到服务器吗?
不会。取色、换算、导出全部在当前页面的 JavaScript 里完成,不发任何网络请求。可以在开发者工具的 Network 面板里点几次「生成调色板」自查,看不到新请求。
相关工具
- 颜色选择器:逐个挑选、微调单个颜色并取值,与本页的「整套搭配」互为补充。
- 颜色对比度检测:配好色之后,检查文字放在这个背景上是否达到 WCAG 可读阈值。
- HSL转RGB转换器:本页反向换算用到的就是同一套公式,想单独转格式可以用它。
- RGB转HSL转换器:手里只有 RGB 设计稿色值时,先转 HSL 再来本页套规则。
- 互补色颜色查询:只想快速查一个颜色的互补点,不必展开整套调色板。
- 随机颜色生成器:还没有主色时,先随机抽一个起点再回来配整套。
- 生成器:查看全部生成器工具。