웹 표준 vs 웹 접근성
웹 표준은 다양한 브라우저와 플랫폼에서 웹사이트가 동일하게 동작하도록 기술적 규칙을 정한 것이고, 웹 접근성은 장애인이나 고령자 등 모든 사용자가 웹사이트에 동등하게 접근할 수 있도록 하는 것이다.
즉, 웹 표준은 ‘기술적 일관성’에 초점을 두고, 웹 접근성은 ‘사용자 모두의 접근 가능성’에 초점을 둔다.
따라서 가능한 많은 사용자들의 경험 향상을 위해 웹 접근성을 고려하는 것은 프로페셔널한 프론트엔드 개발자로 성장하기 위해 중요한 요소 중 하나라고 볼 수 있다.
버튼 컴포넌트의 접근성 개선
일반적으로 버튼 컴포넌트를 개발할 때, 접근성 측면에서 가장 먼저 고려해야 할 건 키보드 조작이 가능해야 한다는 것이다.
즉, Tab 키로 포커스가 이동되고, Enter나 Space 키로 버튼이 눌릴 수 있어야 한다.
키보드 접근성을 보완하려면 리액트 기준, onClick 이벤트외에도 onKeyDown 이벤트로 Enter나 Space 키 입력을 처리해주면 된다.
<button
onClick={onClick}
onKeyDown={(e) => e.key === "Enter" && onClick}
disabled={disabled}
>버튼</button>
그리고 두 번째는 disabled 상태일 때 사용자가 의도치 않게 상호작용하지 않도록 접근을 확실히 막아주는 것도 중요하다.
cursor에 관하여
예전에는 사용자 피드백을 더 잘 주기 위해 버튼에 습관처럼 cursor-pointer를 적용하곤 했다.
하지만 최근 들어 이 방식에 대해 다시 생각해볼 필요가 있다는 걸 알게 됐다.
cursor-pointer를 강제로 적용하면, 버튼이 disabled 상태로 바뀌어도 커서가 여전히 손 모양으로 유지된다.
이렇게 되면 실제로는 클릭이 불가능한데도 사용자 입장에선 클릭 가능한 버튼으로 오해할 수 있고, 이는 UX 관점에서 바람직하지 않다.
HTML 기본 <button> 요소는 브라우저마다 기본 커서가 default로 설정되어 있다.
즉, 마우스를 올려도 손 모양 커서가 나오지 않는 것이 정상이다.
이는 <button>이 링크처럼 "이동"을 보장하는 요소가 아니기 때문에 브라우저도 pointer 커서를 기본으로 적용하지 않는 것이다.
여기서 중요한 점은 커서 스타일 자체는 접근성 기준이 아니라는 것이다.
손 모양 커서가 나왔다고 해서 접근성이 향상되는 건 아니다.
접근성에서 중요한 건
- 요소의 역할을 명확히 지정하는 것(role="button")
- 키보드 접근 가능성 보장
- 스크린 리더를 위한 aria-* 속성 처리
같은 부분들이다.
결론적으로, cursor-pointer는 필수 접근성 요소가 아니라 보조적인 UX 개선 도구다.
사용자 경험을 고려해 적절히 활용하되, disabled 상태일 땐 커서 관련 예외 처리도 함께 고려할 필요가 있다.
// Tailwind 기준 예시
className="cursor-pointer disabled:cursor-not-allowed"
'프론트엔드' 카테고리의 다른 글
[프론트엔드] Next.js(15)에 MSW 도입하기 (0) | 2025.06.18 |
---|---|
[프론트엔드] AWS에 Next.js 앱을 배포하기 위한 옵션들 (1) | 2025.06.13 |
[프론트엔드] 워터폴 현상 & 문제가 되는 이유 (2) | 2025.05.16 |
[프론트엔드] 왜 프론트엔드에서는 MVC를 잘 안 쓸까? (0) | 2025.05.09 |
[프론트엔드] 리액트는 어쩌다 모든걸 함수로 작성하게 되었을까? (1) | 2025.05.09 |