웹 페이지를 만들다 보면 요소들을 정렬하거나 배치하는 게 중요해집니다.
이번 글에서는 **박스 모델(Box Model)**이 뭔지, 그리고 정렬의 핵심 Flexbox는 어떻게 사용하는지 쉽게 설명해 드릴게요.
✅ 1. Box Model이란?
모든 HTML 요소는 기본적으로 사각형 박스(Box) 형태로 구성되어 있습니다.
이 박스는 크게 4가지 영역으로 나뉘어요:
┌───────────────────────────────┐
│ margin │
│ ┌─────────────────────────┐ │
│ │ border │ │
│ │ ┌───────────────────┐ │ │
│ │ │ padding │ │ │
│ │ │ ┌─────────────┐ │ │ │
│ │ │ │ content │ │ │ │
│ │ │ └─────────────┘ │ │ │
│ │ └───────────────────┘ │ │
│ └─────────────────────────┘ │
└───────────────────────────────┘
💬 구성 설명:
- content: 실제 내용(텍스트, 이미지 등)
- padding: 내용과 테두리 사이의 공간
- border: 요소의 테두리
- margin: 요소 바깥 여백 (다른 요소와의 거리)
✅ 2. 박스 모델 예제
<style>
.box {
width: 200px;
padding: 20px;
border: 5px solid blue;
margin: 30px;
background-color: lightyellow;
}
</style>
<div class="box">나는 박스 모델입니다!</div>
총 가로 크기 = width + padding * 2 + border * 2
= 200 + 40 + 10 = 250px
🔍 Tip: box-sizing: border-box;을 쓰면 border, padding을 포함한 크기로 계산돼요. (실무에선 필수!)
✅ 3. Flexbox란?
Flexbox는 박스를 가로/세로로 쉽게 정렬할 수 있게 해주는 CSS 레이아웃 시스템입니다.
복잡한 float 없이도, 가로 정렬 / 가운데 정렬 / 간격 조정이 매우 쉬워져요!
✅ 4. Flexbox 기본 문법
.container {
display: flex;
}
Flexbox는 **부모 요소에 display: flex**를 주는 게 시작입니다.
✅ 주요 속성들 (기초)
| 속성 | 설명 |
| justify-content | 주축 방향 정렬 (가로 방향) |
| align-items | 교차축 방향 정렬 (세로 방향) |
| flex-direction | 아이템 정렬 방향 (row, column) |
| gap | 아이템 간 간격 |
✅ Flexbox 예제
<style>
.container {
display: flex;
justify-content: space-between;
align-items: center;
background-color: #eee;
padding: 20px;
}
.item {
background-color: teal;
color: white;
padding: 20px;
border-radius: 5px;
}
</style>
<div class="container">
<div class="item">A</div>
<div class="item">B</div>
<div class="item">C</div>
</div>
justify-content: space-between → A와 C가 양 끝, B는 중간
align-items: center → 세로 방향 가운데 정렬
✅ 언제 Box Model, 언제 Flexbox?
| 상황 | 쓰는 기술 |
| 요소 간 여백 조정 | Box Model (margin, padding) |
| 레이아웃 정렬 | Flexbox |
| 세로 정렬이 필요할 때 | Flexbox |
| 가운데 정렬 | Flexbox가 훨씬 쉬움 |
마무리 🎉
- Box Model은 HTML 요소의 기본 구조
- Flexbox는 그 박스들을 쉽게 정렬하고 배치하는 방법
둘은 함께 쓰이는 경우가 많고, 이걸 이해하면 CSS 레이아웃 절반은 먹고 들어갑니다!
다음에는 Flexbox 심화편이나 Grid 레이아웃, 또는 반응형 웹으로 이어가면 좋아요.
'WEB > CSS' 카테고리의 다른 글
| [CSS 선택자 정리] HTML 요소를 선택하는 방법, 제대로 알아보자 (0) | 2025.03.31 |
|---|---|
| [CSS 기초] HTML에 스타일 입히기 – CSS 완전 초보 탈출 (1) | 2025.03.28 |