터치 타깃

Touch Target

손가락으로 정확히 누를 수 있는 최소 크기. Apple은 44×44pt, Google Material은 48×48dp를 권장합니다.

다른 이름: Tap target
···
html
<div class="stage">
  <div class="pane"><div class="tag">✗ 24px</div>
    <div class="row tight"><button></button><button></button><button id="hit1"></button><button></button></div>
    <div class="finger f1"></div>
  </div>
  <div class="pane"><div class="tag">✓ 44px</div>
    <div class="row roomy"><button></button><button id="hit2"></button><button></button></div>
    <div class="finger f2"></div>
  </div>
</div>
css
.stage{width:94%;height:88%;display:flex;gap:6%}
.pane{position:relative;flex:1;border-radius:14px;border:1px solid var(--line);background:var(--surface);display:grid;place-items:center;overflow:hidden}
.tag{position:absolute;top:8px;left:10px;font:700 10.5px/1 monospace;color:var(--muted)}
.row{display:flex}
.tight{gap:2px}
.tight button{width:22px;height:22px;border-radius:5px;border:1px solid var(--line);background:var(--bg)}
.roomy{gap:14px}
.roomy button{width:34px;height:34px;border-radius:8px;border:1px solid var(--line);background:var(--bg)}
button.err{background:var(--accent-2) !important}
button.ok{background:var(--accent-3) !important}
.finger{position:absolute;width:26px;height:26px;border-radius:50%;background:color-mix(in srgb,var(--fg) 25%,transparent);border:1px solid var(--fg);top:44%}
.f1{left:47%;animation:tap1 3s ease-in-out infinite}
.f2{left:50%;animation:tap2 3s ease-in-out infinite}
@keyframes tap1{0%,10%{opacity:0}25%,80%{opacity:1}95%,100%{opacity:0}}
@keyframes tap2{0%,10%{opacity:0}25%,80%{opacity:1}95%,100%{opacity:0}}
js
const h1 = document.getElementById('hit1');
const h2 = document.getElementById('hit2');
function pulse(el, cls) { el.classList.add(cls); setTimeout(() => el.classList.remove(cls), 500); }
setInterval(() => {
  pulse(h1.previousElementSibling, 'err');
  pulse(h2, 'ok');
}, 2000);

손가락 끝의 평균 접촉 면적(약 10mm 안팎)에 근거한 가이드라인으로, Apple 휴먼 인터페이스 가이드라인은 44×44pt, Google Material Design은 48×48dp를 최소 타깃 크기로 권장합니다. 마우스 커서는 픽셀 단위로 정밀하지만 손가락은 훨씬 뭉툭합니다 — 피츠의 법칙(→ fitts-law)의 모바일 버전이라 할 수 있습니다.

버튼이 작아도 실제 터치 가능 영역(히트박스)을 패딩으로 넓히면 시각적 크기는 유지하면서 오터치를 줄일 수 있습니다. 인접 타깃 사이 최소 간격(대략 8px 이상)도 함께 지켜야 합니다.

데모의 왼쪽은 24px 버튼이 촘촘히 붙어 있어 손가락(원)이 자주 옆 버튼을 잘못 누르고, 오른쪽은 44px에 간격을 둬 정확히 누릅니다.

언제 쓰나

모바일 UI의 아이콘 버튼·체크박스 크기를 정할 때 44px(iOS)/48dp(Android) 미만으로 내려가지 않게 하세요. 시각 크기가 작아야 하면 히트박스만 패딩으로 키우세요.