CSS의 본질은 박스를 다루는 기술이다.
텍스트, 이미지, 버튼, 섹션 — 전부 하나의 ‘박스’로 구성되어 있다.
이번 글에서는 박스 모델(Box Model) 의 개념부터
margin, padding, border의 관계, 그리고 실무에서의 레이아웃 활용법까지
한눈에 이해할 수 있도록 정리했다.
💡 1. 박스 모델(Box Model)이란?
“모든 HTML 요소는 눈에 보이지 않아도 하나의 상자(Box)다.”
브라우저는 HTML 요소를 박스 형태의 레이어로 렌더링한다.
이 박스는 네 부분으로 구성된다 👇
┌─────────────────────────────┐ ← margin (바깥 여백)
│ ┌─────────────────────────┐ │
│ │ border (테두리) │ │
│ │ ┌─────────────────────┐ │ │
│ │ │ padding (내부 여백)│ │ │
│ │ │ ┌─────────────────┐ │ │ │
│ │ │ │ content (내용) │ │ │ │
│ │ │ └─────────────────┘ │ │ │
│ │ └─────────────────────┘ │ │
│ └─────────────────────────┘ │
└─────────────────────────────┘
구성 요소 설명 예시 속성
| content | 실제 콘텐츠 (텍스트, 이미지 등) | width, height |
| padding | 콘텐츠와 테두리 사이 여백 | padding: 10px; |
| border | 요소의 테두리 영역 | border: 1px solid black; |
| margin | 요소와 이웃 요소 사이의 여백 | margin: 20px; |
🧩 2. 실제 코드로 보는 박스 구조
<div class="box">박스 모델 예제</div>
.box {
width: 200px;
height: 100px;
padding: 20px;
border: 5px solid royalblue;
margin: 30px;
background-color: skyblue;
}
✅ 총 박스 크기 계산:
width(200) + padding(20*2) + border(5*2) = 250px
💡 즉, CSS의 width는 content만의 크기를 의미한다.
⚙️ 3. box-sizing 속성 — 실무의 핵심
“box-sizing은 박스 크기를 계산하는 방식을 결정한다.”
값 설명
| content-box (기본값) | width에 padding, border 미포함 |
| border-box | width에 padding, border 포함 |
/* 기본값 (content-box) */
.box1 {
width: 200px;
padding: 20px;
border: 5px solid;
}
/* border-box 적용 */
.box2 {
box-sizing: border-box;
width: 200px;
padding: 20px;
border: 5px solid;
}
💬 border-box는 실무 표준이다.
레이아웃이 깨지지 않고, 총 박스 크기를 계산하기 쉬워진다.
👉 대부분의 개발자는 아래처럼 기본 설정을 추가한다.
* {
box-sizing: border-box;
}
🧱 4. margin (바깥 여백)
요소와 요소 사이의 간격을 조절한다.
.box {
margin: 20px;
}
속성 의미
| margin-top | 위쪽 여백 |
| margin-right | 오른쪽 여백 |
| margin-bottom | 아래 여백 |
| margin-left | 왼쪽 여백 |
💡 단축 속성:
margin: 10px 20px 30px 40px;
/* 위 → 오른쪽 → 아래 → 왼쪽 순서 */
📌 margin 겹침(Margin Collapse) 현상
인접한 두 블록 요소의 margin이 겹칠 경우,
둘 중 더 큰 값만 적용된다.
h1 { margin-bottom: 30px; }
p { margin-top: 20px; }
/* 실제 간격은 50px이 아니라 30px */
💬 해결법:
1️⃣ 부모에 padding 또는 border 추가
2️⃣ overflow: hidden; 적용
🧩 5. padding (내부 여백)
요소의 내용(content) 과 테두리(border) 사이의 공간을 만든다.
.box {
padding: 20px;
}
속성 의미
| padding-top | 위 여백 |
| padding-right | 오른쪽 여백 |
| padding-bottom | 아래 여백 |
| padding-left | 왼쪽 여백 |
💡 padding은 배경색(background-color)이 적용되는 영역까지 포함된다.
🧱 6. border (테두리)
요소의 경계를 표시하며, 세 가지 속성을 함께 쓴다.
.box {
border: 3px solid crimson;
}
속성 설명 예시
| border-width | 두께 | 2px |
| border-style | 스타일 | solid, dashed, dotted |
| border-color | 색상 | #000, red |
🎨 border 개별 설정
border-top: 2px solid red;
border-right: none;
border-bottom: 2px dashed gray;
✅ 테두리를 부분적으로 다르게 적용 가능.
🧮 7. width / height 이해하기
속성 설명
| width | 콘텐츠 영역의 가로 길이 |
| height | 콘텐츠 영역의 세로 길이 |
| max-width / max-height | 최대 크기 제한 |
| min-width / min-height | 최소 크기 제한 |
💡 반응형에서는 width: 100%; 대신
max-width: 1200px; margin: 0 auto; 패턴을 자주 사용한다.
🧠 8. display 속성으로 박스 성격 정의
“모든 HTML 요소는 display에 따라 다르게 배치된다.”
값 설명
| block | 줄바꿈 발생, width 100% |
| inline | 줄바꿈 없음, width 지정 불가 |
| inline-block | 줄바꿈 없음 + 크기 지정 가능 |
| none | 화면에서 숨김 |
💬 display는 박스의 배치 성격을 결정하는 핵심 속성이다.
📐 9. margin, padding, border 실전 예제
<div class="card">
<h3>HTML & CSS 강의</h3>
<p>박스 모델을 이해하면 레이아웃이 쉬워집니다.</p>
</div>
.card {
background: white;
border: 1px solid #ddd;
padding: 20px;
margin: 30px auto;
width: 300px;
border-radius: 10px;
box-shadow: 0 4px 10px rgba(0,0,0,0.1);
}
💡 실무에서 카드형 UI는 전부 박스 모델 기반 디자인이다.
⚡ 10. 실무 팁 요약
상황 추천 설정
| 전체 페이지 기본값 통일 | * { box-sizing: border-box; } |
| 카드형, 섹션 여백 조정 | margin 대신 padding으로 내부 공간 확보 |
| 반응형 폭 제한 | max-width + margin: 0 auto |
| 요소 간 정렬 | display: inline-block or Flexbox 사용 |
🏁 11. 마무리 — “박스를 이해하면 CSS가 단순해진다”
HTML 요소는 모두 상자다.
이 단순한 사실을 이해하면
복잡한 CSS 레이아웃도 결국 margin, padding, border의 조합으로 풀린다.
💬 “CSS의 시작과 끝은 박스 모델이다.”
다음 편에서는
✅ 4. Flexbox 완전 이해하기 — 가로·세로 정렬 스트레스 탈출
을 통해 레이아웃의 핵심인 유연한 정렬 시스템을 배워보자.
'frontend > css' 카테고리의 다른 글
| 6. 📱 반응형 웹 디자인 완벽 가이드 — 미디어쿼리부터 실전 예제까지 (0) | 2025.11.05 |
|---|---|
| 5. 🧱 CSS Grid로 레이아웃 설계하기 — 2차원 배치의 끝판왕 (0) | 2025.11.05 |
| 4. 🧭 Flexbox 완전 이해하기 — 가로·세로 정렬 스트레스 탈출 (0) | 2025.11.05 |
| 2. 🧩 CSS 선택자(Selector) 정복 — 태그부터 가상 클래스까지 완벽 가이드 (0) | 2025.11.05 |
| 1. 🎨 CSS 기초 문법과 스타일 적용 방식 완벽 이해하기 (0) | 2025.11.05 |