box-sizing
속성의 이해
box-sizing
속성은
블록 컨테이너 요소의 너비와 높이를 계산할 때, 콘텐츠 영역인 content-box
만 고려할지, 콘텐츠 영역과 패딩 ,그리고 테두리(border)를 모두 고려할지, 즉 border-box
를 기준으로 할지를 지정합니다.
이 속성은 요소 박스(box)의 크기를 계산(sizing)할 때 크기의 기준을 설정합니다.
블록 컨테이너 요소란 너비나 높이를 지정할 수 있는 요소를 말합니다.
형식 구문
형식 정의
초깃값 | content-box
단, <button> 요소의 초깃값은 border-box |
---|---|
적용 요소 | width 나 height 를 허용하는 모든 요소 |
상속 | 아니오 |
참고하세요!
box-sizing
의 초깃값은 content-box
입니다.
단, <button>
요소의 초깃값은 border-box
입니다.
주의하세요!
box-sizing
의 값에 padding-box
는 없습니다.
값
box-sizing
은 content-box
와 border-box
중에서 요소의 사이즈를 어느 것으로 기준으로 할지를 지정합니다.
content-box
width
나 height
를 허용하는 모든 요소 중에서 <button>
요소를 제외하면 이 값이 초깃값입니다.
이 값은 요소의 width
와 height
를 콘텐츠 영역만 고려하여 계산합니다. padding
과 border
는 크기에 포함되지 않습니다. 즉, padding
과 border
는 요소의 크기 밖에 추가됩니다.
width
= 콘텐츠 너비height
= 콘텐츠 높이
만약 요소에 padding
이나 border
가 있다면, 실제 요소의 크기보다 더 크게 보입니다.
border-box
<button>
요소는 이 값이 초깃값입니다.
이 값은 요소의 width
와 height
를 콘텐츠 영역, padding
과 border
를 모두 포함하여 계산합니다.
width
= 콘텐츠 너비 +padding-left
+padding-right
+border-left-width
+border-right-width
height
= 콘텐츠 높이 +padding-top
+padding-bottom
+border-top-width
+border-bottom-width
만약 요소에 padding
이나 border
가 있다고 하더라도, 실제 요소의 크기와 동일합니다.
예제
위 예제를 보면 알 수 있듯이, div-1은 box-sizing: content-box;
로 지정되어 있어서 padding
과 border
는 크기에 포함되지 않기 때문에 실제 width
와 height
보다 더 크게 보입니다.
하지만, div-2는 box-sizing: border-box;
로 지정되어 있어서 padding
과 border
를 모두 요소 크기에 포함하기 때문에 실제 width
와 height
와 동일한 크기로 보입니다.
이처럼, box-sizing: content-box;
보다는 box-sizing: border-box;
가 요소의 크기를 지정하는데 직관적입니다. 모든 요소에 box-sizing: border-box;
로 적용하려면 다음과 같이 적용하면 됩니다.
브라우저 호환성
속성 |
데스크탑 Chrome
|
데스크탑데스크탑 Edge
|
데스크탑 Firefox
|
Safari
|
---|---|---|---|---|
box-sizing
|
10 | 12 | 29 | 5.1 |
명세서
명세서 사양 | |
---|---|
box-sizing
|
CSS Box Sizing Module Level 3 #box-sizing |