Frontend/CSS
박스 모델(Box Model)의 비밀: Margin과 Padding의 차이점
미니임
2026. 2. 10. 00:54

웹 페이지의 모든 요소는 사각형의 '박스' 형태를 띠고 있습니다. 이 박스를 어떻게 제어하느냐에 따라 레이아웃의 완성도가 결정됩니다. CSS 박스 모델의 핵심 구성 요소인 **Margin(마진)**과 **Padding(패딩)**을 완벽히 파헤쳐 보겠습니다.
1. 박스 모델의 4가지 구성 요소
CSS 박스 모델은 안쪽에서부터 바깥쪽으로 다음과 같은 계층 구조를 가집니다.
- 콘텐츠(Content): 텍스트나 이미지가 표시되는 실제 영역.
- 패딩(Padding): 콘텐츠와 테두리(Border) 사이의 내부 여백.
- 테두리(Border): 패딩과 마진 사이의 경계선.
- 마진(Margin): 테두리 바깥의 외부 여백. 다른 요소와의 간격을 결정합니다.
2. Padding(내부 여백)의 특징과 예제
패딩은 요소의 '안쪽' 공간을 확보합니다.
특징
- 요소 내부에 배경색이나 배경 이미지를 적용하면 패딩 영역까지 포함되어 나타납니다.
- 클릭 가능한 영역(예: 버튼)을 넓히고 싶을 때 주로 사용합니다.
- 패딩값이 커지면 요소의 전체 크기도 커집니다. (box-sizing 설정에 따라 다름)
[예제] 버튼의 가독성 높이기
패딩이 없는 버튼과 패딩이 적절히 들어간 버튼을 비교해 보세요.
/* 패딩이 없는 버튼: 답답해 보입니다 */
.button-no-padding {
background-color: #3498db;
color: white;
border: none;
padding: 0;
}
/* 패딩이 있는 버튼: 시원하고 클릭하기 편합니다 */
.button-with-padding {
background-color: #3498db;
color: white;
border: none;
padding: 12px 24px; /* 위아래 12px, 좌우 24px */
}
3. Margin(외부 여백)의 특징과 예제
마진은 요소의 '바깥쪽' 공간을 확보하여 다른 요소와의 거리를 둡니다.
특징
- 마진은 항상 투명하며, 배경색이 적용되지 않습니다.
- 인접한 두 요소 사이의 간격을 조절할 때 사용합니다.
- 마진 상쇄(Margin Collapsing) 현상이 발생할 수 있습니다 (위아래 마진이 겹칠 때 큰 값만 적용되는 현상).
[예제] 박스 사이의 간격 띄우기
여러 개의 카드 뉴스를 배치할 때 마진은 필수입니다.
/* 마진이 없는 카드: 서로 달라붙어 구분이 안 됩니다 */
.card-no-margin {
border: 1px solid #ddd;
margin: 0;
}
/* 마진이 있는 카드: 각 요소가 독립적으로 보입니다 */
.card-with-margin {
border: 1px solid #ddd;
margin-bottom: 20px; /* 아래쪽 카드와의 간격 20px */
}
4. Margin vs Padding: 한눈에 비교하기
구분Margin (마진)Padding (패딩)
| 위치 | 테두리(Border)의 바깥쪽 | 테두리(Border)의 안쪽 |
| 용도 | 다른 요소와의 거리 조절 | 콘텐츠와 테두리 사이의 여백 조절 |
| 배경색 | 적용되지 않음 (투명) | 적용됨 (콘텐츠의 배경이 확장됨) |
| 클릭 유무 | 해당 영역 클릭 시 반응 없음 | 해당 영역 클릭 시 요소가 반응함 |
5. 실전 활용 팁: '액자'로 이해하기
박스 모델을 더 쉽게 이해하려면 **'액자에 걸린 그림'**을 상상해 보세요.
- 그림: 콘텐츠 (Content)
- 그림과 액자 틀 사이의 흰 종이: 패딩 (Padding)
- 액자 틀: 테두리 (Border)
- 액자와 옆에 걸린 다른 액자 사이의 벽 공간: 마진 (Margin)
실무에서 자주 쓰는 단축 속성
상하좌우 값을 한 번에 지정하는 법을 익혀두면 코드가 깔끔해집니다.
/* 상 하 좌 우 모두 20px */
margin: 20px;
/* 상하 10px, 좌우 20px */
padding: 10px 20px;
/* 상 10px, 좌우 20px, 하 30px */
margin: 10px 20px 30px;
/* 상 10px, 우 20px, 하 30px, 좌 40px (시계 방향) */
padding: 10px 20px 30px 40px;
6. 주의사항: Box-sizing 속성
패딩을 주면 박스의 전체 너비가 의도보다 커지는 경우가 있습니다. 이를 방지하기 위해 실무에서는 보통 모든 요소에 다음 설정을 추가합니다.
* {
box-sizing: border-box;
}
이 설정을 사용하면 너비(width) 안에 패딩과 테두리가 포함되어 계산되므로 레이아웃을 잡기가 훨씬 수월해집니다.
마진과 패딩의 차이를 명확히 구분하는 것만으로도 웹 페이지의 레이아웃을 훨씬 정교하고 깔끔하게 설계할 수 있습니다. 각 속성의 특성을 고려하여 상황에 맞는 적절한 여백을 활용해 보시기 바랍니다.
반응형