CSS에서 모든 요소는 박스 형태로 구성되며, 이 박스 모델(Box Model)은 요소가 화면에서 차지하는 공간을 결정하는 기본 개념이다. 박스 모델은 아래와 같은 4가지 주요 영역으로 이루어져 있다.
width
, height
속성으로 크기를 조정할 수 있다.padding
속성으로 조정하며, 요소의 배경색이 패딩 영역까지 적용된다.div {
padding: 20px; /* 모든 방향에 20px 패딩 */
}
border
속성으로 크기, 스타일, 색상을 설정할 수 있다.div {
border: 2px solid black; /* 2px 두께, 실선, 검은색 테두리 */
}
margin
속성으로 설정한다.div {
margin: 10px; /* 모든 방향에 10px 마진 */
}
박스 모델에서 요소의 전체 크기(총 너비와 높이)는 다음과 같이 계산된다.
Total Width = width + padding-left + padding-right + border-left + border-right + margin-left + margin-right
Total Height = height + padding-top + padding-bottom + border-top + border-bottom + margin-top + margin-bottom
기본적으로 width
와 height
는 content 영역의 크기를 의미하지만, box-sizing
속성을 이용하면 계산 방식을 변경할 수 있다.
width
와 height
가 content 영역만을 포함하며, padding과 border는 추가됨.div {
width: 200px;
height: 100px;
padding: 20px;
border: 5px solid black;
}
200 + 20 + 20 + 5 + 5 = 250px
width
와 height
가 padding과 border까지 포함한 크기로 계산됨.div {
width: 200px;
height: 100px;
padding: 20px;
border: 5px solid black;
box-sizing: border-box;
}
200px
그대로 유지됨 (padding과 border가 내부에서 조절됨)
실무에서는
box-sizing: border-box
를 주로 사용하여 크기 계산을 더 직관적으로 만든다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS Box Model</title>
<style>
* {
box-sizing: border-box;
}
.box {
width: 300px;
height: 150px;
padding: 20px;
border: 5px solid black;
margin: 10px;
background-color: lightblue;
}
</style>
</head>
<body>
<div class="box">This is a box</div>
</body>
</html>
box-sizing: border-box;
을 사용하면 더 직관적으로 크기를 조절할 수 있음.