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

用位移圖加顆粒,漸層的顏色不會被疊雜訊弄髒

疊雜訊圖會讓漸層變暗、變亮或變艷;改成把雜訊當位移圖,打散漸層自己的像素,顆粒就不會改變原本的顏色。

怎麼做

  1. 問題是漸層常出現難看的色階斷層。
  2. 常見解法有兩種:多放色標做緩動,或讓漸層帶雜訊。
  3. 作者早期用雜訊層與漸層層混合,後來覺得太複雜。
  4. 另一篇文章的做法靠一端透明讓雜訊透出,拉高對比與亮度,只適用部分漸層,並且大幅改變原漸層的飽和度與明度。
  5. 所有疊雜訊的做法的共同問題:會改變漸層,結果更暗、更亮或更艷。

可以怎麼用

日出暗色漸層底的色階斷層,用位移濾鏡處理背景層,文字另放一層。

可直接複製的素材

(.5 - C)*S
dx = (.5 - R)*S
dy = (.5 - A)*S

可直接複製的素材

<svg width='0' height='0' aria-hidden='true'>
<feTurbulence type='fractalNoise' baseFrequency='.9713' numOctaves='4'/>
<feDisplacementMap in='SourceGraphic' scale='150' xChannelSelector='R'/>
<feBlend in2='SourceGraphic'/>
</svg>

可直接複製的素材

.grad-box {
  background: linear-gradient(90deg, #a9613a, #1e1816);
  clip-path: inset(0);
  filter: url(#grain)
}

可直接複製的素材

.grad-box { /* relevant styles */
  positon: relative; /* needed for absolutely positioned pseudo */
  box-shadow: -2px 2px 8px #000;
  &::before {
    position: absolute;
    inset: 0;
    z-index: -1;
    background: linear-gradient(90deg, #a9613a, #1e1816);
    filter: url(#grain);
    clip-path: inset(0);
    content: '' /* pseudo won't show up without it */
  }
}

可直接複製的素材

.grad-box { /* relevant styles */
  box-shadow: -2px 2px 8px #000;
  background: filter(linear-gradient(90deg, #a9613a, #1e1816), url(#grain));
}

注意:filter() 函式只有 Safari 支援。

來源:Master.dev 部落格,2025-06-13|看原文