[html/css] 테이블 꾸미기 (모서리 둥글게)

2024. 4. 3. 12:34공부/프론트

728x90
반응형

이번 포스팅에서는 테이블에 대해 알아보고 테이블을 꾸며보려고 한다.

 

우선 간단한 테이블을 만들어보자.

    <table>
        <thead>
          <tr>
            <th>학번</th>
            <th>이름</th>
            <th>나이</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>111</td>
            <td>김철수</td>
            <td>22</td>
          </tr>
          <tr>
            <td>222</td>
            <td>김영희</td>
            <td>23</td>
          </tr>
        </tbody>
      </table>

 

평범한 테이블이 만들어졌다.

 

테이블을 사용할 때 주의할 점은 테이블은 기본적으로 셀 마다 거리가 존재한다.

 

table, th, td 태그에 border: 1px solid black;를 입혀보자.

    table{
        border: 1px solid black;
    } 
    td{
        border: 1px solid black;
    }
    th{
        border: 1px solid black;
    }

만약 이 셀 간 간격을 없애고 싶다면 border-collapse를 collapse로 주면 된다.

    table{
        border: 1px solid black;
        border-collapse: collapse;
    }

깔끔하게 셀 사이 간격이 없어졌다.

 

그런데 border-collapse 값을 collapse로 설정하면 border-radius를 적용할 수 없다는 단점이 있다.

 

만약 셀 사이의 간격을 없애고 테이블 테두리도 둥글게 하고 싶다면 두 방법 중 하나를 선택하면 된다.

 

1. border-spacing 사용 

border-collapse는 separate로 두고 border-spacing을 0px로 두면 된다.

 

참고로 border-collapse는 default 값이 separate이다.

 

    table{
        border: 1px solid black;
        border-spacing: 0px;
        border-radius: 12px;

    }

 

border-radius가 적용이 되었다.

 

둥근 테두리로 네모난 border가 빠져나와있는 것을 확인할 수 있다.

 

이 border는 table의 border가 아닌 그 안의 th, td의 border이다.

 

이를 보고싶지 않다면 테이블에 overflow: hidden을 적용해보자.

 

모서리가 숨겨졌으나 모서리 부분만 선의 두께가 다르다.

 

두껍게 보이는 부분은 table의 border와 td, th의 border와 겹쳐서 두껌게 

 

미관상 좋지 않다.

 

2. table 바깥의 div 태그에 border-radius 적용

테이블의 border-collapse는 collapse로 설정을 해두고 border-radius를 적용하기 위해 table 바깥에 div 태그를 생성한다.

 

<html 코드>

    <div>
        <table>
            <thead>
            <tr>
                <th>학번</th>
                <th>이름</th>
                <th>나이</th>
            </tr>
            </thead>
            <tbody>
            <tr>
                <td>111</td>
                <td>김철수</td>
                <td>22</td>
            </tr>
            <tr>
                <td>222</td>
                <td>김영희</td></td>
                <td>23</td>
            </tr>

            </tbody>
        </table>
    </div>

 

그리고 이 div 태그에 radius와 overflow를 적용하면 된다.

 

<css 코드>

        div{
            display: inline-block; /* 내부 테이블 크기에 맞춤 */
            border: 1px solid black; /* border 표시 */
            border-radius: 12px; /* radius 적용 */
            overflow: hidden; /* 넘치는 건 감춤 */
        }
        table{
            border-collapse: collapse;
            border-style: hidden; /* 두께 맞추기 위해 border-style 숨김 */
        }
        th{
            border: 1px solid black;
        }
        td{
            border: 1px solid black;
        }

 

테이블의 border-style은 hidden으로 설정해야 div 태그의 border만 보이기 때문에 두께가 일정해진다.

 

 

728x90
반응형