header
, section
, footer
태그와 같이 표 내에서 머릿말, 본문, 꼬릿말 영역을 나눠주는 태그이다.
html5가 나오기 전에는 table
을 이용해 웹 사이트를 만들었다고 한다.
tbody
를 생략한 채 표를 작성해보았다.
번호 | 갖고 싶은 거 | 가격 | 사야 할 거 | 가격 |
---|---|---|---|---|
1 | 노트북 | 1,500,000원 | 청경채 | 1,000원 |
2 | 데탑 | 2,000,000원 | 가방 | 200,000원 |
3 | 장보기용 카트 | 8,000원 | 참치캔 | 650원 |
4 | 청소기 | 300,000원 | 집게 | 1,000원 |
요소검사를 해보면 태그를 생략했음에도 웹 브라우저에선 tbody
가 제대로 찍혀나온다.
브라우저가 자동 수정을 해준다는 건 그만큼 컨텐츠에 맞춰 머리말과 본문을 태그로 나누는 작업이 중요하다는 의미인 것 같다. (특히 시맨틱 태그의 등장을 생각하면.)
scop
을 이용해 스크린 리더기가 읽는 방향을 지정할 수 있다.
내가 살았던 곳 | ||
---|---|---|
번호 | 나이 | 동 |
1 | 1~15살 | 상계동 |
2 | 16살 | 별내동 |
3 | 17~20살 | 중계동 |
4 | 21~22살 | 상계동 |
5 | 23살 | 중계동 |
1 2 3 4 5 6 7 8 9 10 | <thead> <tr> <th colspan="3">내가 살았던 곳</th> </tr> <tr> <th scope="col">번호</th> <th scope="col">나이</th> <th scope="col">동</th> </tr> </thead> | cs |
원래대로라면 가로 방향으로 한 줄씩 읽히겠지만
각 th
(번호, 나이, 동)에 scope="col"
을 적용해 세로 방향으로 한 줄씩 읽히게 바꿨다.
예시로 든 표는 간단한 편이지만 이보다 더 복잡한 표라면 어떨까?
내가 원하는 건 제목과 셀을 지그재그로 읽게 하는 거였는데 scope
으로 하려니 너무 헷갈리고...
티스토리를 뒤져봐도 scope
을 사용하는 건 정말 간단한 표 예시밖에 없었다.
하지만 headers
와 id를 이용한 방법을 찾았습니다. ◠‿◠
headers
란 말 그대로 th
의 id를 읽어주는 속성이다.
th
마다 id를 부여하고 td
안에 headers
속성을 삽입한 후 해당 셀과 관련있는 id를 순서대로 호출하는 방식이다.
아까보다 더 복잡한 표를 만들어봤다.
구분 | 전화번호 | |
---|---|---|
민원 행정과 | 행정지원팀 | 0120-8854-3544 |
행정민원팀 | 0710-8854-3544 | |
복지과 | 맞춤형 복지팀 | 01630-8854-3544 |
복지조사관리팀 | 07810-8854-3544 | |
복지민원팀 | 0410-8854-3544 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <tbody> <tr> <th rowspan="2" id="civll">민원 행정과</th> <th headers="depart-type civll" id="civll-1">행정지원팀</th> <td headers="depart-type civll civll-1 tel">0120-8854-3544</td> </tr> <tr> <th headers="depart-type civll" id="civll-2">행정민원팀</th> <td headers="depart-type civll civll-2 tel">0710-8854-3544</td> </tr> <tr> <th rowspan="3" id="well">복지과</th> <th headers="depart-type well" id="well-1">맞춤형 복지팀</th> <td headers="depart-type well well-1 tel">01630-8854-3544</td> </tr> <tr> <th headers="depart-type well" id="well-2">복지조사관리팀</th> <td headers="depart-type well well-2 tel">07810-8854-3544</td> </tr> <tr> <th headers="depart-type well" id="well-3">복지민원팀</th> <td headers="depart-type well well-3 tel">0410-8854-3544</td> </tr> </tbody> | cs |
headers
속성을 지정하게 되면 해당 셀 내용을 읽기 전에 headers
에 담겨있는 id에 해당하는 셀 내용을 먼저 읽는다.
따라서 '행정지원팀'은 구분 > 민원행정과 > 행정지원팀 순으로 읽히고,
그 옆에 있는 '0120-8854-3544'는 구분 > 민원행정과 > 행정지원팀 > 전화번호 > 0120-8854-3544 순으로 읽힌다.
scope
보다 명확한 표기가 가능하지만 아이디가 계속 늘어남에 따라 태그가 복잡해지는 건 단점인 것 같다.
scope
은 th
전용 속성이므로 td
에 사용하지 않게 조심해야 한다.
headers
속성은 th
와 td
둘 다 사용이 가능하다.
table
바로 다음에 오는 태그로, 표 상단에 제목을 표시할 수 있다.
음식 이름 | 호불호 여부 | 비고 |
---|---|---|
민트초코 | 호 | - |
오이 | 불호 | 냉면 제외 |
콩국수 | 호 | - |
행을 묶어서 간단한 스타일을 적용할 수 있는 태그. col
이라는 자식요소를 사용한다.
col
안에 span
속성으로 적용할 열 개수를 지정한 후 인라인 스타일을 적용하면 된다.
그래픽스운용기능사 | |
---|---|
프로그램 | 포토샵 |
일러스트레이터 | |
인디자인 |
1 2 3 4 | <colgroup> <col span="1" style="background-color: #EBD0E6;"> <col span="1" style="background-color: #F5E2F2;"> </colgroup> | cs |
하지만 html5로 들어오면서 span
을 제외한 대부분의 속성들을 사용할 수 없게 됐다는 글을 보게 됐다. 아래 링크 참고.
그럼 colgroup
의 존재 의의가 뭘까 하다가 MDN Web Docs에서 답을 찾았다.
col
에도 다른 태그들처럼 class 속성을 지정할 수 있는데, col
을 이용해 css를 적용하면 td
, th
요소들에 일일이 class를 넣지 않아도 스타일이 한꺼번에 적용되었다.
그래픽스운용기능사 | |
---|---|
프로그램 | 포토샵 |
일러스트레이터 | |
인디자인 |
1 2 3 4 | <colgroup> <col span="1" class="pink"> <col span="1" class="light-pink"> </colgroup> | cs |
결과값은 위와 같지만 요소검사를 해보면 인라인 스타일이 아닌 class를 썼다는 걸 알 수 있다.
이 방법이 좀 더 html5의 취지와 적합하다는 생각이 들었다.
col : span
속성 안의 숫자는 셀 순서가 아닌 개수이므로 이점에 유의해야한다.
차종 | 24시간 | 48시간 | 72시간 | 추가요금 |
---|---|---|---|---|
SM3 | 45,000 | 90,000 | 135,000 | 6,000 |
모닝 | 42,000 | 84,000 | 126,000 | 6,000 |
쏘울 | 61,000 | 122,000 | 183,000 | 9,000 |
윈스톰 | 94,000 | 188,000 | 282,000 | 13,000 |