首先,#AB2 的计算结果为 #AABB22 而不是 #A0B020。
接下来,解决您的问题:
...为什么以下 2 个版本显示相似的颜色(至少在视觉上)#RGB 和 #R0G0B0?
我认为最好用 HSL 代替 RBG 或 HEX 来解释。
当我们convert the hex values to HSL 时,我们得到:
#a1bd24 -> hsl(71, 68%, 44%)
#ab2 -> hsl(67, 69%, 43%)
#aabb22 -> hsl(67, 69%, 43%)
#a0b020 -> hsl(67, 69%, 41%)
如果您不熟悉 HSL,这里有一个 short article,它解释了 H、S 和 L 代表什么。
色相
#AB2 和 #A0B020 的色调均为 67。这意味着这两个十六进制值实际上是相同的颜色。
饱和度
#AB2 和 #A0B020 的饱和度均为 69%。这意味着这两个十六进制值实际上是相同的颜色,具有相同的饱和度。
亮度/亮度 (或者你能说它是阴影吗?)
这里,#AB2 和 #A0B020 在亮度上有 2% 的差异。这意味着即使它们本质上是具有相同饱和度的相同颜色,但在颜色的实际呈现中存在非常细微的差异。由于差异只有 2%,当我们用眼睛感知它们时,我们会发现几乎没有差异。
#RRGGBB 中每 2 位对的第 2 位是不是代表一个阴影?
不是真的。
正如您在 #A1BD24 示例中所见,唯一变化的数字是每 2 位数字对的第 2 位数字,但其 HSL 值与 #AB2 和 #A0B020 完全不同。
它的 HUE 变为 71,这意味着它已经是另一种颜色(尽管它仍然是非常绿色的)。所以,这个说法是错误的。
div {
width: 100px;
height: 100px;
float: left;
text-align: center;
line-height: 100px;
}
#a1bd24 { background-color: #a1bd24; }
#ab2 { background-color: #ab2; }
#aabb22 { background-color: #aabb22; }
#a0b020 { background-color: #a0b020; }
<div id="a1bd24">#A1BD24</div>
<div id="ab2">#AB2</div>
<div id="aabb22">#AABB22</div>
<div id="a0b020">#A0B020</div>