色彩命名工具核心JS实现

0 阅读3分钟

色彩命名工具核心JS实现

色彩命名工具的功能很直观:输入一个颜色值,就能得到颜色名称、相近色列表,以及常用色彩格式与配色方案。它接受 HEX、RGB、HSL 或中文/英文色名作为输入,输出统一可靠。

在线工具网址:see-tool.com/color-namin…
工具截图:
工具截图.png

下面按“实际运行流程”把核心 JavaScript 逻辑拆开讲,尽量用更直白的方式说明每一步做什么。

示例

  • 输入 #FFD700 -> 主命名:金色(Gold),HEX:#FFD700,RGB:rgb(255, 215, 0)
  • 输入 rgb(255, 0, 0) -> 主命名:红色(Red),HEX:#FF0000
  • 输入 hsl(60, 100%, 50%) -> 主命名:黄色(Yellow),HEX:#FFFF00
  • 输入 珊瑚红 -> 主命名:珊瑚红(Coral),HEX:#FF7F50
  • 输入 #000000 -> 主命名:黑色(Black),HEX:#000000

1)入口输入如何被统一

工具允许多种输入形式,但最终都会被规范成同一结构:RGBA。

  • HEX:支持 3 位与 6 位,转换为 RGB
  • RGB/RGBA:直接读取数值,透明度缺省就当作 1
  • HSL/HSLA:先转为 RGB,再补上透明度
  • 颜色名称:在内置颜色表里找对应 HEX,再转为 RGB

只要解析失败,就会提示“无效颜色”,不会进入后续流程。

2)基础约束保证结果稳定

所有输入数值都会被“夹在合理范围内”,避免出现异常结果:

  • R/G/B 必须是 0 到 255
  • 透明度必须是 0 到 1

这个小步骤能防止超出范围的输入把后续计算带偏。

3)颜色格式的互转为什么必须做

界面需要多种输出:HEX、RGB、HSL、HSB、CMYK。为了让这些格式始终保持一致,工具把 RGB 作为中间基准,再进行格式转换。这样做的好处是“一个输入值,所有格式都来自同一个计算源”。

4)颜色命名的匹配规则

命名并不是简单“看最接近的 HEX”,而是分几层打分:

  • 先看 RGB 距离,作为最直接的颜色差异
  • 再看色相差异,避免 0° 与 360° 被当成完全不同
  • 如果两者饱和度都较高,再增加色相与饱和度的影响
  • 在明度处于可感知范围时,也会加入明度差异

得分最低的颜色就是主命名。这个得分会被换算成 0-100 的置信度,用来提示“匹配有多接近”。

5)相近颜色列表怎么产生

除了主命名,工具还会计算其它颜色与目标色的距离,然后从近到远排序,取前几名作为“相似色推荐”。这样用户能看到更丰富的命名选择。

6)调色板是怎么生成的

配色方案全部基于 HSL 的色相变化,因为 HSL 更符合“以色相为核心做配色”的直觉:

  • 随机色板:直接随机生成多个颜色
  • 互补色:色相加 180°,再补上明暗变化
  • 类似色:围绕主色左右扩展色相
  • 三色组:主色加 120° 与 240°,并扩展明暗
  • 分裂互补:主色两侧各偏移一定角度,再补明暗

最终统一输出为 HEX 数组,方便展示与复制。

7)交互动作如何串起来

核心动作只有三类,但覆盖了所有交互:

  • 应用颜色:任何输入改变后,统一解析并写回主色
  • 生成配色:根据当前主色与选项重新计算色板
  • 复制结果:把名称与格式值合并成文本,一键复制

这样工具在逻辑上形成闭环:输入 -> 规范化 -> 命名/格式/配色 -> 输出。