블렌드 모드

Blend mode

겹친 두 레이어의 색을 곱하기·스크린·오버레이 같은 공식으로 합성하는 CSS 속성.

다른 이름: mix-blend-modebackground-blend-mode
···
html
<div class="wrap"><div class="stage"><div class="c a"></div><div class="c b" id="b"></div></div><div class="tag" id="tag">multiply</div></div>
css
.wrap{display:flex;flex-direction:column;align-items:center;gap:10px}
.stage{position:relative;width:180px;height:110px;background:#eceef2;border-radius:14px;overflow:hidden}
.c{position:absolute;width:90px;height:90px;border-radius:50%}
.a{background:#ff8a3d;left:10px;top:10px}
.b{background:#5b5bf7;left:60px;top:10px;mix-blend-mode:multiply;animation:drift 3s ease-in-out infinite alternate}
@keyframes drift{to{transform:translate(10px,8px)}}
.tag{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;color:var(--muted);letter-spacing:.02em}
js
const b = document.getElementById('b');
const tag = document.getElementById('tag');
const modes = ['multiply', 'screen', 'overlay', 'difference', 'color-dodge', 'normal'];
let i = 0;
setInterval(() => { i = (i + 1) % modes.length; b.style.mixBlendMode = modes[i]; tag.textContent = modes[i]; }, 1800);

mix-blend-mode 는 요소와 그 아래 있는 모든 것을, background-blend-mode 는 한 요소 안의 배경 레이어끼리 섞습니다. multiply 는 어둡게(포토샵과 같은 공식), screen 은 밝게, difference 는 색상을 반전에 가깝게 만들어 강한 대비를 냅니다.

같은 두 도형을 겹쳐두고 모드만 바꿔 보면 차이가 뚜렷합니다 — 디자인 도구(Figma, Photoshop)의 블렌드 모드와 같은 수학을 씁니다.

언제 쓰나

듀오톤, 텍스처 오버레이, 색 있는 그림자 등에 흔히 씁니다. 브라우저마다 색공간 처리가 미묘하게 다르니 중요한 화면은 실제로 확인하세요.