가끔 유튜브를 통해 css 초기 설정을 border-box 하라는 내용을 보았을 것이다.
도대체 왜 border-box를 선호하는지 의문이 들었을텐데,
이번 시간 box-sizing의 contents-box
와 border-box
에 대해 알아보자!
우리가 HTML을 다루면서 구성하는 box들의 구성요소에는 margin
, border
, padding
, content
로 이루어진다.
contents-box
의 경우 width를 Box Model 기준 content 영역만의 width로 설정하는 뜻이며,
border-box
는 width를 Box Model 기준 padding과 border의 영역까지 포함하여 설정하는 의미이다.
<style>
* {
box-sizing: content-box
}
.content-box {
width: 200px;
height: 100px;
padding: 20px;
border: 4px solid red;
}
.content-box .child{
width: 200px;
background-color: blue;
color:white
}
</style>
<div class="content-box">
<div class="child">200px child</div>
</div>
CSS box-sizing 초기값은
content-box
로 구성되어 있다.
자식 태그인 200px child
div 태그가 부모 태그의 콘텐츠 영역에 의존하여 가둔 모습을 볼 수가 있다.
또한 자식 태그인 200px child
를 가두기 위하여 빨간선의 width 길이가 248로 증가되었다.
(padding과 border 속성값 합은 총 (20px 2) + (4px 2) = 48)
자식 태그인 200px child
div 태그가 부모 태그 영향을 받아 padding: 20px
추가되어 부모 태그를 벗어난 모습을 볼 수가 있다.
width 길이가 그대로 200으로 설정되어 방금 전 content-box
는 자식 태그를 가두기 위해
width가 증가된 모습과 상반되어 있다.
앞서 위에 설명하듯 CSS box-sizing 초기설정이 content-box
되어 있으므로
간혹 width가 제멋대로 증가된 모습을 볼 수가 있는데,
당황하지 말고 이는 content-box
의 설정 효과임을 인지하고 있어야 한다.