
<header> 사용<footer> 사용<main> 사용<article> 사용<h1> 사용<ul>과 <li> 사용| 태그 | 암묵적 기본 역할 | 적용 가능한 역할 |
|---|---|---|
| role=“button” | checkbox, link, option, radio, switch, tab, etc … | |
~ | role=“heading | none, presentation |
| role=“list” | directory, group, listbox, menu, etc … | |
| role=“navigation” | menu, menubar, tablist | |
| role=“checkbox” | button, checkbox, option, switch |
<img> 태그를 사용한다.<img src="/img/img_nudge_typeB_320x219.png" alt="기뻐하는 죠르디" />
<img>태그만큼 많이 사용하는 <button>태그이다.<img>의 alt 속성, svg의 <desc><button type="button">
<!--<img src="/img/img_common_question.png" alt="물음표" />: 구체적이지 않으며 추상적-->
<img src="/img/img_common_question.png" alt="내 대출 승인율이란" />
</button>
👩🏻💻 (개발자): 아이콘 모양이 물음표니까 모양 그대로 전달해야지! 📢 (스크린 리더): 내 대출 승인율이란 버튼
<img>의 author는 alt 속성으로 Accessible Name은 “내 대출 승인율이란”이 된다.<button>은 author가 설정되지 않은 경우 자식 요소의 Accessible Name을 모아 contents로 사용하는 Children Presentational이라는 특징을 갖는다.<button>의 content는 ‘내 대출 승인율이란’이 되고 스크린 리더는 자동적으로 결정한 role과 결합해 “내 대출 승인율이란 버튼”이라고 해석하게 된다.<table> 태그를 함부로 남용하면 스크린 리더는 데이터 추출의 어려움을 겪게 되고 사용자도 정보 탐색의 어려움을 느끼게 된다.스크린 리더는 레이아웃 표와 데이터 표를 다르게 취급한다.
레이아웃 표의 경우 소스 코드 순서에 따라 표의 내용을 간단히 읽는다.
반면 데이터 표의 경우 열 및 행 수를 포함하여 데이터의 존재를 식별하고, 표 탐색 기능을 제공해 행 및 열 머리글 읽기 등을 수행해 사용자가 좀 더 쉽게 데이터를 탐색할 수 있다.
<!-- 잘못된 예시 -->
<table>
<colgroup>
<col width="166px" />
<col width="95px" />
<col width="95px" />
<col width="95px" />
</colgroup>
<thead>
<tr>
<th>부부합산 연소득</th>
<th>임차보증금 5천만원 이하</th>
<th>5천만원 초과 ~ 1억이하</th>
<th>1억원 초과</th>
</tr>
</thead>
<tbody>
<tr>
<th>~2천만원</th>
<td>1.8%</td>
<td>1.9%</td>
<td>1.5%</td>
</tr>
</tbody>
</table>
<!-- 올바른 예시 -->
<table>
<caption>
<span class="blind"
>부부합산 연소득과 임차보증금 기준 구간별 일반가구 상품 대출 금리</span
>
</caption>
<colgroup>
<col width="166px" />
<col width="95px" />
<col width="95px" />
<col width="95px" />
</colgroup>
<thead>
<tr>
<th scope="col">부부합산 연소득</th>
<th scope="col">임차보증금 5천만원 이하</th>
<th scope="col">5천만원 초과 ~ 1억이하</th>
<th scope="col">1억원 초과</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">~2천만원</th>
<td>1.8%</td>
<td>1.9%</td>
<td>1.5%</td>
</tr>
</tbody>
</table>
<caption>과 scope 속성을 추가해 테이블 내의 요소 간 구조에 대한 정보를 제공하도록 수정했다.1. caption
<caption> 태그로 제공해 표의 목적을 명확하고 상세하게 설명하여 사용자가 표 콘텐츠를 확인할지, 넘어갈지 결정할 때 도움을 줄 수 있다.<caption>태그를 불가피하게 숨기는 경우가 많은데, 이러한 경우 주의해야 할 점은 display:none 혹은 visibility:hidden으로 숨기면 스크린 리더가 해당 내용을 읽을 수 없기 때문에 해당 숨김 속성은 사용하면 안된다.2. scope
<th>요소를 제목 셀로 사용할 때, 행에는 scope="row"를 사용하고 열에는 scope="col"을 사용해 행과 열을 구분할 수 있도록 한다.위의 표는 단순 데이터 용이지만, 만약 복합한 구조의 표일 경우 id, header 속성을 추가로 이용하여 관계를 설명해야 한다.
보통 colspan 속성과 rowspan을 사용하는 경우 복잡한 구조의 표라고 할 수 있다.
<table>태그를 사용하지 않고 CSS로 테이블 형태를 만들어 사용하는 것을 권장하나 불가피하게 <table>태그를 사용해야 하는 경우라면<caption>, <thead>, <tbody>, <tfoot>, <th>요소 등 의미 있는 요소를 사용하지 않아야 한다.Chrome DevTools
https://tech.kakaopay.com/_astro/img-dev-01.865cbb40_Z1mvJqs.avif
[Accessibility Tree View 활성화 방법]
HTML
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>HTML !DOCTYPE declaration</title>
</head>
<body>
<p>이 문서는 HTML 문서입니다.</p>
</body>
</html>
https://tech.kakaopay.com/post/accessibility-stories-for-everyone/#웹-표준을-지키는-것부터
https://inpa.tistory.com/entry/WEB-📚-웹-표준의-이해#1.doctype선언