웹 접근성

접근성 table 작성

동띠기 2020. 8. 26. 17:13
728x90

접근성에 table 요소 작업은 꽤 어렵다. 하나하나 살펴보자.

 

일단 table의 제목인 caption 이 작성되어야 한다. 

caption은 table 바로 아래 위치 해야하며

마크업 순서는 table > caption > colgroup > thead > tbody > tfoot 순 이다.

 

보통 caption을 나타내야하거나 사용한다면 그대로 두고 css로 style 하면 되지만, 사용하지 않고 숨겨야 한다면 

마찬가지로 clip를 사용하여 숨기면 된다.

 

그리고 또 중요한 점은 scope이다. scope는 표의 제목이 어떤 방향을 얼마만큼 가르키고 있는지를 알려준다.

위와 같은 테이블의 제목은 연령별,성별,조회수,비율 그리고 좌측에 전체 , 0-12 , 남, 여 이렇게 th로 작성이 될 것이다.

연령별,성별,조회수,비율은 자기 영역 아래 쪽(열)에 해당하는 내용들이 있다.

전체 , 0-12 , 남, 여 는 가로 행 쪽에 해당하는 내용들이 있다. 이러한 방향들을 설정해 주는 것이 scope 이다.

 

그럼 작성된 코드를 보자. 일단 thead 이다.

<thead>
	<tr>
		<th scope="col">연령별</th>
		<th scope="col">성별</th>
		<th scope="col">조회수</th>
		<th scope="col">비율</th>
	</tr>
</thead>

scope = "col" 은 아래 열에 해당하는 내용들이 있다는 뜻이다.

 

tbody 한 행만 살펴보자

 

                <tr>
                    <th rowspan="2" scope="rowgroup">전체</th>
                    <th class="male" scope="row">남</th>
                    <td>0</td>
                    <td>0.0%</td>
                </tr>
                <tr>
                    <th class="female" scope="row">여</th>
                    <td>0</td>
                    <td>0.0%</td>
                </tr>

전체 라는 th는 아래와 합쳐짐으로 rowspan을 주었고, scope는 rowgroup이다.

전체는 남/여를 감싸고 있음으로 row가 아니라 rowgroup 인 것이다.

그럼 남/여 는 당연히 row가 된다.

 

전체 코드는 아래와 같다.

 

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="style.css">
    <title>테이블 실습</title>
</head>
<body>
    <div class="wrap">
        <table class="statistics">
            <caption class="hidden">연령별, 성별, 조회수, 비율에 대한 데이터 통계 표</caption>
            <colgroup>
                <col class="age">
                <col class="gender">
                <col class="lookup">
                <col class="ratio">
            </colgroup>

            <thead>
                <tr>
                    <th scope="col">연령별</th>
                    <th scope="col">성별</th>
                    <th scope="col">조회수</th>
                    <th scope="col">비율</th>
                </tr>
            </thead>

            <tbody>


                <tr>
                    <th rowspan="2" scope="rowgroup">전체</th>
                    <th class="male" scope="row">남</th>
                    <td>0</td>
                    <td>0.0%</td>
                </tr>
                <tr>
                    <th class="female" scope="row">여</th>
                    <td>0</td>
                    <td>0.0%</td>
                </tr>



                <tr>
                    <th rowspan="2" scope="rowgroup">0-12</th>
                    <th class="male" scope="row">남</th>
                    <td>0</td>
                    <td>0.0%</td>
                </tr>
                <tr>
                    <th class="female" scope="row">여</th>
                    <td>0</td>
                    <td>0.0%</td>
                </tr>
            </tbody>
        </table>
    </div>
</body>
</html>

css

@charset "utf-8";

body{
    margin: 0;
    padding: 0;
}
.wrap{
    width: 500px;
    margin: 50px auto;
}
.statistics{
    border-collapse: collapse;
}
.statistics thead tr{
    height: 40px;
    border-bottom: 2px solid rgba(0, 0, 0, 0.4);
}
.statistics thead tr th:nth-child(n+3){
    text-align: right;
}
.statistics tbody tr{
    border-bottom: 1px solid gray;
}
.statistics tbody tr td{
    text-align: center;
    height: 40px;
    padding: 0;
}
.statistics tbody tr td{
    text-align: right;
}
.male, .female{
    background-color:rgba(0, 0, 0, 0.1);
}

.age, .gender{
    width: 90px;
}
.lookup, .ratio{
    width: 160px;
}
.hidden {
    position:absolute !important;  
    width:1px; 
    height:1px; 
    overflow:hidden;
    clip:rect(1px 1px 1px 1px); /* IE6, IE7 */
    clip:rect(1px, 1px, 1px, 1px);
}

 

728x90

'웹 접근성' 카테고리의 다른 글

웹접근성 탭 메뉴 소스  (1) 2020.08.19
IR 기법 예제  (0) 2020.08.18
IR 기법에 대한 설명  (0) 2020.08.18