Computer >> 컴퓨터 >  >> 프로그래밍 >> CSS

CSS 박스 모델(Box Model) 완벽 이해하기 – 구성 요소부터 실전 예제까지

HTML 문서의 모든 요소는 CSS에 의해 하나의 직사각형 박스(box)로 취급됩니다. 이것이 CSS의 기본 레이아웃 방식이며, 필요에 따라 자유롭게 커스터마이징할 수 있습니다. 요소의 위치 지정, 콘텐츠 배치, 그리고 주변 요소와의 간격 조절은 모두 CSS 박스 모델을 기준으로 이루어집니다.

먼저 다음 이미지를 통해 박스 모델의 전체 구조를 살펴보겠습니다.

CSS 박스 모델(Box Model) 완벽 이해하기 – 구성 요소부터 실전 예제까지

출처: w3.org

CSS 박스 모델의 4가지 구성 요소

1. 콘텐츠(Content)

텍스트, 이미지, 동영상 등 실제 데이터가 표시되는 영역입니다. widthheight 속성으로 이 영역의 크기를 조절할 수 있습니다.

2. 패딩(Padding)

콘텐츠 바깥 경계와 테두리 사이의 내부 여백을 의미합니다. padding 속성으로 크기를 조절할 수 있으며, padding-left, padding-bottom처럼 특정 방향만 개별적으로 설정할 수도 있습니다.

3. 테두리(Border)

패딩의 바깥 경계부터 마진의 안쪽 경계까지가 요소의 테두리 영역입니다. 기본 두께는 0이며, border 속성으로 정의합니다. 필요에 따라 각 변을 개별적으로 스타일링하는 것도 가능합니다.

4. 마진(Margin)

요소의 박스와 주변 요소의 박스 사이의 외부 여백을 말합니다. 책 페이지의 여백과 비슷한 개념으로, 색상은 항상 투명합니다. 패딩과 성격이 유사하지만, 패딩이 테두리 내부의 공간을 확보하는 반면 마진은 테두리 바깥쪽 공간을 확보한다는 점이 다릅니다. 역시 각 방향별로 개별 설정이 가능합니다.

박스 모델 기본 예제

다음 예제를 통해 박스 모델이 실제로 어떻게 적용되는지 확인해 보겠습니다.

<!DOCTYPE html>
<html>
<head>
<style>
div {
    margin: 25px;
    padding: 35px;
    width: 200px;
    background-color: lightseagreen;
    border: 20px dashed indianred;
}
</style>
</head>
<body>
<div>
Content demo box<br/>
</div>
</body>
</html>

실행 결과

CSS 박스 모델(Box Model) 완벽 이해하기 – 구성 요소부터 실전 예제까지

위 예제에서는 <div> 요소의 크기를 CSS에서 직접 지정했습니다. 이 요소의 전체 너비는 360px이며, 다음과 같이 계산됩니다.

width + (left+right)padding + (left+right)border + (left+right)margin
= 200 + (35+35) + (20+20) + (25+25)
= 360px

마진과 패딩이 단순히 불필요한 공간을 더하는 것처럼 보일 수 있지만, 실제로는 반응형 웹페이지 제작에 폭넓게 활용됩니다. 박스 모델을 잘 이해하고 활용하면 요소를 훨씬 더 정교하게 배치할 수 있습니다.

박스 모델 활용 예제

다음 예제들은 CSS 박스 모델의 다양한 활용 방법을 보여줍니다.

예제 2 – 원형 박스 만들기

<!DOCTYPE html>
<html>
<head>
<style>
div {
    margin: auto;
    padding: 35px;
    width: 80px;
    box-shadow: inset 0 0 22px indianred;
    border-radius: 50%;
}
div > div {
    padding: 0 0px 100px 0px;
    border-radius: 3%;
    box-shadow: inset 0 0 22px seagreen;
}
</style>
</head>
<body>
<div>
<div></div>
</div>
</body>
</html>

실행 결과

CSS 박스 모델(Box Model) 완벽 이해하기 – 구성 요소부터 실전 예제까지

예제 3 – box-sizing 속성 비교

<!DOCTYPE html>
<html>
<head>
<style>
#demo {
    width: 350px;
    display: flex;
    float: left;
    border: 6px solid black;
    border-radius: 6%;
}
.d1 {
    margin-left: 20px;
    width: 150px;
    height: 80px;
    box-shadow: 0 0 0 4px mediumslateblue;
    box-sizing: border-box;
    border-radius: 36%;
}
.d2 {
    width: 150px;
    height: 80px;
    padding: 30px;
    box-shadow: 0 0 0 4px darkred;
    box-sizing: border-box;
    border-radius: 36%;
}
</style>
</head>
<body>
<div id="demo">
<div class="d1"></div>
<div class="d2"></div>
</div>
</body>
</html>

실행 결과

CSS 박스 모델(Box Model) 완벽 이해하기 – 구성 요소부터 실전 예제까지