티스토리 뷰

반응형

CSS 속성 강좌 3번째 포스팅입니다. 오늘 포스팅 할 내용은 box-sizing 속성인데요. 해당 속성은 특정 엘리먼트의 크기를 어떻게 결정 할 것인지를 선택 할 수 있도록 해주는 속성입니다. 



div 태그로 정의 된 박스형태의 레이어가 있고 CSS 속성부여로 박스 영역의 width와 height 크기를 각각 200px로 지정하였다고 가정 해보겠습니다. 이 때 box 영역 사이즈에 영향을 끼칠 수 있는 border 값과 padding 값도 지정을 하였다면 border값과 padding 값도 전체 영역 크기에 포함이 되면서 의도했든 의도하지 않았든 200px 보다 더 큰 width와 height 크기를 가지는 영역이 설정이 됩니다. 


box-sizing 속성은 padding이나 border 값을 전체 영역크기에 포함 시킬지 말지를 선택 할 수 있게 해줍니다. 따로 지정하지 않으면 크기를 포함시킵니다.


   1. content-box 와 border-box 속성 값


box-sizing의 대표적인 속성값으로 content-box와 border-box가 있습니다. 

  • content-box : 고정 크기 이외의 다른 요소들에 의해 전체 영역 크기 변경
  • border-box : 고정 크기 이외의 다른 요소들에 의해 전체 영역 크기 변경이 안됨

box-sizing 속성이 default 값은 content-box로 고정 크기 이외의 다른 요소들에 의해 전체 영역의 크기에 영향을 받습니다. border-box로 지정을 하게 되면 고정 크기 이외의 다른 요소들에 의해 고정 된 전체 영역의 크기에는 영향을 주지 않습니다. 즉, width와 padding을 200px로 지정을 하고 border 값을 지정을 한다고 해도 전체 크기는 200px로 변화가 없습니다. 아래 샘플 예제로 살펴 보겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>boxsizing 속성</title>
    <style>
        div {
            background-color : red;
            margin-top : 5px;
            width : 200px;
            height : 200px;
            text-align : center;
            line-height: 200px;
            border : 10px solid black;
        }
        .contentbox {
            box-sizing : content-box;
        }
        .borderbox {
            box-sizing : border-box;
        }
 
    </style>
</head>
<body>
    <div class = "contentbox"> contentbox 영역</div>
    <div class = "borderbox">borderbox 영역</div>
</body>
</html>
cs


▼ <div> 태그를 통해 두 개의 영역을 정의 하였습니다. 두 영역다 공통적으로 width와 height 그리고 border 값을 지정을 해주고 box-sizing 속성값만 다르게 하였습니다. 아래 웹 페이지에서 나오는 형태를 보겠습니다.


▼ 분명히 두 개의 영역에 같은 size를 적용했음에도 불구하고 size가 다른 것을 확인 할 수 있습니다. contentbox 영역의 경우는 border 크기가 합쳐져 전체적인 영역의 크기가 더 커지는 것을 확인 할 수 있습니다. box-sizing 속성값에 따라 border가 적용 된 형태를 알면 더 이해가 쉬운데 contentbox 영역은 고정 사이즈 box 영역 바깥으로 border가 생긴 것이고 borderbox 영역의 경우는 고정 사이즈 box 영역의 안쪽으로 border가 적용이 되면서 기존의 200px를 유지하고 있는 형태입니다.

반응형