Border Box에 대하여

·2025년 3월 20일

🎨 CSS 파보기

목록 보기
2/9
post-thumbnail

CSS Box Model의 기본 동작 방식

먼저, 하나의 box가 있다고 가정해보자. 여기에 width: 200pxpadding-left: 50px을 적용하면 어떤 일이 발생할까?

이 경우, 박스는 "나는 200px을 원하지만, padding 50px도 필요해!"라고 말하는 것과 같다.

CSS의 기본 동작 방식

CSS의 기본 박스 모델에서는 width 속성이 콘텐츠 영역(content area)만을 의미한다. 즉, paddingborder는 포함되지 않는다.

따라서 padding-left: 50px을 적용하면:

  • 전체 박스의 너비 = width(200px) + padding-left(50px) + padding-right(기본값 0px)
  • 오른쪽 padding 값이 0이라면, 최종 박스의 크기는 250px이 된다.

이처럼 CSS는 width: 200px을 유지하면서 padding을 추가해 박스 크기를 키운다. 하지만 우리가 기대한 200px짜리 박스가 아니라 250px짜리 박스가 되어버린다.


box-sizing: border-box;의 필요성


.nav {
    position: fixed;
    bottom: 0;
    width: 100%;
    background-color: #f9f9fa;
    padding: 20px 50px;
    box-sizing: border-box;
    border-top: 1px solid rgba(121, 121, 121, 0.3);
}

여기서 .nav 요소에 width: 100%를 적용했는데, 동시에 padding을 추가했다. 하지만 기본적으로 CSS는 widthcontent 영역으로만 계산하므로:

  • padding: 20px 50px이 추가되면서 네비게이션 바의 실제 너비가 100% + 좌우 padding(50px씩) = 100% + 100px이 되어버린다.
  • 즉, nav가 원래 의도보다 더 커져버린다.

이를 방지하기 위해 box-sizing: border-box;를 적용하면:

  • width 속성이 paddingborder까지 포함한 값으로 계산된다.
  • 즉, width: 100%padding을 포함한 전체 크기가 되어, 박스가 더 커지지 않는다.

결국 "CSS야, padding을 줘도 너비를 늘리지 말아줘!"라고 지정하는 것이 box-sizing: border-box;이다.


정리

  1. 기본적으로 width 속성은 content 영역만을 포함하며, paddingborder는 추가적으로 적용된다.
  2. 따라서 padding을 사용하면 박스가 예상보다 커질 수 있다.
  3. 이를 방지하려면 box-sizing: border-box;를 적용해 widthpaddingborder를 포함하도록 만든다.

👉 box-sizing: border-box;를 사용하면 우리가 설정한 width 그대로 유지하면서 padding과 border를 내부에서 조정할 수 있다.

profile
FE 개발 꿈틀이

0개의 댓글