1일 1CS(Computer Science)

css box-sizing 속성에 대해 설명해주세요.

표자 2025. 6. 24. 09:48

box-sizing이 뭔가요? 🤔

웹 개발을 하다 보면 분명 width: 200px로 설정했는데 실제로는 더 큰 요소가 나타나는 경우를 경험해보셨을 거예요. 마치 피자 박스를 주문했는데 생각보다 훨씬 큰 박스가 온 것처럼 말이죠!

이런 상황이 바로 box-sizing 속성과 관련이 있습니다 🍕

두 가지 계산 방식 📏

1. content-box (기본값) - "속만 재는 방식"

일상 예시: 선물 상자를 만들 때 내용물만 측정하는 방식

  • 상자 안에 들어갈 물건: 200px
  • 상자 벽 두께(padding): 20px씩 양쪽
  • 상자 테두리(border): 2px씩 양쪽
  • 실제 상자 크기: 200 + 40 + 4 = 244px 📦

2. border-box - "전체를 재는 방식" ⭐

일상 예시: 선물 상자의 전체 크기를 미리 정하는 방식

  • 전체 상자 크기: 200px로 고정
  • 상자 벽과 테두리를 뺀 나머지가 내용물 공간
  • 내용물 공간: 200 - 40 - 4 = 156px 🎁

왜 border-box를 선호할까요? 💡

1. 예측 가능성 🎯

  • 카페에서 "라떼 톨사이즈"를 주문하면 컵 크기가 정확히 나오는 것처럼
  • width: 300px라고 하면 정말로 300px로 나옴

2. 반응형 디자인에서 유리 📱

  • 부모 컨테이너의 50%를 차지하도록 설정할 때
  • padding이나 border가 추가되어도 비율이 깨지지 않음

3. 레이아웃 계산이 쉬움 🧮

  • 그리드나 플렉스 레이아웃에서 크기 계산이 직관적

전역 설정하기 🌍

대부분의 개발자들이 사용하는 만능 CSS 리셋:

* {
  box-sizing: border-box;
}

이렇게 설정하면 모든 요소가 border-box 방식으로 동작합니다! 마치 모든 상자를 표준 규격으로 만드는 것과 같아요 📋

실무에서 언제 유용할까요? 🛠️

1. 폼 디자인할 때

  • input 필드에 padding을 추가해도 전체 너비가 변하지 않음
  • 버튼들이 일정한 크기로 정렬됨

2. 카드 레이아웃 만들 때

  • 각 카드의 크기가 일정하게 유지
  • 내부 여백을 조정해도 전체 레이아웃이 깨지지 않음

3. 반응형 그리드 작업할 때

  • 컨테이너의 33.33%를 차지하는 요소들이 정확히 3개씩 한 줄에 배치

주의사항 ⚠️

  • 기존 프로젝트에 전역 box-sizing을 적용할 때는 신중하게!
  • 이미 content-box 기준으로 작성된 CSS가 있다면 레이아웃이 깨질 수 있어요
  • 점진적으로 적용하거나 새 프로젝트부터 시작하는 것을 추천 👍

브라우저 지원 🌐

모든 모던 브라우저에서 완벽 지원! IE8+부터 사용 가능하니 걱정 없이 사용하세요 ✅


면접 답변 💼

box-sizing은 CSS에서 요소의 크기 계산 방식을 결정하는 속성입니다. content-box(기본값)는 width/height가 내용 영역만을 의미하여 padding과 border가 추가로 계산되지만, border-box는 width/height에 padding과 border까지 포함되어 더 직관적이고 예측 가능한 레이아웃을 만들 수 있습니다. 실무에서는 전역으로 border-box를 설정하여 사용하는 것이 일반적입니다.

 

 


css box-sizing 속성에 대해 설명해주세요.

프론트엔드와 관련된 질문이에요.

box-sizing은 CSS에서 요소의 크기를 어떻게 계산할지를 결정하는 속성입니다. 레이아웃을 스타일링할 때 예상치 못한 크기(너비, 높이) 변화가 발생하곤 하는데요. 그런 상황에서 box-sizing 속성이 도움이 될 수 있습니다.

box-sizing에는 두 가지 옵션이 있습니다. 바로, content-box와 border-box입니다.

1. box-sizing: content-box (기본값)

content-box는 box-sizing 속성의 기본값으로, 적용 시 요소의 width와 height 값이 내용 영역만의 크기를 나타냅니다. 즉, width와 height는 요소의 실제 콘텐츠 크기만을 정의하고, 그 안에 추가되는 padding과 border는 크기에 포함되지 않습니다.

예를 들어, width: 200px로 설정된 요소에 padding: 20px과 border: 2px solid black이 있으면, 요소의 실제 너비는 200px + 20px * 2 (padding) + 2px * 2 (border)로, 총 244px가 됩니다. 이 방식은 padding과 border가 요소의 총 크기에 영향을 미친다는 점에서 때때로 예측하기 어려운 결과를 초래하기도 합니다.

2. box-sizing: border-box

border-box를 적용하면 width와 height 값이 내용 영역, padding, border를 모두 포함하는 크기를 나타냅니다. 즉, width와 height는 실제 콘텐츠의 크기뿐만 아니라 패딩과 테두리까지 포함된 크기로 설정됩니다. 예를 들어, width: 200px로 설정된 요소에 padding: 20px과 border: 2px solid black이 있으면, 콘텐츠의 크기는 자동으로 200px - 20px * 2 - 2px * 2로 계산되어, 실제 콘텐츠 영역의 크기는 156px가 됩니다. 이 방식은 직관적으로 레이아웃의 크기를 예측하기 용이합니다.

728x90