CSS box-sizing
사용 방법 알아보기 브라우저가 HTML 요소의 너비와 높이를 계산하고 렌더링하는 방법을 제어하는 속성입니다.
상자 크기 조정(내용 상자 대 테두리 상자)
CSS box-sizing
속성에는 두 가지 값이 있습니다.
content-box
(기본값)border-box
두 상자 크기 값은 브라우저가 HTML 요소의 크기를 계산하고 렌더링하는 방법에 영향을 미치지만 공통점은 이것뿐입니다.
콘텐츠 상자
기본적으로 모든 HTML 요소는 content-box
를 사용합니다. 값:
box-sizing: content-box;
즉, 다음 스타일의 요소가 있는 경우:
div {
width: 100px;
height: 100px;
padding: 16px;
border: 1px solid;
}
그런 다음 해당 요소의 너비와 높이는 100픽셀이 아니라 134픽셀로 계산됩니다. CSS 스타일시트에 지정한 대로. 결과:
크기를 직접 확인하려면 브라우저에서 요소 검사기를 활성화하세요. 이 명령으로:
- 맥:Cmd + Shift + C
- Windows:Ctrl + Shift + C
그런 다음 위의 요소 위로 마우스를 이동하여 크기를 확인합니다.
이것은 content-box
때문에 발생합니다. 너비/높이 값을 테두리와 함께 추가합니다(1px
). 양쪽에) 및 패딩(16px
각 면에) 값을 표시하고 해당 값의 합으로 요소 크기를 렌더링합니다.
- 요소 너비:
1 + 16 + 100 + 16 + 1
=134픽셀. - 요소 높이:
1 + 16 + 100 + 16 + 1
=134픽셀.
content-box
의 기본 동작 작업하기가 상당히 성가실 수 있지만 다행히 쉽게 변경할 수 있습니다!
기본 box-sizing: content-box
선언은 모든 웹 브라우저에 내장된 사용자 에이전트 스타일시트에서 상속됩니다.
구조용 테두리 상자
content-box
를 쉽게 재정의할 수 있습니다. border-box
가 있는 값 브라우저가 요소의 크기를 계산하는 방식에 반대 효과가 있는 값:
box-sizing: border-box;
box-sizing
를 설정하여 border-box
속성 브라우저는 height
가 있는 요소에 지정한 정확한 너비와 높이로 요소를 렌더링합니다. 및 width
속성:
div {
width: 100px;
height: 100px;
padding: 16px;
border: 1px solid;
box-sizing: border-box;
}
결과:
border-box
값은 브라우저를 포함하게 합니다. (추가하지 않음) 요소의 총 너비와 높이를 계산할 때 지정된 패딩 및 테두리 값.
border-box
사용 , padding
에 관계없이 또는 border
요소에 값을 추가하면 요소의 총 크기는 height
에 지정한 값이 됩니다. 및 width
속성.
좋은 측정을 위해 다음을 나란히 비교합니다.
위의 두 요소 모두 너비와 높이가 100픽셀로 지정되어 있지만 border-box
를 사용하기 때문에 두 번째 요소만 지정된 값을 따릅니다. .
content-box
대 border-box
요약:
content-box
패딩 및 테두리 값을 요소 높이/너비 값과 결합하고 합계를 렌더링합니다.border-box
요소 너비/높이의 일부로 패딩 및 테두리 값을 포함합니다.
모든 항목에 테두리 상자 사용
이제 border-box
브라우저가 CSS에서 지정한 실제 크기로 HTML 요소를 렌더링하도록 합니다. 하지만 border-box
는 어떻게 적용합니까? 모든 HTML 요소에?
맨 위에 다음 CSS 규칙 집합을 추가하는 것만으로 간단합니다. 스타일시트:
*, *:before, *:after {
box-sizing: border-box;
}
위의 코드는 CSS의 범용 선택기 *
를 사용합니다. border-box
적용 box-sizing
값 속성:
- 모든 일반 요소 선택기(
div
,p
,button
등) - 모든
:before
및:after
유사 선택기
border-box
를 사용하여 모든 HTML 요소에서 브라우저가 요소의 크기를 렌더링하는 방법에 대해 더 이상 걱정할 필요가 없습니다. 항상 사용자가 지정한 높이와 너비가 됩니다.