본문 바로가기

Frontend

Box Model(박스 모델)이란?

프론트엔드 개발자에게 필요한 스킬 중 CSS는 단연 빼놓을 수 없는 스킬이다.

 

박스 모델은 CSS의 기초 중의 기초이다. 어떻게 CSS가 적용되는지 이해하기 위해서는 박스 모델에 대한 이해가 있어야 한다.

 

Box Model(박스모델) 이란?

CSS를 사용할 때 기억해야할 것은 바로 CSS로 작성하는 모든 것이 박스라는 사실이다.

<style>
    p {
      width: 200px;
      height: 150px;
      font-size: 5rem;
      padding: 2rem;
      border: 1px solid black;
    }
  </style>
  <body>
    <p>All CSS is Box</p>
  </body>

박스모델을 벗어난 컨텐츠

 

박스모델을 모르고 CSS를 작성할 경우, 위 사진과 같이 컨텐츠가 벗어나는 문제를 마주할 수 있게 된다.

위 경우에서 width 속성을 'min-content'로 적용하게 되면 박스 크기를 내부 컨텐츠의 크기만큼 width를 가지게 되어 문제를 해결할 수 있다.

 

박스모델

 

박스모델은 컨텐츠 영역, 패딩 영역, 보더 영역, 마진 영역으로 구성된다.

 

패딩 박스는 박스의 배경을 포함한 공간으로 볼 수 있고 스크롤바도 이 공간을 차지하게 된다.

 

Box sizing 이란?

Box sizing 속성은 박스 크기를 계산하는 방법을 설정하는 CSS 속성이다.

 

기본 값은 'content-box' 속성으로, 이는 width, height로 컨텐츠의 너비를 설정하고, padding 및 margin을 설정하면, 컨텐츠 박스에 추가되는 계산 방식을 의미한다.

box-sizing: content-box인 경우

 

또 다른 속성으로는 'border-box' 속성이 있다.

 

'border-box' 속성은 width, height, padding, border 값을 모두 컨텐츠 영역으로 계산하는 방식을 말한다.

box-sizing: border-box인 경우

 

CSS 작업을 할 때, 사용자가 계산하기 편한 방식은 border-box 방식이므로, 다음 속성을 추가하여 모든 요소가 border-box 속성을 적용되기 해준다.

 

*,
*::before,
*::after {
  box-sizing: border-box;
}