본문 바로가기
css/basic

[css] <table> 기본 정리

by by-choice 2021. 1. 20.

table에는 dafault로 border-collapse: separate 값을 가지고 있다. 이는 table의 각 셀들을 분리시켜 셀들 사이에 공백을 발생시킨다. 이는 border를 지정해주면 명확히 확인 가능하다.

Name Mobile Number
Mint 010-000-0000
010-111-1111
table {
   border-collapse: separate;
   border-spacing: 5px;
}
th, td {
   border:1px solid #ccc
}

위의 표를 보면, 각 셀이 떨어져 따로 테두리 선을 그려 마치 이중선처럼 표현이 되는 것을 확인할 수 있다. 셀들 간의 공백은 border-spacing으로 조절 가능한데, 셀들을 붙이기 위해, 0으로 지정하여도, 각 셀에서 테두리선을 그리는 것은 변함이 없기 때문에, 이중선같은 표현을 피할 수 없다.

Name Mobile Number
Mint 010-000-0000
010-111-1111
table {
   border-collapse: collapse;
}
th, td {
   border:1px solid #ccc
}

이중선을 피해 하나의 테두리선을 그리고 싶을 때엔, separate를 collapse로 변경하면 된다. 이는 셀을 합치는 속성으로, 각 셀이 아닌, 합쳐진 셀에서 선이 그려지기 때문에, 이중선이 발생하지 않는다.

2. table-layout (default : auto)

table {
   table-layout : fixed
}

table은 셀의 너비를 별도로 지정하지 않으면, 각 셀 내용에 따라 셀들의 너비들을 자동으로 분배한다. 문제는 너비 대비 셀이 많거나, 너비 대비 셀의 내용이 많을 때, 또는 몇 셀의 너비를 지정하고 싶을 때 발생한다.

예로, 1000px의 너비를 가진 table 안에 10개의 셀이 존재한다고 가정해보자. 각 셀의 내용 때문에 최소 너비가 100px이 되는데, 맨 앞의 두 셀의 최소 너비를 300px로 지정해버리면, table은 너비 1000px의 값을 무시하고 table을 늘려버리거나, 두 셀의 너비 300px 값을 무시하고 두 셀의 너비를 좁혀버린다. table-layout은 이렇게 제멋대로인 table을 정신교육시켜주는 아주 좋은 속성이다.  

3. <caption> blind 처리

스크린 리더기마다 차이가 있어, 단순히 다룰 수 있는 부분이 아니기 때문에, 별도로 글을 작성하였다.

 

[CSS3] 웹접근성을 고려한 .blind(hidden) 처리

스크린리더와 브라우저별, 그리고 매해 업데이트되는 내용들 때문에 여간 웹 접근성을 지키며 블라인드 처리하기가 쉽지 않다. 그래서 '이 방법으로 해결될 수 있습니다~'라는 방법은 아직 없다고 봐야 한다. 이 글에서는 잘못 쓰이고 있는 blind 처리 방법들과, 해외의 훌륭하신 분들이 다수의 리딩 테스트를 거쳐 공개한 코드들을 소개하려고 한다.

fresh-mint.tistory.com

4. vertical-align 

Name Mobile Number
Mint 010-000-0000
010-111-1111
th, td {
   vertical-align: top;
}

각 셀의 내용 높이가 다를 때, vertical-align 속성으로 세로정렬을 지정할 수 있다. vertical-align의 모든 속성을 사용할 수 있는 건 아니고, top, middle, bottom 중에서 선택 가능하다.

5. :nth-child(odd) / :nth-child(even)

Mint 010-000-0000
coding 010-111-1111
Mint 010-000-0000
coding 010-111-1111
table tr:nth-child(odd) { 
   background-color: #eee;
}

짝수행(even) 혹은 홀수행(odd)에 배경 컬러를 주고 싶을 땐, 따로 속성은 없고 위와 같이 홀짝 선택자를 이용해 값을 지정하면 된다.

6 caption-side (default : top)

Name and Mobile Number
Name Mobile Number
Mint 010-000-0000
010-111-1111
caption {
  caption-side: bottom;
}

<caption> 태그가 그려지는 위치를 지정하는 속성으로, 값은 top, bottom, inherit, initial 이 있다.

반응형

댓글