우리는 마크업을 하면서 가장 먼저 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
'IT > HTML & CSS' 카테고리의 다른 글
CSS방법론 : OOCSS, BEM, SMACSS 비교해보기 (0) | 2021.03.12 |
---|---|
placeholder 속성 수정하기 (0) | 2021.03.11 |
가로 세로 비율 유지가 되는 박스(feat. Youtube) (0) | 2021.03.10 |
display:none과 visibility:hidden의 차이 (0) | 2021.03.10 |
"text-indent" : -9999px 코드 대체하기 (3) | 2021.03.09 |
제 블로그의 모든 글은 제가 직접 작성 하고 다른 글을 참고할 때는 이전 글보다 읽기 편하게 수정해서 작성하고 있습니다. 커피 한잔 사먹고 더 열심히 좋은글로 보답하겠습니다.
오늘도 제 블로그에 와 주셔서 감사합니다. :)