단색 배색

Monochromatic

색상은 하나로 고정하고 명도·채도만 바꿔 위계를 만드는 배색. 실패할 일이 거의 없습니다.

다른 이름: Monochrome palette모노크로매틱
···
html
<div class="wrap">
  <div class="scale" id="scale"></div>
  <div class="card" id="card">
    <div class="chead" id="chead">Monochrome</div>
    <div class="cbody"><p id="cp">단일 색상, 명도만 바꿔서 위계를 만듭니다.</p><button class="cbtn" id="cbtn">Action</button></div>
  </div>
</div>
css
.wrap{width:min(460px,92%);display:grid;gap:clamp(10px,2.6vmin,16px)}
.scale{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;height:clamp(20px,5vmin,28px)}
.scale div{border-radius:5px}
.card{border-radius:14px;overflow:hidden;border:1px solid var(--line);cursor:pointer;box-shadow:0 10px 26px rgba(0,0,0,.12)}
.chead{padding:clamp(8px,2vmin,12px) 14px;font:700 clamp(11px,2.8vmin,13px)/1 system-ui;color:#fff}
.cbody{padding:clamp(10px,2.6vmin,16px)}
.cbody p{margin:0 0 10px;font:500 clamp(11px,2.6vmin,13px)/1.5 system-ui;color:#fff}
.cbtn{border:0;border-radius:8px;padding:8px 16px;font:700 clamp(10px,2.6vmin,12px)/1 system-ui;color:#fff;cursor:pointer}
js
const STEPS = [12, 24, 38, 52, 66, 80, 94];
let hue = 250, autoRotate = true;
const scale = document.getElementById('scale');
scale.innerHTML = STEPS.map((_, i) => '<div id="c' + i + '"></div>').join('');
const cells = STEPS.map((_, i) => document.getElementById('c' + i));
const chead = document.getElementById('chead'), cbtn = document.getElementById('cbtn'), card = document.getElementById('card'), cp = document.getElementById('cp');

function hsl(h, s, l) { return 'hsl(' + h + ', ' + s + '%, ' + l + '%)'; }
function render() {
  cells.forEach((el, i) => el.style.background = hsl(hue, 55, STEPS[i]));
  card.style.background = hsl(hue, 40, STEPS[5]);
  chead.style.background = hsl(hue, 62, STEPS[0]);
  cbtn.style.background = hsl(hue, 68, STEPS[3]);
  cp.style.color = STEPS[5] > 60 ? hsl(hue, 55, 12) : '#fff';
}
card.addEventListener('click', () => autoRotate = !autoRotate);

(function tick() {
  if (autoRotate) hue = (hue + 0.15) % 360;
  render();
  requestAnimationFrame(tick);
})();

색상(H)은 하나로 고정하고 명도(L)를 여러 단계로 나눠 팔레트를 만듭니다. 채도는 전체적으로 살짝만 조절해서 톤을 맞춥니다.

색끼리 절대 충돌하지 않는다는 게 가장 큰 장점입니다 — 헤더는 진하게, 배경은 연하게, 버튼은 중간 명도로 두면 그 자체로 위계가 생깁니다. 대신 색만으로는 구분이 잘 안 되니 명도 대비를 충분히 벌려야 합니다(이웃한 단계끼리 최소 10~15% 차이).

단조로워 보일 수 있어서, 포인트가 필요하면 보색 하나만 아주 작은 면적에 더하기도 합니다.

언제 쓰나

대시보드처럼 색으로 정보를 왜곡하면 안 되는 화면, 또는 브랜드 컬러 하나를 절대 벗어나면 안 될 때.