- PROGRAMMING

[HTML & CSS] CSS에서 box-sizing: border-box;을 사용해야 하는 이유





웹 개발할 때 widthpadding을 설정하면 예상과 다르게 레이아웃이 깨지는 경우가 많다.
예를 들어, 다음과 같이 스타일을 지정했다고 가정해보자.


.box {
  width: 200px;
  padding: 50px;
  border: 10px solid black;
}

이 경우 .box실제 너비는 얼마일까?
보통 200px - 50px(좌) - 50px(우) = 100px이 될 거라고 생각할 수도 있지만,
실제로는 width컨텐츠 영역(content box)만을 의미하기 때문에 아래처럼 계산된다.


200px (content) + 50px (left padding) + 50px (right padding)
+ 10px (left border) + 10px (right border)
= 320px

즉, paddingborderwidth에 포함되지 않기 때문에 원하는 크기보다 커지는 문제가 발생한다.



box-sizing: border-box;로 해결!

이 문제를 해결하려면 box-sizing: border-box;를 적용하면 된다.

.box {
  width: 200px;
  padding: 50px;
  border: 10px solid black;
  box-sizing: border-box;
}


이렇게 설정하면 width: 200px;padding과 border까지 포함한 크기가 된다.
즉, 전체 너비가 200px을 유지하면서 내부 content 크기가 자동으로 조절된다.
계산 방식은 다음과 같다.


200px (전체 박스 크기) - 10px (left border) - 10px (right border)
- 50px (left padding) - 50px (right padding)
= 80px (content 영역 크기)

즉, box-sizing: border-box;를 적용하면 요소의 총 크기가 예상한 대로 정확하게 유지된다.



모든 요소에 border-box 적용하기

웹사이트 전체에 box-sizing: border-box;를 적용하면
레이아웃을 훨씬 더 쉽게 다룰 수 있다

* {
  box-sizing: border-box;
}

이렇게 하면 모든 요소의 width가 padding과 border를 포함한 크기로 설정된다.
즉, 요소 크기를 계산할 때 더 이상 paddingborder를 따로 신경 쓸 필요가 없다.



border-box를 사용하면 좋은 점




1. 레이아웃이 예측 가능

  • width를 설정할 때 padding과 border까지 포함해서 크기를 조절할 수 있음.
  • 요소가 원하지 않게 커지는 문제를 방지할 수 있음.

2. 디자인할 때 편리함

  • padding을 변경해도 전체 크기가 유지되므로, UI를 정리하기 쉬움.

3. 반응형 디자인에 유리함

  • 요소의 크기를 일정하게 유지하면서 padding을 조정할 수 있음.
  • 다양한 화면 크기에서도 디자인이 쉽게 깨지지 않음.



정리

설정값width의 의미실제 크기 계산 방식
box-sizing: content-box; (기본값)컨텐츠 영역 크기만 포함width + padding + border
box-sizing: border-box;컨텐츠 + padding + border 포함width 그대로 유지

결론: box-sizing: border-box;를 사용하면 예상한 크기를 유지할 수 있다!
앞으로 box-sizing: border-box;를 적용해서 더 직관적인 CSS 레이아웃을 만들어보자! 🚀



seuheu

최근 게시물

[Linux] Rocky Linux 9.5 NFS 구성 및 테스트 가이드 (rw/ro + root_squash 비교)

https://youtu.be/n8-wlkZiqio 1. 개요 NFS(Network File System)를 설치하고, rw/ro 및 root_squash 옵션에 따른 접근 제어와 성능을 테스트하는 방법을 정리한 가이드입니다.…

%일 전

[Linux] Rocky Linux 9.5 Cron 설정 및 테스트 방법

https://youtu.be/4MVxzmepY3s 1. 개요 리눅스에서 정기적으로 실행되는 작업(백업, 로그 정리, 모니터링 등)은 cron 서비스를 통해 자동화할 수 있습니다.…

%일 전

[Linux] Rocky Linux 9.5 계정 관리 (생성 · 권한 · 잠금 · 삭제) 정리

https://youtu.be/vPfxWFBE1yc 1. 개요 리눅스 서버를 운영할 때 사용자 계정 생성, 비밀번호 설정, 권한 부여, 계정…

%일 전

[Linux] Rocky Linux 9.5 Chrony로 시간 동기화 설정하기

https://youtu.be/Gvp2XwBfoKw 1. 개요 리눅스 서버에서는 시스템 시간(OS 시간) 과 하드웨어 시간(RTC, Real-Time Clock) 을 동기화하는 것이 매우 중요합니다. 클러스터…

%일 전

[Linux] Rocky Linux 9.5 리눅스 시간 관리 입문: 하드웨어(RTC)와 시스템(OS) 시간 개념부터 동기화까지

https://youtu.be/pt9qhawl8LY 1. 개요 리눅스 서버에서는 시스템 시간(OS 시간) 과 하드웨어 시간(RTC, Real-Time Clock) 을 모두 관리할 수 있습니다. 운영체제의…

%일 전

[Linux] Rocky Linux 9.5 타임존(Timezone)이 뭐예요? 리눅스 시간 확인과 변경 방법

https://youtu.be/iPdHGXh7DUg 1. 개요 서버 운영 시 시스템 시간이 올바르게 설정되어 있지 않으면 로그 분석, 모니터링,…

%일 전