← 全部學習筆記
2026-10-27 學到
設計

漸層中段發灰源自 RGB 平均,加中間色就能救

CSS 漸層用 RGB 三通道取平均,所以兩個高彩度色的中段會變成灰;解法是換感知色彩空間,或手動算出多個中間色塞進漸層。

怎麼做

  1. 預設漸層從純黃到純藍,中段會發灰變髒,作者引用 Erik Kennedy 的說法叫灰色死區。
  2. 原因是 CSS 漸層對 R、G、B 三個通道各自取數學平均。
  3. 黃(255/255/0)與藍(0/0/255)走到正中央,三個通道都收斂到中間值,結果是灰。
  4. 兩個高彩度色混出完全無彩度的色,作者提問能不能只混色相、保持彩度一致。
  5. 換成 HSL 內插,起訖色明度與彩度相同時只有色相在變,等於沿色輪走一圈,灰色死區消失。

可以怎麼用

日出主題的天空漸層,改用 12 到 13 個手動色標,中點避開灰色。

可直接複製的素材

<style>
  body {
    /* Fallback for older browsers: */
    background:
      linear-gradient(to right, yellow, blue);
/* Fancy new value: */
    background:
      linear-gradient(to right in oklch, yellow, blue);
  }
</style>

可直接複製的素材

.box {
  background-image: linear-gradient(
    to right,
    #ffff00,
    #f8ea47,
    #f0d465,
    #f0d465,
    #e7bf7c,
    #ddaa8f,
    #d095a1,
    #c280b2,
    #b26cc2,
    #9d56d2,
    #8440e1,
    #6028f0,
    #0000ff
  )
}

注意:原文談的是 CSS 螢幕漸層。

來源:Josh W. Comeau,2022-01-11|看原文