동시 대비

Simultaneous contrast

똑같은 색이라도 주변 색에 따라 다르게 보이는 착시. 색은 절대값이 아니라 항상 주변과 비교해서 지각됩니다.

다른 이름: Simultaneous color contrast색의 동시 대비
···
html
<div class="wrap">
  <div class="pane" id="paneA"><div class="sq"></div></div>
  <div class="pane" id="paneB"><div class="sq"></div></div>
  <div class="note">두 회색 사각형은 모두 <b>#8a8a8a</b> 입니다.</div>
</div>
css
.wrap{width:min(520px,94%);display:grid;grid-template-columns:1fr 1fr;gap:14px;justify-items:center}
.note{grid-column:1/-1;font:600 clamp(10px,2.6vmin,12px)/1.4 system-ui;color:var(--muted);text-align:center}
.note b{color:var(--fg)}
.pane{width:100%;aspect-ratio:4/3;border-radius:14px;display:grid;place-items:center;transition:background .8s;border:1px solid var(--line)}
.sq{width:38%;height:38%;background:#8a8a8a;border-radius:6px}
js
let hue = 20;
const paneA = document.getElementById('paneA'), paneB = document.getElementById('paneB');
function hsl(h, s, l) { return 'hsl(' + h + ', ' + s + '%, ' + l + '%)'; }
function render() {
  paneA.style.background = hsl(hue, 70, 28);
  paneB.style.background = hsl((hue + 180) % 360, 65, 80);
}
render();
setInterval(() => { hue = (hue + 47) % 360; render(); }, 2600);

아래 두 사각형은 픽셀 단위로 완전히 동일한 회색(#8a8a8a)입니다. 그런데 어두운 배경 위에서는 더 밝게, 밝은 배경 위에서는 더 어둡게 보입니다 — 뇌가 "이 배경 대비 이 정도 밝기"로 색을 계산하기 때문입니다.

이 현상은 색 대비를 눈으로만 판단하면 안 되는 이유이기도 합니다. 배경색을 바꾸는 순간 그 위에 있던 텍스트·아이콘의 "체감 대비"가 바뀌므로, 실제 디자인에서는 항상 최종 배경 위에서 대비를 확인해야 합니다 — 색상 피커에서 숫자로만 보고 판단하면 착시에 속습니다.

채도가 강한 배경일수록 착시가 심해지므로, 중립적인 요소(아이콘, 보더) 위에 화려한 배경을 깔 때는 특히 주의가 필요합니다.

언제 쓰나

배경색을 바꾼 뒤에는 그 위 요소들의 체감 대비를 다시 확인하세요. 숫자상 대비율이 같아도 착시는 그대로 남습니다.