노이즈 그라데이션 보더

Noise gradient border

색이 흐르는 그라데이션 테두리에 미세한 노이즈 질감을 더해, 매끈한 디지털 느낌 대신 인쇄물·필름 같은 거친 표면을 냅니다.

다른 이름: Grainy gradient borderTextured border
···
html
<div class="ngb" id="ngb">
  <div class="noise"></div>
  <div class="inner"><strong>Limited run</strong><span>noise + gradient edge</span></div>
</div>
css
.ngb{--a:0deg;position:relative;overflow:hidden;width:min(240px,80%);border-radius:16px;padding:2px;
  background:conic-gradient(from var(--a),var(--accent),var(--accent-2),var(--accent-3),var(--accent))}
.noise{position:absolute;inset:0;opacity:.45;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.inner{position:relative;border-radius:14px;background:var(--surface);padding:26px 22px;display:grid;gap:5px;text-align:center}
.inner strong{color:var(--fg);font-size:16px}
.inner span{color:var(--muted);font-size:12px}
js
const el = document.getElementById('ngb');
let a = 0;
(function loop(){ a = (a + 1.2) % 360; el.style.setProperty('--a', a + 'deg'); requestAnimationFrame(loop); })();

기본 뼈대는 그라데이션 보더와 같은 이중 배경 트릭입니다 — 바깥은 conic-gradient, 안쪽은 surface 색으로 덮어 테두리 두께만 색이 드러나게 합니다. 여기에 SVG feTurbulence로 만든 노이즈 이미지를 테두리 레이어 위에 겹치고 mix-blend-mode: overlay로 섞으면, 테두리의 색상 정보는 유지한 채 표면만 거칠어집니다.

노이즈 레이어는 안쪽 solid 배경보다 먼저(아래) 그려야 테두리 두께 안에만 노이즈가 보이고 카드 내부는 깨끗하게 남습니다. 그라데이션 각도를 JS로 계속 돌리면 색이 흐르면서도 그레인은 고정된 채로 남아, 매끈한 빛과 거친 질감이 한 테두리 안에서 대비를 이룹니다.

필름 그레인이 화면 전체에 노이즈를 깔아 사진 같은 질감을 낸다면, 이건 그 노이즈를 테두리처럼 좁은 영역에만 국한해 그라데이션과 조합한 변형입니다.

언제 쓰나

브루탈리즘·아날로그 무드의 제품 카드, 한정판 배지에 씁니다. 노이즈가 너무 진하면 테두리 색 자체가 지저분해 보이니 불투명도를 0.5 이하로 유지하세요.