黑色
纯黑。感知亮度 0% —— 没有发出任何光。色相与饱和度对灰色按惯例为 0。
#000000 → hsl(0 0% 0%) 屏幕上的纯黑很少是合适的设计选择 —— 正文文本不妨试试 `hsl(0 0% 7%)` 或 OKLCH 感知亮度 0.1–0.15,更柔和。
需要感知均匀的输出吗?请试用专用的 HEX 转 OKLCH 转换器 —— 与 HSL 不同,每一档 L 在不同色相之间看起来同样亮。
在浏览器中把任意 HEX 颜色转成 HSL —— 3 位、6 位以及带 alpha 的 8 位全部支持。免费、即时、免注册,您的颜色永远不会离开本页。
浅色
深色
灰调
和谐色
— — — — — HEX 转 HSL 转换器是一个小型工具,把 HEX 颜色代码(`#3b82f6`)转成柱面坐标下的色相 / 饱和度 / 感知亮度三元组,这一三元组编码了同一个 sRGB 颜色(`hsl(217 91% 60%)`)。HEX 代码是设计师与开发者在 Figma、Sketch、Photoshop、品牌指南 PDF 与 CSS 样式表之间复制粘贴的简短 16 进制字符串 —— 三个 8 位通道打包进 6 字符 `#RRGGBB` 形式,锚定在 1996 年 IEC 61966-2-1 所定义的 sRGB 色彩空间。HSL 把同一色彩空间在柱面坐标下重塑到三个更对设计师友好的轴上:色环上的色相角度、表示色度的饱和度百分比,以及感知亮度百分比。开发者持续不断地做 HEX → HSL 转换:把品牌色定义为一个 CSS 变量,然后只调 L 来组合更浅或更深的色卡;喂给一个把色相与 SL 分成不同控件展示的取色器 UI;为设计系统生成浅色与深色色阶;或者通过 `hsl(from var(--primary) h s calc(l + 10%))` 做运行时 CSS 变量运算,派生主题 token。本工具在您输入时实时跑这套转换,无需点击「转换」按钮,同时免费在 HSL 输出旁同屏展示其他每一种常见颜色格式(RGB、OKLCH、OKLAB、HSV、HWB、CMYK,加上 148 个 CSS 命名颜色)。
**HSL 格式本身值得仔细看一眼。** HSL = 色相(0–360°)、饱和度(0–100%)、感知亮度(0–100%)。色相是色环上的角度位置 —— 0° 是红、60° 是黄、120° 是绿、180° 是青、240° 是蓝、300° 是品红,360° 回卷到红。饱和度是色度强度,从 0%(无色灰)到 100%(完全饱和、无灰调成分)。感知亮度是明暗,从 0%(纯黑,与色相或饱和度无关)经 50%(满色度纯色)到 100%(纯白,与色相或饱和度无关)。Alvy Ray Smith 在 1978 年作为早期计算机图形学推动的一部分发表了原始推导,目的是给设计师一套比原始 RGB 通道更贴近他们对颜色认知模型的坐标系。该模型自 CSS3(2010)起就在 CSS 中,并支持到 IE 9。原始 CSS 语法使用逗号:`hsl(217, 91%, 60%)` 表示不透明,`hsla(217, 91%, 60%, 0.5)` 带 alpha。CSS Color 4(自 2022 年起的 W3C 候选推荐)加入了现代空格分隔形式:`hsl(217 91% 60%)`,以及斜线前缀 alpha 的 `hsl(217 91% 60% / 0.5)` —— 与 CSS Color 4 其他函数式记法(`rgb()`、`lab()`、`oklch()`、`color()`)同样的语法形态。色相也可以用 turns(`hsl(0.6turn 91% 60%)`)或 radians(`hsl(3.787rad 91% 60%)`)表达,全部等价于规范的度形式。每一款常青浏览器都能解析每一种语法变体;本工具默认输出现代空格分隔形式。
转换数学在两个方向上都很干净。**HEX → HSL** 是一条两步流水线。第一步,通过 `parseInt(hex.slice(1, 3), 16)` 等,把 6 位 HEX `#RRGGBB` 解析成三个 2 位 16 进制数,得到 0–255 的整数 RGB 通道。第二步,把每个通道除以 255 归一到 0–1,然后计算 `max = Math.max(r, g, b)`、`min = Math.min(r, g, b)`、`delta = max - min`。感知亮度是 max 与 min 的平均:`L = (max + min) / 2`。饱和度按感知亮度分情况:当 L ≤ 0.5 时,`S = delta / (max + min)`;当 L > 0.5 时,`S = delta / (2 - max - min)`。等价地,以 CSS Color 4 §6.4 的形式表达就是 `S = delta / (1 - |2L - 1|)`(delta = 0 时 S = 0)。色相按哪一个通道是 max 分段:当 R 是 max 时,`H = ((G - B) / delta) % 6`;当 G 是 max 时,`H = (B - R) / delta + 2`;当 B 是 max 时,`H = (R - G) / delta + 4`;再乘以 60 转成度,若为负则加 360。其逆运算(HSL → HEX,经由 RGB)使用辅助函数 `f(n) = L - a * max(-1, min(k-3, 9-k, 1))`,其中 `a = S * min(L, 1-L)`、`k = (n + H/30) mod 12`,以 n = 0、8、4 分别得到 R、G、B,再缩放到 0–255 并编码为 HEX。
**为什么 HSL 依然有用。** 直观的滑块 —— 调整 L 能可预测地变亮或变暗,而不破坏色相身份;而调整 RGB 通道则会产生没那么可预测的色相偏移。运行时 CSS 运算 —— 现代浏览器支持 `hsl(from var(--primary) h s calc(l + 10%))`,在渲染时派生主题 token。设计师认知 —— 在 HSV 取色器上成长起来的设计师,即便文件交付 HEX,也用色相 + 色度术语推理颜色。**HSL 的问题**在于,它的感知亮度轴并非感知均匀 —— L=50% 的绿看上去明显比 L=50% 的蓝更亮,因为 HSL 继承了 sRGB 的 gamma 特性,并对所有色相一视同仁地使用同一 L 标度。当您需要感知均匀(让每一档看起来同样亮的调色板生成、不会意外让蓝字比绿字更难读的暗色模式 token 计算)时,请改用 OKLCH —— 同一工具同时呈现两者,选择只在一瞥之间。
本工具的 HEX → HSL 工作流是 5 个辐条家族中的一个方向,它们共享同一个底层统一颜色转换器。专用的 统一颜色转换器是中枢 —— 它同时显示全部 9 种格式且都可编辑,当您的工作流需要的不只是 HEX 与 HSL 时,这才是合适的工具。各个单向辐条针对特定的 Google 搜索意图:HEX 转 RGB 转换器对应面向 canvas 与硬件的方向;RGB 转 HEX 转换器对应其反方向;HEX 转 OKLCH 转换器对应现代感知均匀设计系统(Tailwind v4 与 shadcn 现在都默认 OKLCH);以及 HEX 转 CMYK 转换器用于印刷准备近似。这 5 个辐条和中枢共享同一套解析引擎与同一套转换数学,因此结果在整个家族中可保证完全一致。每一次转换都在浏览器中本地运行 —— 您的 HEX 代码绝不会上传、绝不会被记录,键入时零网络请求。可在 DevTools 中亲自验证。
// Convert a hex color string to {h, s, l, alpha} per CSS Color 4 §6.4
// h in 0-360, s and l in 0-1, alpha in 0-1.
function hexToHsl(input) {
let h = input.trim().replace(/^#/, '');
if (h.length === 3 || h.length === 4) h = h.split('').map(c => c + c).join('');
const r = parseInt(h.slice(0, 2), 16) / 255;
const g = parseInt(h.slice(2, 4), 16) / 255;
const b = parseInt(h.slice(4, 6), 16) / 255;
const alpha = h.length === 8 ? parseInt(h.slice(6, 8), 16) / 255 : 1;
const max = Math.max(r, g, b), min = Math.min(r, g, b), delta = max - min;
const L = (max + min) / 2;
const S = delta === 0 ? 0 : delta / (1 - Math.abs(2 * L - 1));
let H = 0;
if (delta !== 0) {
if (max === r) H = ((g - b) / delta) % 6;
else if (max === g) H = (b - r) / delta + 2;
else H = (r - g) / delta + 4;
H = (H * 60 + 360) % 360;
}
return { h: H, s: S, l: L, alpha };
}
console.log(hexToHsl('#3b82f6')); // { h: 217, s: 0.91, l: 0.60, alpha: 1 } 3 位 `#F73`、4 位 alpha `#F738`、6 位 `#3b82f6`、8 位 alpha `#FF573380`,以及每种形式的不带 `#` 变体。解析器在派生 HSL 之前会把它们全部归一到同一个内部颜色,因此无论您的来源用哪种形态都可以直接粘贴,不必先手动展开简写。大小写也会被归一 —— `#3b82f6` 与 `#3B82F6` 产生完全相同的 HSL 输出。
HSL 字段以 CSS Color 4 的现代形式呈现:不透明颜色为 `hsl(217 91% 60%)`,带 alpha 时为 `hsl(217 91% 60% / 0.5)`。两种形态在每个常青浏览器(Chrome 65+、Safari 13+、Firefox 52+)中都工作。如果您的目标需要,遗留逗号形式 `hsl(217, 91%, 60%)` 只是一次机械替换的事;新代码中更推荐现代语法,因为它与 CSS Color 4 其他函数式语法对齐。
尽管这个辐条专门针对 HEX → HSL,共享的底层转换器在内部以 OKLCH 三元组持有规范颜色。这意味着 HEX → HSL → RGB → OKLAB → HEX 往返不会有逐步浮点漂移;以 HSL 作枢轴的老式转换器会累积舍入误差,几次转换之内就可能让色相漂移好几度。OKLCH 枢轴让其他每一种格式都在数学上锚定到同一个源点。
带 alpha 的 8 位与 4 位 HEX(`#RRGGBBAA` 与 `#RGBA`)被正确解析。末尾那一对映射到 0–1 的 alpha 浮点数:`00` → 0,`80` → 0.502,`FF` → 1。输出默认采用 CSS Color 4 的斜线语法(`hsl(217 91% 60% / 0.5)`);遗留的 `hsla(217, 91%, 60%, 0.5)` 形式只是一次替换的事。在设计 token 迁移中,当 alpha 值可能被埋在 8 位 HEX 代码里时非常有用。
您粘贴的同一个 HEX 也驱动 RGB、HSV、HWB、OKLCH、OKLAB、CMYK,以及最接近的 CSS 命名颜色 —— 全部在同一页上一眼可见。您绝不会被锁死在仅 HEX → HSL。如果队友需要 OKLCH 三元组用于 Tailwind v4 token(那里感知均匀比 HSL 那条受 gamma 困扰的 L 更重要)、最接近的命名颜色用于文档文案,或者 RGB 三元组用于一次 canvas 调用,这些值都已经在那里,带各自的复制按钮。
把一个 HEX 喂进来,对比度行会立即用 WCAG 2.1(监管下限:正文文本 4.5:1,AAA 7:1)和 APCA Lc(拟议的 WCAG 3 继任者:正文文本目标 `|Lc| ≥ 75`)对白与对黑评分。当您刚把品牌 HEX 转成 HSL,想在发布前验证最终颜色(或一个经感知亮度调节的变体)作为正文文本颜色是否真的可读时非常有用。
取色器下方,「复制为代码」区段会把当前颜色变成 5 个平台的可粘贴片段:CSS 自定义属性(`--color-brand: hsl(217 91% 60%)`)、Tailwind v4 `@theme` token、SwiftUI `Color(hue:saturation:brightness:)` 字面量、Jetpack Compose `Color.hsl(217f, 0.91f, 0.60f)` 常量、Flutter `HSLColor.fromAHSL(...)`。每个平台所期望的精确语法,可直接拖进 iOS 资源目录、Android 主题文件或 Flutter `ThemeData`。
所有 HEX 解析、HSL 转换、对比度评分与调色板生成都在浏览器中本地运行。您的 HEX 代码绝不会被传输、绝不会在任何服务器被记录、绝不会被分析。键入时零网络请求 —— 可在 DevTools 中亲自验证。可放心用于尚未公布的品牌调色板、内部设计 token、NDA 下的草稿稿件,以及任何其他保密的颜色工作。
当前颜色会在每次变更时自动以 `#hex=3b82f6` 的形式编码进 URL 哈希。复制 URL,粘贴到 Slack 线程或 GitHub issue 里,打开它的人会落在同样的 HEX、同样的 HSL 三元组上。哈希只活在您的地址栏中,绝不会传到服务器(浏览器不会把 URL 片段放进 HTTP 请求),因此即便分享链接,颜色也不会泄露给任何第三方。
Google 搜「hex to hsl」时的默认结果 —— 一个单向表单,HEX 进、HSL 出,看不到其他格式。从搜索点进来做一次性查询时还行。缺少 OKLCH、对比度检查、色域检测、alpha 处理,以及多格式同屏视图。除了最朴素的单次转换场景,本工具在每一个维度上都更胜一筹。
围绕每个颜色构建的长期 SEO 页面,带深度元数据:对您查询的任意 HEX,都会给出转换、调色板、和谐色、渐变。UI 已显陈旧(2010 年代初风格),不支持 OKLCH,无 APCA 对比度,无广色域处理。从 Google 发现某个具体 HEX 时比较强;在主动转换工作流中较弱,直接键入统一字段 UX 更快。
面向初学者、放在一份以教学为主的页面上的 HEX/RGB/HSL 切换器,在搜索结果中无处不在。无 OKLCH,除 hsla 外不处理 alpha,无高级特性。作为 W3Schools 讲解内容旁的参考工具有用。本工具在其他每个方面都更优:更多格式、感知数学、色域 + 对比度 + 色盲特性,以及面向 Tailwind v4 / SwiftUI / Compose / Flutter 的现代代码导出。
Chrome、Firefox 与 Safari 的 DevTools 都自带取色器,当您在 CSS 面板里点击颜色色卡时会内联在 HEX、RGB 与 HSL 之间切换。免费、免安装、随时可用。缺少 OKLCH、缺少可分享 URL、缺少面向非 Web 平台(SwiftUI、Compose)的代码导出。已经在调试 CSS 时用 DevTools;需要跨平台输出时用本工具。
一款专注的 HSL 取色器,带实时色相 / 饱和度 / 感知亮度滑块与 HEX 输出。UI 极简,适合快速做 HSL 探索。缺少 OKLCH 与更宽的格式网格;无对比度或色域特性。作为一款专注的「只做 HSL」工具有用;本工具覆盖同样的工作流,外加 8 种其他格式视图与感知层面的检查。
覆盖多种色彩空间的每色 SEO 页面(HEX、RGB、HSL、HSV、CMYK、XYZ、CIELAB)。缺少现代 OKLCH 支持,以及统一字段编辑 UX。自动生成的内容页面有些内容农场气息,但转换数据是正确的。通过 Google 翻找单个颜色的元数据时不错;主动工作流则本工具更快。
#3b82f6
HSL 输出:`hsl(217 91% 60%)`。基于 HSL 构建的设计系统的经典工作流:把品牌色一次性定义为 `--primary: hsl(217 91% 60%)`,然后只需调整 L 百分比来组合更浅的色卡 —— `hsl(217 91% 70%)` 作悬停色,`hsl(217 91% 80%)` 作禁用态,`hsl(217 91% 90%)` 作微妙的背景填充。色相与饱和度锁定不变,因此整组色读起来是一条连贯的色阶。基于 RGB 的样式表每一档都需要协调修改三个通道;HSL 只需一个。
#FF5733
HSL 输出:`hsl(11 100% 60%)`。在色相 + 饱和度 + 感知亮度框架下推理颜色的设计师(也就是 Munsell 在 1905 年形式化的那种认知模型),即便源文件交付的是 HEX,通常也想要 HSL 三元组。色相 = 11° 把它定位在橙色楔形的红色一侧;饱和度 = 100% 意味着通道完全饱和;感知亮度 = 60% 略高于中点。把 Figma 的 HEX 粘贴一次就得到对应的 HSL,可直接对接设计师心中的取色盘位置,无需手动猜色环。
#3b82f6
HSL 输出:`hsl(217 91% 60%)`。有了 HSL 三元组,生成色阶就是一维扫描:把 L 调到 70% 得到 `hsl(217 91% 70%)`、80% 得到 `hsl(217 91% 80%)`、90% 得到 `hsl(217 91% 90%)` 来逼近白色;降到 50%、40%、30% 得到更深的色卡。整条 9 档色阶都来自改一个数。色相与饱和度保持不变,因此浅色与深色在色调上彼此相关 —— 这正是在 OKLCH 让感知均匀色阶变得便宜之前,旧式设计系统所用的招数。
#FF573380
HSL 输出:`hsl(11 100% 60% / 0.5)`。末尾那一对(`80`)解码为 `128/255 ≈ 0.502`,通过 CSS Color 4 的斜线语法体现为 alpha 通道。等价的遗留形式是 `hsla(11, 100%, 60%, 0.5)`,自 IE 9 起每个浏览器都支持,也是更老的预处理器所期望的写法。带 alpha 的 8 位 HEX 在 2018 年原生登陆所有常青浏览器;在那之前,alpha 只能通过 `hsla()` 函数显式表达。
10 个最常转换的 HEX 代码及其 HSL 等价值的参考表 —— 纯原色、纯次原色,以及来自 Tailwind 调色板的 2 个真实品牌色。
纯黑。感知亮度 0% —— 没有发出任何光。色相与饱和度对灰色按惯例为 0。
#000000 → hsl(0 0% 0%) 屏幕上的纯黑很少是合适的设计选择 —— 正文文本不妨试试 `hsl(0 0% 7%)` 或 OKLCH 感知亮度 0.1–0.15,更柔和。
需要感知均匀的输出吗?请试用专用的 HEX 转 OKLCH 转换器 —— 与 HSL 不同,每一档 L 在不同色相之间看起来同样亮。
纯白。感知亮度 100% —— sRGB 中可能的最亮颜色。色相与饱和度对灰色按惯例为 0。
#FFFFFF → hsl(0 0% 100%) 暗环境下纯白背景容易引起视觉疲劳 —— 可以考虑 `hsl(0 0% 98%)` 或 OKLCH 0.98 之类更暖的替代。
需要感知均匀的输出吗?请试用专用的 HEX 转 OKLCH 转换器 —— 与 HSL 不同,每一档 L 在不同色相之间看起来同样亮。
纯红。色相 0°(色环的起点位置),饱和度完全饱和,感知亮度在纯色所在的中点。
#FF0000 → hsl(0 100% 50%) 纯红饱和度极高,很少适配品牌调色板 —— 大多数「红色」品牌色更接近 `hsl(0 73% 50%)`(#DC2626)。
需要感知均匀的输出吗?请试用专用的 HEX 转 OKLCH 转换器 —— 与 HSL 不同,每一档 L 在不同色相之间看起来同样亮。
纯绿。色相 120°(色环走完三分之一),饱和度完全饱和,感知亮度 50%。CSS 命名颜色 `lime`。
#00FF00 → hsl(120 100% 50%) CSS 关键字 `green` 解析为 #008000(hsl(120 100% 25%)),不是 #00FF00 —— 这是个常见混淆点。要表达纯 hsl(120 100% 50%) 请用 `lime`。
需要感知均匀的输出吗?请试用专用的 HEX 转 OKLCH 转换器 —— 与 HSL 不同,每一档 L 在不同色相之间看起来同样亮。
纯蓝。色相 240°(色环走完三分之二),饱和度完全饱和,感知亮度在中点。
#0000FF → hsl(240 100% 50%) 白底上的纯蓝过不了 WCAG AA 对比度(3.7:1) —— 正文文本可以考虑 `hsl(224 76% 48%)`(Tailwind blue-700)。
需要感知均匀的输出吗?请试用专用的 HEX 转 OKLCH 转换器 —— 与 HSL 不同,每一档 L 在不同色相之间看起来同样亮。
青色。色相 180°(色环中点,与红正对),饱和度完全饱和,感知亮度在纯色中点。CSS 命名颜色 `cyan` 或 `aqua`。
#00FFFF → hsl(180 100% 50%) 青色在色环上与红色正对(180°/0°),因此是任何红系品牌色天然的互补色搭档。
需要感知均匀的输出吗?请试用专用的 HEX 转 OKLCH 转换器 —— 与 HSL 不同,每一档 L 在不同色相之间看起来同样亮。
品红。色相 300°(色环走完六分之五),饱和度完全饱和,感知亮度在纯色中点。CSS 命名颜色 `magenta` 或 `fuchsia`。
#FF00FF → hsl(300 100% 50%) 品红在色环上与绿色正对(300°/120°),因此是任何绿系品牌色天然的互补色搭档。
需要感知均匀的输出吗?请试用专用的 HEX 转 OKLCH 转换器 —— 与 HSL 不同,每一档 L 在不同色相之间看起来同样亮。
黄色。色相 60°(色环走完六分之一,介于红与绿之间),饱和度完全饱和,感知亮度在纯色中点。
#FFFF00 → hsl(60 100% 50%) hsl(60 100% 50%) 的黄看上去比 hsl(0 100% 50%) 的红亮得多 —— 这是 HSL 感知非均匀性的一个鲜明例子。OKLCH 会把这一点拉平。
需要感知均匀的输出吗?请试用专用的 HEX 转 OKLCH 转换器 —— 与 HSL 不同,每一档 L 在不同色相之间看起来同样亮。
Tailwind CSS 默认的 blue-500 品牌色 —— 2020 年代中期标志性的「Web 蓝」。无数仪表盘、营销站点与管理工具中都在使用。
#3b82f6 → hsl(217 91% 60%) Tailwind v4 在 OKLCH 中重新定义了 blue-500(`oklch(0.629 0.193 263.4)`)以获得感知均匀的色阶 —— HSL 是 v3 的兜底。
需要感知均匀的输出吗?请试用专用的 HEX 转 OKLCH 转换器 —— 与 HSL 不同,每一档 L 在不同色相之间看起来同样亮。
Tailwind CSS 默认的 rose-500 —— 高饱和度的粉红色调,常用于强调按钮、警示状态和品牌对比。
#f43f5e → hsl(350 89% 60%) rose-500 的色相(350°)在色环上刚好位于红(0°/360°)之前 —— 轻微的粉色偏移让它读起来比纯红更暖。
需要感知均匀的输出吗?请试用专用的 HEX 转 OKLCH 转换器 —— 与 HSL 不同,每一档 L 在不同色相之间看起来同样亮。
把任意 HEX 值丢进 HEX 输入框 —— 带或不带前导 `#`、3 位简写(`#F73`)、6 位完整形式(`#3b82f6`)、4 位 alpha 简写(`#F738`),或者 8 位 alpha 完整形式(`#FF573380`)。工具会把全部 5 种输入形态在内部归一到同一规范颜色。大小写无关(`#3b82f6` 与 `#3B82F6` 解析结果完全相同)。非法字符或位数错误会产生一个安静的行内错误;合法 HEX 则会实时刷新其他每一个格式字段,包括 HSL。
HEX 字段下方的 HSL 字段以 CSS Color 4 现代空格分隔语法显示对应的 `hsl()` 值:不透明颜色为 `hsl(217 91% 60%)`,带 alpha 时为 `hsl(217 91% 60% / 0.5)`。色相是 0–360 之间的整数度;饱和度与感知亮度是 0–100 之间的整数百分比。数值会被四舍五入以便显示阅读 —— 工具的内部 OKLCH 事实源意味着底层精度是浮点,因此往返回到 HEX 时保持稳定。
每个格式卡片右侧都有一个复制按钮。一键即可把值送到剪贴板 —— 按钮标签短暂闪现「Copied!」以便您知道。复制出来的字符串是规范的 CSS Color 4 语法(`hsl(217 91% 60%)`);如果您的目标需要遗留的逗号形式(`hsl(217, 91%, 60%)`),转换是机械的。要输出特定平台的代码(Tailwind v4、SwiftUI、Compose、Flutter),请使用取色器下方的「复制为代码」区段 —— 那些片段会按每个平台原生期望的格式输出。
您粘贴的同一个 HEX 也会点亮其他格式字段 —— 给 canvas 调用与硬件用的 RGB,给感知均匀设计系统用的 OKLCH 与 OKLAB,给设计师取色器工作流用的 HSV 与 HWB,给印刷估算用的 CMYK,以及给文档与文案用的最接近 CSS 命名颜色。您绝不会被锁死在仅 HEX → HSL。如果您还需要把 OKLCH 三元组放进 Tailwind v4 `@theme` 块(那里感知亮度比 HSL 那条受 gamma 困扰的 L 更重要),它就在 OKLCH 字段中,带自己的复制按钮。
格式网格下方是一个 SL 方块 + 色相滑块 + alpha 滑块,用于可视化探索。SL 方块直接映射到 HSL 的饱和度 × 感知亮度平面:纵向拖动可让 L 在 0% 到 100% 之间游走,同时观察 HSL 字段实时更新。在锁定具体百分比之前,可视化地生成浅色或深色非常有用。在 Chromium 系浏览器(Chrome、Edge、Brave)上,EyeDropper 按钮会激活原生 `EyeDropper` API,在屏幕任意位置取样像素(包括浏览器窗口之外)。
`hsl(120 100% 50%)` 的绿看上去明显比 `hsl(240 100% 50%)` 的蓝更亮,尽管两者都在 L=50%。通过扫描 L 生成浅色色阶,产出的结果在不同色相之间看起来高低不齐 —— 绿色阶的浅端比蓝色阶的浅端爬升更快。这是 HSL 继承 sRGB gamma 特性的结构性属性,而不是您代码里的 bug。要做感知均匀的色阶,请切换到 OKLCH。
扫描 HSL 的 L 做 9 档调色板: 同样 L 下的 hsl(120 100% 50%) 与 hsl(240 100% 50%) 看起来明显亮度不同 —— 调色板感觉高低不齐。
改为扫描 OKLCH 的 L: oklch(0.7 0.2 130) 与 oklch(0.7 0.2 250) 看起来同样亮;调色板在所有色相之间读起来连贯一致。
HSL 的色相是角度 —— `hsl(370 91% 60%)` 被解读为 `hsl(10 91% 60%)`,因为 370° mod 360° = 10°。把色相从 350° 动画到 380° 会干净地穿过 360°/0°(一抹红);但若从 H=350 到 H=10 做错方向的线性插值,就会走*长*路,经过青、绿、黄 —— 绕 320° 的弯路。用 `Math.min(diff, 360 - diff)` 选短路径,或者用颜色库内置的色相插值。
从 H=350 到 H=10 做线性插值: (350 + 10) / 2 = 180°(青色中点) 错了 —— 沿色环走了长路。
短路径色相插值: midpoint = ((350 + 10 + 360) / 2) % 360 = 0°(红色中点) 沿色环短路径穿过红色。
HSL 与 HSV 共享色相轴,但第三个轴不同。HSL 的感知亮度是对称的 —— 0% 黑、50% 纯色、100% 白。HSV 的 Value 是非对称的 —— 0% 黑、100% 纯色,只有当饱和度降到 0 时才出现白。`hsl(0 100% 100%)` 是白色;`hsv(0 100% 100%)` 是纯红。许多颜色库与设计工具(Photoshop 的 HSB 取色器、Sketch 的颜色面板)使用 HSV —— 不做转换就在两个系统间复制粘贴会得到天差地别的颜色。
把 Photoshop 的 HSV 值粘进 CSS 的 hsl() 规则: Photoshop HSB 0, 100, 100(纯红) CSS hsl(0 100% 100%) 渲染成白色 —— 完全错的颜色。
粘进 CSS 之前把 HSV 转成 HSL: HSV 0, 100, 100 → HSL 0, 100%, 50% CSS hsl(0 100% 50%) 渲染成纯红 —— 正确。
HSL 的 S 与 L 轴在 CSS 中需要 `%` 后缀 —— `hsl(217 91 60)` 在每个浏览器中都是解析错误;正确写法是 `hsl(217 91% 60%)`。只有色相是无量纲(单位是度,但后缀可选)。许多临时性的转换器在其 HSL 输出中忘了带百分号,产出非法 CSS,粘进去之后静默失败。本工具在 HSL 字段中总是输出百分号。
输出不带百分号的 HSL: hsl(217 91 60) CSS 解析错误 —— 每个浏览器都忽略整条规则。
在 S 与 L 上带百分号输出 HSL: hsl(217 91% 60%) 合法 CSS —— 所有常青浏览器与 IE 9+ 都能工作。
转换工具
在线免费进制转换工具,支持二进制、八进制、十进制、十六进制及 2-36 任意进制互转。无需注册,数据不离开浏览器,即时获取结果。
转换工具
在浏览器中将 HEX 转 RGB、HSL、OKLCH、OKLAB 与 CMYK,一键复制任意格式。免费、免注册,您的颜色永远不会离开本页。
转换工具
在浏览器中把 HEX 颜色转成 CMYK。基于 sRGB 的朴素近似,适合印前预览。免费、免注册,您的颜色始终保留在本地。
转换工具
把 HEX 转成 OKLCH,直接喂给 Tailwind v4 设计 token。实时输出感知均匀的三元组,带 Display P3 色域提醒。免费,纯浏览器运行。
转换工具
在浏览器中把任意 HEX 颜色代码转成 RGB —— 3 位、6 位以及带 alpha 的 8 位 HEX 全部支持。免费、即时、免注册,您的颜色永远不会离开本页。
转换工具
免费在线压缩 JPEG、PNG、WebP 图片,体积缩小高达 80%。浏览器本地处理、图片不上传服务器。支持批量压缩 20 张、质量调节、前后对比预览。无需注册。