IT/HTML & CSS

box-sizing 이해하기

라임웨일 2021. 3. 11. 10:26
반응형

 

우리는 마크업을 하면서 가장 먼저 CSS의 박스 모델(Box Model) 개념을 배우게 됩니다. 이 개념을 바탕으로 다양한 GUI를 구현하게 되는데요.

기본적으로 박스 모델에서 요소에 할당 한 width 및 height 값은 사용자가 지정한 요소의 콘텐츠 상자에만 적용됩니다. 요소에 테두리(border) 또는 패딩(padding)이 있는 경우에는 width 및 height에 해당 값이 추가되어 자신이 지정한 값보다 더 큰 값이 화면에 렌더링 되는 결과를 얻게 됩니다.

 

하지만 우리는 box-sizing속성을 활용하면 테두리(border) 또는 패딩(padding) 요소가 추가되더라도 처음에 사용자가 의도한 값을 얻을 수 있습니다. (와우!)

 

그럼 지금부터 조금 더 심도 있게 box-sizing에 대해 알아볼게요.

CSS box model을 수정하기 위한 box-sizing의 값으로는, [content-box], [padding-box], [border-box]가 있으며, [content-box]가 기본 속성 값을 가지고 있습니다. 

 

1. box-sizing: content-box

CSS 표준에 정의되어 있는 기본값으로 width와 height 속성 값은 콘텐츠에만 포함하며, padding, border, margin 은 포함하지 않습니다.

 

2. box-sizing: padding-box

width와 height 속성 값에 padding을 포함합니다. border, margin 은 포함하지 않습니다.

 

3. box-sizing: border-box

width와 height 속성 값에 padding, border를 포함합니다. margin 은 포함하지 않습니다.

 

4. 주의

  • box-sizing 속성은 스타일 상속이 되지 않습니다.
  • IE, Firefox 23 이전, Chrome 에선 `window.getComputedStyle()`이 올바르게 적용되지 않습니다.
  • IE9에서 `currentStyle` 속성에서 height가 올바른 값이 리턴되지 않습니다.

5. 브라우저 호환성

  • box-sizing 속성은 IE8 이상, Chorme 10~, Firefox 29~ 에서 제공합니다.
  • Chrome 10 미만 버전과, Firefox 29 미만 버전에서는 각각 -webkit과 -moz prefix를 사용해야 합니다.
  • 모바일에선 Safari 모든 버전, Android 2.1~ (-webkit prefix), Android 4.0에서 지원합니다.
  • [padding-box] 속성은 Firefox에서만 제공합니다.

Demo : 

 

 

 

참고 : developer.mozilla.org/en-US/docs/Web/CSS/box-sizing

 

반응형
광고차단(애드블록)프로그램이나 브라우저를 사용중이시면 프로그램을 비활성화이나 블로그 주소를 예외 처리 해주시면 광고가 노출됩니다. 귀찮고 번거롭겠지만 광고 클릭은 저에게는 큰 힘이 됩니다. 🙇🏻‍♂️🙇🏻‍♀️
제 블로그의 모든 글은 제가 직접 작성 하고 다른 글을 참고할 때는 이전 글보다 읽기 편하게 수정해서 작성하고 있습니다. 커피 한잔 사먹고 더 열심히 좋은글로 보답하겠습니다.
오늘도 제 블로그에 와 주셔서 감사합니다. :)
//