아이콘 그리드 (세이프 영역)

Icon Grid & Safe Area

아이콘을 그리는 캔버스와, 실제로 그림을 채울 수 있는 여백 안쪽 세이프 영역을 구분해두는 규칙.

다른 이름: Safe areaLive area
···
html
<div class="wrap">
  <div class="btn">
    <svg id="icon" viewBox="0 0 24 24" width="100%" height="100%">
      <rect id="pad" x="2" y="2" width="20" height="20" rx="4" fill="none" stroke="var(--accent)" stroke-width="0.6" stroke-dasharray="2 2" opacity="0"/>
      <path d="M12 3l2.4 5.1 5.6.6-4.2 3.8 1.2 5.5L12 15.8 6.9 18l1.2-5.5L4 8.7l5.6-.6Z" fill="var(--fg)"/>
    </svg>
  </div>
  <div class="label" id="lbl">no padding — touches the tap-target edge</div>
</div>
css
.wrap{display:flex;flex-direction:column;align-items:center;gap:10px}
.btn{width:clamp(64px,26vmin,100px);aspect-ratio:1;border-radius:18%;background:var(--surface);border:1px solid var(--line);display:grid;place-items:center;overflow:hidden}
#icon{transform-box:fill-box;transform-origin:center;transition:transform .5s ease}
.label{font-size:11px;color:var(--muted);text-align:center;max-width:85%;line-height:1.5}
#pad{transition:opacity .3s}
js
const icon = document.getElementById('icon');
const pad = document.getElementById('pad');
const lbl = document.getElementById('lbl');
let safe = false;
function paint() {
  icon.style.transform = safe ? 'scale(0.82)' : 'scale(1.12)';
  pad.style.opacity = safe ? '1' : '0';
  lbl.textContent = safe ? '2px safe padding \u2014 breathes inside the tap target' : 'no padding \u2014 touches the tap-target edge';
}
paint();
setInterval(() => { safe = !safe; paint(); }, 1700);

아이콘 그리드는 아이콘을 그리는 캔버스(보통 24×24px)와, 그 안에서 실제로 그림을 채울 수 있는 "세이프 영역"을 구분해둔 것이다. 캔버스 가장자리까지 꽉 채워 그리면 버튼이나 탭 영역 안에 넣었을 때 아이콘이 테두리에 닿아 답답해 보이고, 주변 UI 요소와의 간격도 불균등해진다.

일반적으로 24px 캔버스 기준 사방 2px씩을 세이프 영역 바깥으로 비워둔다 — 실제 그림은 20×20px 안에서 완성된다. 이 여백은 장식이 아니라 아이콘이 놓일 버튼·칩·배지의 배경과 아이콘 사이에 최소한의 숨 쉴 공간을 보장하는 규칙이다. 세트 안의 모든 아이콘이 같은 세이프 영역을 지켜야, 크기가 제각각인 아이콘들도 나열했을 때 줄이 맞아 보인다.

세이프 영역을 지키지 않으면 가장 먼저 드러나는 문제는 아이콘마다 "느껴지는 크기"가 다른 것이다. 여백을 넉넉히 둔 아이콘 옆에 여백 없이 꽉 채운 아이콘을 놓으면, 후자가 유독 크고 뻑뻑해 보인다.

언제 쓰나

아이콘 세트를 만들 때 캔버스와 별개로 세이프 영역을 먼저 정하고, 모든 아이콘이 그 경계를 넘지 않는지 그려질 때마다 확인하세요. 버튼·칩·배지 안에 들어가는 아이콘일수록 중요합니다.