피드로 돌아가기
Dev.toFrontend
원문 읽기
Semantic Web 표준 준수를 통한 웹 접근성 및 UX 최적화 설계
Link or Button, that is the question.
AI 요약
Context
UI 개발 과정에서 Link와 Button의 기능적 혼용으로 인한 Web Accessibility 저하 문제 발생. 잘못된 Element 선택으로 인한 Screen Reader 오작동 및 Keyboard Interaction 불일치라는 설계 결함 분석.
Technical Solution
- URL 변경 및 페이지 이동/다운로드 목적의 경우 href 속성을 가진
<a>태그를 사용하여 Browser History 관리 및 Navigation Semantic 확보 - 페이지 내 상태 변경 및 Action 수행 목적의 경우
type속성을 명시한<button>태그를 사용하여 Event Dispatch 구조 설계 - Keyboard Interaction 최적화를 위해 Link는 Enter 키만, Button은 Enter 및 Space 키 모두 대응하는 Native Behavior 유지
- Screen Reader의 정확한 Element 인식을 위한 Descriptive Accessible Name 제공 및 ARIA 속성(
aria-expanded,aria-haspopup)을 통한 상태 제어 - 포커스 가시성 확보를 위해
outline: none사용을 금지하고:focus-visible가상 클래스를 통한 시각적 피드백 구현
실천 포인트
- URL 변경 여부에 따른 `<a>` vs `<button>` 선택 기준 수립 - `javascript:void(0)` 또는 `href="#"`를 이용한 버튼 구현 금지 - 버튼 사용 시 `type="button"`, `type="submit"`, `type="reset"` 중 목적에 맞는 속성 지정 - 모든 Interactive Element에 대해 `:focus-visible` 스타일 정의 확인 - Screen Reader 테스트를 통한 Accessible Name의 적절성 검증