타깃 크기

Target Size

WCAG 2.2가 요구하는 클릭·탭 가능 영역의 최소 크기(24×24 CSS px)와 예외 조건.

다른 이름: WCAG 2.2 target size2.5.8
···
html
<div class="stage">
  <div class="pane"><div class="tag">✗ 16px</div>
    <div class="row tight"><button></button><button></button><button id="hit1"></button><button></button></div>
    <div class="ptr p1"></div>
  </div>
  <div class="pane"><div class="tag">✓ 24px+</div>
    <div class="row roomy"><button></button><button id="hit2"></button><button></button></div>
    <div class="ptr p2"></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 ui-monospace,monospace;color:var(--muted)}
.row{display:flex}
.tight{gap:2px}
.tight button{width:16px;height:16px;border-radius:4px;border:1px solid var(--line);background:var(--bg)}
.roomy{gap:12px}
.roomy button{width:24px;height:24px;border-radius:6px;border:1px solid var(--line);background:var(--bg)}
button.err{background:var(--accent-2) !important}
button.ok{background:var(--accent-3) !important}
.ptr{position:absolute;width:14px;height:14px;border-radius:50%;border:2px solid var(--fg);top:44%}
.p1{left:47%;animation:tap 3s ease-in-out infinite}
.p2{left:50%;animation:tap 3s ease-in-out infinite}
@keyframes tap{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(function () { el.classList.remove(cls); }, 500); }
setInterval(function () {
  pulse(h1.previousElementSibling, 'err');
  pulse(h2, 'ok');
}, 2000);

WCAG 2.2에서 새로 추가된 2.5.8은 포인터로 작동하는 타깃의 크기가 최소 **24×24 CSS px**는 되어야 한다고 요구합니다(AA 등급). 이보다 작으면 손 떨림이 있거나 정밀한 포인팅이 어려운 사용자가 옆 타깃을 잘못 누르기 쉽습니다.

전부 예외 없이 적용되진 않습니다 — 문장 안에 있는 링크처럼 **인라인**으로 흐르는 타깃, 24px보다 작아도 같은 기능을 하는 **동등한 타깃이 다른 곳에 있는** 경우, 브라우저 기본 UI처럼 저작자가 손댈 수 없는 요소는 예외입니다. 시각 크기를 그대로 두고 싶다면 padding으로 히트박스만 24px 이상으로 넓히는 방법도 있습니다.

데모 왼쪽은 16px 타깃이 촘촘히 붙어 있어 포인터(원)가 자주 옆 타깃을 잘못 누르고, 오른쪽은 24px 이상 + 충분한 간격으로 정확히 누릅니다.

언제 쓰나

체크박스·아이콘 버튼·리스트 액션처럼 작게 그리고 싶은 컨트롤은 시각 크기 대신 패딩으로 히트박스를 키우세요. 더 큰 44px(iOS)·48dp(Android) 권장치는 touch-target 항목을 참고하세요.