---
title: 色相、明度与彩度
url: https://doc.liz6.com/general-education/visual-foundations/05-hue-value-and-chroma
locale: zh
area: general-education
tags:
- 通识入门
- 视觉基础
date: 2026-09-10
modified: 2026-09-10
description: “再蓝一点”“颜色太重了”“想要柔和一些”都很常见，但不够明确。你可能想变深，对方却提高了鲜艳程度；两人说的是不同变化。
---

# 色相、明度与彩度

“再蓝一点”“颜色太重了”“想要柔和一些”都很常见，但不够明确。你可能想变深，对方却提高了鲜艳程度；两人说的是不同变化。

**先分清色相、明度和彩度，再讨论怎样改颜色。** 本篇把这三个方向拆开观察。目标不是背一张色环，而是能准确描述两块颜色之间的差别。

## 四种蓝，差别在哪里？

想象浅蓝衬衫、深蓝封面、鲜艳蓝塑料和偏灰的蓝墙面。它们都可以属于蓝色附近，却并不相同。

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 210" width="800" height="210" role="img" aria-labelledby="vf-5-wide-title" data-diagram-layout="wide" data-diagram-theme="native">
<title id="vf-5-wide-title">同一灰背景的四块蓝色：A 浅，B 深，C 偏灰，D 彩度更高。</title>
<defs>
<radialGradient id="vf-5-wide-ball" cx="30%" cy="25%" r="80%">
<stop stop-color="#eee"/>
<stop offset=".5" stop-color="#aaa"/>
<stop offset="1" stop-color="#3f3f3f"/>
</radialGradient>
</defs>
<rect width="100%" height="100%" fill="#e8e4dc"/>
<g transform="translate(0 0) scale(1)">
<rect x="28" y="30" width="144" height="130" fill="#9bbbdd"/>
<text x="100" y="198" text-anchor="middle" font-family="sans-serif" font-size="22" fill="#34302a">A</text>
</g>
<g transform="translate(200 0) scale(1)">
<rect x="28" y="30" width="144" height="130" fill="#3b5876"/>
<text x="100" y="198" text-anchor="middle" font-family="sans-serif" font-size="22" fill="#34302a">B</text>
</g>
<g transform="translate(400 0) scale(1)">
<rect x="28" y="30" width="144" height="130" fill="#82878c"/>
<text x="100" y="198" text-anchor="middle" font-family="sans-serif" font-size="22" fill="#34302a">C</text>
</g>
<g transform="translate(600 0) scale(1)">
<rect x="28" y="30" width="144" height="130" fill="#608ab5"/>
<text x="100" y="198" text-anchor="middle" font-family="sans-serif" font-size="22" fill="#34302a">D</text>
</g>
</svg>

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 315" width="300" height="315" role="img" aria-labelledby="vf-5-compact-title" data-diagram-layout="compact" data-diagram-theme="native">
<title id="vf-5-compact-title">同一灰背景的四块蓝色：A 浅，B 深，C 偏灰，D 彩度更高。</title>
<defs>
<radialGradient id="vf-5-compact-ball" cx="30%" cy="25%" r="80%">
<stop stop-color="#eee"/>
<stop offset=".5" stop-color="#aaa"/>
<stop offset="1" stop-color="#3f3f3f"/>
</radialGradient>
</defs>
<rect width="100%" height="100%" fill="#e8e4dc"/>
<g transform="translate(0 0) scale(0.75)">
<rect x="28" y="30" width="144" height="130" fill="#9bbbdd"/>
<text x="100" y="198" text-anchor="middle" font-family="sans-serif" font-size="22" fill="#34302a">A</text>
</g>
<g transform="translate(150 0) scale(0.75)">
<rect x="28" y="30" width="144" height="130" fill="#3b5876"/>
<text x="100" y="198" text-anchor="middle" font-family="sans-serif" font-size="22" fill="#34302a">B</text>
</g>
<g transform="translate(0 157.5) scale(0.75)">
<rect x="28" y="30" width="144" height="130" fill="#82878c"/>
<text x="100" y="198" text-anchor="middle" font-family="sans-serif" font-size="22" fill="#34302a">C</text>
</g>
<g transform="translate(150 157.5) scale(0.75)">
<rect x="28" y="30" width="144" height="130" fill="#608ab5"/>
<text x="100" y="198" text-anchor="middle" font-family="sans-serif" font-size="22" fill="#34302a">D</text>
</g>
</svg>

这里的四块色样在同一背景上比较。A 与 B 主要展示浅深变化，C 与 D 主要展示偏灰与更鲜明的差别。把它们都称作“不同的蓝”没有错，但还可以说得更具体。

| 维度 | 先用日常语言理解 | 一个容易混淆的说法 |
| --- | --- | --- |
| 色相 | 偏什么颜色，例如偏青的蓝或偏紫的蓝 | “更蓝”可能是在改色相，也可能是在改彩度 |
| 明度 | 相对有多浅、多深 | 浅蓝不一定比深蓝更鲜艳 |
| 彩度 | 偏离同明度中性色有多远 | 颜色变鲜明不等于它一定变亮 |

这些定义需要放在指定的色彩体系里使用。“饱和度”与“彩度”也不是在所有体系中完全相同的量。

## 一次只改一个方向

下面采用 OKLCH：L 对应明度，C 对应彩度，H 对应色相。它是一种便于描述和计算的颜色表示。我们只选取显示器能正常显示的蓝色附近的一小段范围。

**把颜色的三种变化分开**

色样使用 OKLCH 的色相 H、明度 L 与彩度 C。每次只移动一个滑杆。范围限定在可显示的蓝色附近；中性色对照保留 L，把 C 设为 0，并不是截图的灰度转换。


先只提高 L，再恢复原值、提高 C。两种变化给人的感觉不同。最后调整 H，观察蓝色怎样偏向相邻色相。

“同 L 的中性色”会把 C 设为零，但保留当前 L。它帮助理解这个体系里的明度维度，**不是把屏幕拍下来后测量物理亮度，也不是证明两块颜色对每个人都完全等亮**。当 C 为零时，改变 H 不会改变颜色，因为它已经是中性色。

## 为什么不直接用调色器里的亮度？

不同调色器可能使用 HSL、HSV 或其他表示。HSL 的 L、HSV 的 V 与这里的 OKLCH L 不同，不能仅因为名称都带“亮”就互换。

例如，把两个不同色相的颜色都设成 HSL 的 50%，并不能保证它们看起来一样明亮。使用颜色工具时，先确认坐标属于哪种体系，再解释数值的意义。本篇不要求记住转换公式，交互已经完成从 OKLCH 到 sRGB 的转换。

## 完整示范：收到“这个蓝太重了”，究竟该改哪一项？

假设你正在给一个杯子选颜色。客户说“太重”，这个词可能指太暗、太鲜艳，也可能是杯子面积过大。先把模糊描述拆开，不要同时乱动三个滑杆。

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 520" width="640" height="520" data-vf-case="5" data-diagram-layout="wide" data-diagram-theme="native" role="img" aria-labelledby="case-5-wide-title">
<title id="case-5-wide-title">同一杯子：A 基准蓝，B 提高明度，C 降低彩度，D 向偏绿的色相调整。</title>
<rect width="100%" height="100%" fill="#f6f4ef"/>
<g transform="translate(0 0)">
<defs>
<clipPath id="case-5-wide-0">
<rect x="10" y="8" width="300" height="220" rx="3"/>
</clipPath>
</defs>
<g clip-path="url(#case-5-wide-0)">
<rect x="10" y="8" width="300" height="220" fill="#E9E5DA"/>
<path d="M206 97C272 85 268 163 208 155" fill="none" stroke="#447190" stroke-width="16"/>
<path d="M99 82H209L198 188H111Z" fill="#447190"/>
<ellipse cx="154" cy="82" rx="55" ry="12" fill="#303c43"/>
<path d="M48 190Q25 102 78 110Q95 160 48 190" fill="#4C6853"/>
</g>
<text x="160" y="251" text-anchor="middle" font-size="21" font-family="sans-serif" fill="#555">A</text>
</g>
<g transform="translate(320 0)">
<defs>
<clipPath id="case-5-wide-1">
<rect x="10" y="8" width="300" height="220" rx="3"/>
</clipPath>
</defs>
<g clip-path="url(#case-5-wide-1)">
<rect x="10" y="8" width="300" height="220" fill="#E9E5DA"/>
<path d="M206 97C272 85 268 163 208 155" fill="none" stroke="#85B4D6" stroke-width="16"/>
<path d="M99 82H209L198 188H111Z" fill="#85B4D6"/>
<ellipse cx="154" cy="82" rx="55" ry="12" fill="#303c43"/>
<path d="M48 190Q25 102 78 110Q95 160 48 190" fill="#4C6853"/>
</g>
<text x="160" y="251" text-anchor="middle" font-size="21" font-family="sans-serif" fill="#555">B</text>
</g>
<g transform="translate(0 260)">
<defs>
<clipPath id="case-5-wide-2">
<rect x="10" y="8" width="300" height="220" rx="3"/>
</clipPath>
</defs>
<g clip-path="url(#case-5-wide-2)">
<rect x="10" y="8" width="300" height="220" fill="#E9E5DA"/>
<path d="M206 97C272 85 268 163 208 155" fill="none" stroke="#636D75" stroke-width="16"/>
<path d="M99 82H209L198 188H111Z" fill="#636D75"/>
<ellipse cx="154" cy="82" rx="55" ry="12" fill="#303c43"/>
<path d="M48 190Q25 102 78 110Q95 160 48 190" fill="#4C6853"/>
</g>
<text x="160" y="251" text-anchor="middle" font-size="21" font-family="sans-serif" fill="#555">C</text>
</g>
<g transform="translate(320 260)">
<defs>
<clipPath id="case-5-wide-3">
<rect x="10" y="8" width="300" height="220" rx="3"/>
</clipPath>
</defs>
<g clip-path="url(#case-5-wide-3)">
<rect x="10" y="8" width="300" height="220" fill="#E9E5DA"/>
<path d="M206 97C272 85 268 163 208 155" fill="none" stroke="#357971" stroke-width="16"/>
<path d="M99 82H209L198 188H111Z" fill="#357971"/>
<ellipse cx="154" cy="82" rx="55" ry="12" fill="#303c43"/>
<path d="M48 190Q25 102 78 110Q95 160 48 190" fill="#4C6853"/>
</g>
<text x="160" y="251" text-anchor="middle" font-size="21" font-family="sans-serif" fill="#555">D</text>
</g>
</svg>

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 1040" width="320" height="1040" data-vf-case="5" data-diagram-layout="compact" data-diagram-theme="native" role="img" aria-labelledby="case-5-compact-title">
<title id="case-5-compact-title">同一杯子：A 基准蓝，B 提高明度，C 降低彩度，D 向偏绿的色相调整。</title>
<rect width="100%" height="100%" fill="#f6f4ef"/>
<g transform="translate(0 0)">
<defs>
<clipPath id="case-5-compact-0">
<rect x="10" y="8" width="300" height="220" rx="3"/>
</clipPath>
</defs>
<g clip-path="url(#case-5-compact-0)">
<rect x="10" y="8" width="300" height="220" fill="#E9E5DA"/>
<path d="M206 97C272 85 268 163 208 155" fill="none" stroke="#447190" stroke-width="16"/>
<path d="M99 82H209L198 188H111Z" fill="#447190"/>
<ellipse cx="154" cy="82" rx="55" ry="12" fill="#303c43"/>
<path d="M48 190Q25 102 78 110Q95 160 48 190" fill="#4C6853"/>
</g>
<text x="160" y="251" text-anchor="middle" font-size="21" font-family="sans-serif" fill="#555">A</text>
</g>
<g transform="translate(0 260)">
<defs>
<clipPath id="case-5-compact-1">
<rect x="10" y="8" width="300" height="220" rx="3"/>
</clipPath>
</defs>
<g clip-path="url(#case-5-compact-1)">
<rect x="10" y="8" width="300" height="220" fill="#E9E5DA"/>
<path d="M206 97C272 85 268 163 208 155" fill="none" stroke="#85B4D6" stroke-width="16"/>
<path d="M99 82H209L198 188H111Z" fill="#85B4D6"/>
<ellipse cx="154" cy="82" rx="55" ry="12" fill="#303c43"/>
<path d="M48 190Q25 102 78 110Q95 160 48 190" fill="#4C6853"/>
</g>
<text x="160" y="251" text-anchor="middle" font-size="21" font-family="sans-serif" fill="#555">B</text>
</g>
<g transform="translate(0 520)">
<defs>
<clipPath id="case-5-compact-2">
<rect x="10" y="8" width="300" height="220" rx="3"/>
</clipPath>
</defs>
<g clip-path="url(#case-5-compact-2)">
<rect x="10" y="8" width="300" height="220" fill="#E9E5DA"/>
<path d="M206 97C272 85 268 163 208 155" fill="none" stroke="#636D75" stroke-width="16"/>
<path d="M99 82H209L198 188H111Z" fill="#636D75"/>
<ellipse cx="154" cy="82" rx="55" ry="12" fill="#303c43"/>
<path d="M48 190Q25 102 78 110Q95 160 48 190" fill="#4C6853"/>
</g>
<text x="160" y="251" text-anchor="middle" font-size="21" font-family="sans-serif" fill="#555">C</text>
</g>
<g transform="translate(0 780)">
<defs>
<clipPath id="case-5-compact-3">
<rect x="10" y="8" width="300" height="220" rx="3"/>
</clipPath>
</defs>
<g clip-path="url(#case-5-compact-3)">
<rect x="10" y="8" width="300" height="220" fill="#E9E5DA"/>
<path d="M206 97C272 85 268 163 208 155" fill="none" stroke="#357971" stroke-width="16"/>
<path d="M99 82H209L198 188H111Z" fill="#357971"/>
<ellipse cx="154" cy="82" rx="55" ry="12" fill="#303c43"/>
<path d="M48 190Q25 102 78 110Q95 160 48 190" fill="#4C6853"/>
</g>
<text x="160" y="251" text-anchor="middle" font-size="21" font-family="sans-serif" fill="#555">D</text>
</g>
</svg>

图中只改杯身与把手的颜色，背景、叶子、形状和位置固定。四种杯色由同一套 OKLCH 转换生成：A 为 L=0.53、C=0.07、H=240°；B 只把 L 提到 0.75；C 只把 C 降到 0.018；D 只把 H 改到 185°。数值用来隔离变化方向，不是要求你记住这组坐标。

**A → B：如果意思是“太暗”，先提高明度。** 杯子变浅，和浅背景之间的明暗差减小。它可能显得更轻，但轮廓也可能不够清楚。改完要回看边界，而不是只在调色器里看一个孤立色块。

**A → C：如果意思是“太抢眼”，可以先试降低彩度。** 杯子更偏灰，却没有把明度坐标一起抬高。灰蓝并不等于浅蓝；把每个颜色都降低彩度，也不一定会得到有层次的画面。

**A → D：如果意思是“想偏绿一点”，才是改色相。** 这是颜色家族方向的变化。假如原问题是字看不清，绕色相环转一圈却保持近似明暗，未必能解决问题。

四种版本没有统一的美观排名。把它们放回任务里判断：浅色商品图可能选择 B，较克制的插画可能试 C，需要呼应植物的方案可能试 D。每个判断都要带上具体意图与周围关系。

## 暖色、冷色与中性色怎样用得具体？

红橙黄常被概括为偏暖的家族，蓝及部分蓝绿常被概括为偏冷；但局部比较同样重要。偏紫的蓝与偏绿的蓝放在一起，会产生不同的冷暖判断。不能仅凭“蓝色”二字就解释整张图的感觉。

“中性色”在严格模型中可以指无彩色轴；设计交流里也常把灰米色、灰褐色、很低彩度的蓝灰称作中性色。它们并不一定完全没有色相。米白靠近冷白时会更显暖，蓝灰靠近米白时也更显蓝。挑背景时，低彩度区域的偏色仍然会影响其他颜色。

实际选择可以这样开始：先挑一块偏暖或偏冷的低彩度底色，再把候选主体色放到它旁边比较。这样比“所有白都一样”“中性色不会影响配色”的假设可靠。

## 三原色为什么会有不同版本？

屏幕主要通过红、绿、蓝光相加形成颜色；彩色印刷常用青、品红、黄并配合黑色油墨。传统绘画教学又常见红、黄、蓝色环，它对颜色家族的比较很直观，但不能把它当作所有显示器和颜料的精确混合公式。

因此，“蓝的补色是什么”要先看你在用哪种色环或混合体系。设计中说蓝橙互补，通常是在讲传统色环附近的色相对比方向；程序把 RGB 分量各自取反，得到的则是另一种数值操作。不能只因两者都叫“补色”，就期待结果完全相同。

颜料还会受具体色料、透明度和底色影响。把屏幕上两个色块并排，并没有模拟它们在调色盘上混合。这里先学会选色和描述，真正混颜料时还需要小样试混。

## 一张可以反复使用的选色检查单

先写一句具体修改目标，例如“杯子比叶子更浅一点，但保留蓝感”。然后只改相关坐标，将新旧版本并排放在同一背景上，检查对象轮廓和整体主次。若问题没有解决，再判断是否其实应该改面积、位置或周围颜色。

需要匹配真实商品色时，显示器状态、照明、色彩管理和实物打样还会影响结果。本课的屏幕色样适合建立判断方法，不能代替生产中的颜色校对。下一篇会把这些变化用在完整的配色方案里。

## 换成包装：改色相是否解决了边界问题？

任务是让包装外缘从浅背景里更清楚地显现，同时保留柔和的颜色。A 是现状；B 保持 OKLCH 明度和彩度、只把蓝方向换成绿方向；C 保持蓝方向和彩度、降低明度。选一个优先方案，并比较它的代价。

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 520" width="640" height="520" data-vf-case="practice-5" data-diagram-layout="wide" data-diagram-theme="native" role="img" aria-labelledby="case-practice-5-wide-title">
<title id="case-practice-5-wide-title">换成包装：改色相是否解决了边界问题？</title>
<rect width="100%" height="100%" fill="#f6f4ef"/>
<g transform="translate(0 0)">
<defs>
<clipPath id="case-practice-5-wide-0">
<rect x="10" y="8" width="300" height="220" rx="3"/>
</clipPath>
</defs>
<g clip-path="url(#case-practice-5-wide-0)">
<rect x="10" y="8" width="300" height="220" fill="#e8e9e3" />
<rect x="89" y="49" width="142" height="149" fill="#C6D7E3" />
<text x="111" y="127" font-size="30" font-family="sans-serif" fill="#293e42">TEA</text>
</g>
<text x="160" y="251" text-anchor="middle" font-size="21" font-family="sans-serif" fill="#555">A</text>
</g>
<g transform="translate(320 0)">
<defs>
<clipPath id="case-practice-5-wide-1">
<rect x="10" y="8" width="300" height="220" rx="3"/>
</clipPath>
</defs>
<g clip-path="url(#case-practice-5-wide-1)">
<rect x="10" y="8" width="300" height="220" fill="#e8e9e3" />
<rect x="89" y="49" width="142" height="149" fill="#C9D9CC" />
<text x="111" y="127" font-size="30" font-family="sans-serif" fill="#293e42">TEA</text>
</g>
<text x="160" y="251" text-anchor="middle" font-size="21" font-family="sans-serif" fill="#555">B</text>
</g>
<g transform="translate(0 260)">
<defs>
<clipPath id="case-practice-5-wide-2">
<rect x="10" y="8" width="300" height="220" rx="3"/>
</clipPath>
</defs>
<g clip-path="url(#case-practice-5-wide-2)">
<rect x="10" y="8" width="300" height="220" fill="#e8e9e3" />
<rect x="89" y="49" width="142" height="149" fill="#5F6E79" />
<text x="111" y="127" font-size="30" font-family="sans-serif" fill="#293e42">TEA</text>
</g>
<text x="160" y="251" text-anchor="middle" font-size="21" font-family="sans-serif" fill="#555">C</text>
</g>
</svg>

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 780" width="320" height="780" data-vf-case="practice-5" data-diagram-layout="compact" data-diagram-theme="native" role="img" aria-labelledby="case-practice-5-compact-title">
<title id="case-practice-5-compact-title">换成包装：改色相是否解决了边界问题？</title>
<rect width="100%" height="100%" fill="#f6f4ef"/>
<g transform="translate(0 0)">
<defs>
<clipPath id="case-practice-5-compact-0">
<rect x="10" y="8" width="300" height="220" rx="3"/>
</clipPath>
</defs>
<g clip-path="url(#case-practice-5-compact-0)">
<rect x="10" y="8" width="300" height="220" fill="#e8e9e3" />
<rect x="89" y="49" width="142" height="149" fill="#C6D7E3" />
<text x="111" y="127" font-size="30" font-family="sans-serif" fill="#293e42">TEA</text>
</g>
<text x="160" y="251" text-anchor="middle" font-size="21" font-family="sans-serif" fill="#555">A</text>
</g>
<g transform="translate(0 260)">
<defs>
<clipPath id="case-practice-5-compact-1">
<rect x="10" y="8" width="300" height="220" rx="3"/>
</clipPath>
</defs>
<g clip-path="url(#case-practice-5-compact-1)">
<rect x="10" y="8" width="300" height="220" fill="#e8e9e3" />
<rect x="89" y="49" width="142" height="149" fill="#C9D9CC" />
<text x="111" y="127" font-size="30" font-family="sans-serif" fill="#293e42">TEA</text>
</g>
<text x="160" y="251" text-anchor="middle" font-size="21" font-family="sans-serif" fill="#555">B</text>
</g>
<g transform="translate(0 520)">
<defs>
<clipPath id="case-practice-5-compact-2">
<rect x="10" y="8" width="300" height="220" rx="3"/>
</clipPath>
</defs>
<g clip-path="url(#case-practice-5-compact-2)">
<rect x="10" y="8" width="300" height="220" fill="#e8e9e3" />
<rect x="89" y="49" width="142" height="149" fill="#5F6E79" />
<text x="111" y="127" font-size="30" font-family="sans-serif" fill="#293e42">TEA</text>
</g>
<text x="160" y="251" text-anchor="middle" font-size="21" font-family="sans-serif" fill="#555">C</text>
</g>
</svg>

<details data-vf-practice="5"><summary>先判断，再展开图解</summary>

C 直接拉开包装与背景的明暗差，边界更明确；代价是包装看起来更深。B 换了颜色家族，却保留近似的浅深关系，边界问题仍在。若品牌要求包装必须很浅，还可另试改变紧邻背景或加边框；那是不同的修改约束。注意这道题判断外缘，深色 TEA 文字原本就清楚。

</details>

## 两个短自检

**情境一：** 你希望按钮颜色更鲜明，却不想明显改变浅深。应该先试哪个方向？

<details><summary>展开参考思路</summary><p>在明确的色彩体系里，先保持明度与色相，尝试提高彩度，再放回实际背景中核对效果。显示色域可能限制可用范围；工具数值不是最终观感的替代品。</p></details>

**情境二：** 一块灰色的 C 已经是 0，改变 H 后看不出差别。这说明控件坏了吗？

<details><summary>展开参考思路</summary><p>没有。无彩色没有可见的色相方向；在这个表示里，C = 0 时 H 不影响输出。先增加一点 C，再比较 H 的变化。</p></details>

## 回到清楚的描述

下次比较两种颜色，可以先说“它更浅”“它更偏紫”“它更鲜明”。每次尽量说明一个维度，再看几个维度如何一起变化。

可选实践：找同一色相附近的衣物或包装，按浅深排一次，再按柔和到鲜明排一次。两次排序不必相同。

延伸阅读：[Colour Literacy：颜色属性](https://colourliteracy.org/colour-attributes2)、[CSS Color 4：Oklab 与 OkLCh](https://www.w3.org/TR/css-color-4/#ok-lab)。光的相加与颜料的混合属于不同过程，本篇的屏幕色样不承担颜料配方教学。
