7강

박스 모델

4 조회 2

이번 강에서 배울 것

  • 박스 모델의 4개 구성요소 — content, padding, border, margin
  • box-sizing: border-box의 중요성
  • margin 겹침(collapsing) 현상 이해
  • width, height, max-width, min-height 올바른 사용
  • overflow 처리 방법

1. 박스 모델이란

HTML의 모든 요소는 사각형 박스로 이루어져 있습니다. CSS는 이 박스의 4개 구성 레이어를 각각 제어합니다.

┌─────────────────── margin (바깥 여백) ───────────────────┐
│  ┌─────────────── border (테두리) ───────────────────┐   │
│  │  ┌─────────── padding (안쪽 여백) ─────────────┐  │   │
│  │  │                                              │  │   │
│  │  │           content (실제 내용)                │  │   │
│  │  │           width × height                    │  │   │
│  │  │                                              │  │   │
│  │  └──────────────────────────────────────────────┘  │   │
│  └────────────────────────────────────────────────────┘   │
└────────────────────────────────────────────────────────────┘
레이어 역할 CSS 속성
content글자·이미지 등 실제 내용이 들어가는 영역width, height
paddingcontent와 border 사이의 내부 여백padding, padding-top 등
border요소의 테두리border, border-radius
margin요소 밖의 바깥 여백 — 다른 요소와의 간격margin, margin-auto

2. padding과 margin 단축 표기법

/* 4방향 개별 지정 */
padding-top: 10px;
padding-right: 20px;
padding-bottom: 10px;
padding-left: 20px;

/* 단축 표기 — 시계방향 (top right bottom left) */
padding: 10px 20px 10px 20px;

/* 위아래 / 좌우 */
padding: 10px 20px;

/* 4방향 동일 */
padding: 16px;

/* margin도 동일 규칙 */
margin: 0 auto;  ← 위아래 0, 좌우 자동(가운데 정렬)

/* 개별 방향만 */
margin-top: 24px;
margin-bottom: 8px;

3. box-sizing: border-box — 가장 중요한 CSS 설정

기본값 content-box에서는 width가 content 영역만의 크기입니다. padding과 border를 더하면 실제 크기가 늘어납니다.

/* content-box (기본값 — 혼란 유발) */
.box {
  width: 200px;
  padding: 20px;
  border: 2px solid black;
  /* 실제 화면에 차지하는 너비: 200 + 20*2 + 2*2 = 244px */
}

/* border-box (권장 — 직관적) */
.box {
  box-sizing: border-box;
  width: 200px;
  padding: 20px;
  border: 2px solid black;
  /* 실제 화면에 차지하는 너비: 정확히 200px */
}

/* 모든 요소에 border-box 적용 (프로젝트 최상단에 추가) */
*, *::before, *::after {
  box-sizing: border-box;
}

모든 프로젝트 CSS 파일 첫 줄에 *, *::before, *::after { box-sizing: border-box; }를 추가하는 것이 현대 웹 개발의 표준입니다.

4. border 스타일링

/* 단축 표기: 두께 스타일 색상 */
border: 1px solid #e5e7eb;
border: 2px dashed red;
border: 3px dotted blue;

/* 개별 방향 */
border-bottom: 2px solid #6366f1;  /* 하단만 */
border-top: none;                   /* 상단 없음 */

/* 둥근 모서리 */
border-radius: 8px;          /* 전체 동일 */
border-radius: 50%;          /* 원형 (정사각형에 적용 시) */
border-radius: 12px 0 12px 0; /* 대각선 패턴 */
border-top-left-radius: 20px; /* 개별 모서리 */

/* 그림자 */
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
/* 수평오프셋 수직오프셋 블러반경 확산반경 색상 */
box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.15);
box-shadow: inset 0 2px 4px rgba(0,0,0,0.1); /* 내부 그림자 */

5. margin 겹침(Collapsing) 현상

블록 요소의 위아래 margin은 더해지지 않고 큰 값 하나만 적용되는 겹침 현상이 발생합니다.

/* 기대: p들 사이 20+16=36px 간격 */
/* 실제: max(20, 16) = 20px 간격 (겹침 발생!) */
p { margin-bottom: 20px; }
h2 { margin-top: 16px; }

/* 해결 방법: margin을 한 방향만 사용 */
p { margin-bottom: 20px; }
/* h2에는 margin-top 사용하지 않음 */

/* 또는 padding으로 대체 */
.section { padding-top: 32px; }

6. width, height, max-width, overflow

/* 중앙 정렬 컨테이너 패턴 */
.container {
  max-width: 1200px;   /* 최대 너비 제한 */
  margin: 0 auto;      /* 좌우 자동 여백 = 가운데 정렬 */
  padding: 0 20px;     /* 좌우 안쪽 여백 (모바일 여백) */
}

/* 이미지 반응형 */
img {
  max-width: 100%;     /* 부모 너비 초과 금지 */
  height: auto;        /* 비율 유지 */
}

/* 넘치는 내용 처리 */
.card {
  overflow: hidden;    /* 넘친 내용 숨김 */
  overflow: scroll;    /* 스크롤바 항상 표시 */
  overflow: auto;      /* 넘칠 때만 스크롤바 (권장) */
  overflow-x: hidden;  /* 가로만 숨김 */
}

/* 텍스트 줄임표 (...) */
.title {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

7강 핵심 요약

  • 박스 = content + padding + border + margin (안에서 바깥 순)
  • *, *::before, *::after { box-sizing: border-box } 항상 추가
  • margin: 0 auto 는 블록 요소 가운데 정렬의 핵심
  • 위아래 margin은 겹침 발생 — 한 방향만 사용 권장
  • max-width + margin: 0 auto 로 중앙 컨테이너 패턴 구현
  • 다음 강: 색상·타이포그래피 — font, color, line-height 완전 정복

관련 검색어  ·  CSS박스모델, box-sizing borderbox, margin padding차이, border-radius, box-shadow, margin겹침, CSS중앙정렬

Advertisement

댓글 0

채용정보
공지사항
인사이트
MY