내 div 및 텍스트 영역에 약간의 패딩을 제공하려고합니다. 이렇게하면 요소 내부의 콘텐츠 영역이 축소되는 대신 요소의 크기가 증가합니다. 내가하려는 일을 성취 할 수있는 방법이 있습니까?
* {box-sizing: border-box;}스타일 시트에 추가 하면 크기가 예상대로 작동합니다. Paul Irish는 모든 최신 브라우저에서 안전하다고 확인했습니다. paulirish.com/2012/box-sizing-border-box-ftw
내 div 및 텍스트 영역에 약간의 패딩을 제공하려고합니다. 이렇게하면 요소 내부의 콘텐츠 영역이 축소되는 대신 요소의 크기가 증가합니다. 내가하려는 일을 성취 할 수있는 방법이 있습니까?
* {box-sizing: border-box;}스타일 시트에 추가 하면 크기가 예상대로 작동합니다. Paul Irish는 모든 최신 브라우저에서 안전하다고 확인했습니다. paulirish.com/2012/box-sizing-border-box-ftw
답변:
CSS2 사양 에 따르면 상자 유형 요소의 렌더링 된 너비는 너비, 왼쪽 / 오른쪽 테두리 및 왼쪽 / 오른쪽 패딩의 합과 같습니다 (왼쪽 / 오른쪽 여백도 적용됨). 상자의 너비가 '100 %'이고 여백, 테두리 및 패딩이있는 경우 개체가 차지하는 너비에 영향을줍니다 (증가).
따라서 텍스트 영역의 너비를 100 %로 설정해야하는 경우 합계가 100 %가되도록 width, margin-left / right, border-left / right 및 padding-left / right에 값을 할당하십시오.
CSS3에는 세 가지 상자 크기 모델이 있습니다. border-box모델 을 사용할 수 있습니다 .
이 요소에 지정된 너비와 높이 (및 각 최소 / 최대 속성)는 요소의 테두리 상자를 결정합니다. 즉, 요소에 지정된 패딩 또는 테두리가이 지정된 너비와 높이 내에 배치되고 그려집니다. 콘텐츠 너비와 높이는 지정된 'width'및 'height'속성에서 각면의 테두리 및 패딩 너비를 빼서 계산됩니다.
이것은 W3C 부분의 엉망이었고 다양한 브라우저는 자체 버전의 박스 모델로 인해 이러한 복잡성을 더했습니다. 개인적으로 어떤 브라우저 또는 CSS 설정이 트릭을 수행할지 생각하는 대신 다음과 같이 패딩을 사용하는 대신 상자의 내용을 또 다른 DIV 문에 래핑하고 해당 DIV에 여백을 사용합니다.
<div id="container" style="width: 300px; border: 10px solid red;">
<div id="content" style="width: 250px; margin: 25px;">
Some content
</div>
</div>
이것은 고정 크기 컨테이너에서만 작동하지만
그것은 브라우저와 박스 모델 의 구현에 따라 다릅니다 . 당신이 경험하고있는 것은 올바른 행동입니다.
IE는 전통적으로 틀 렸습니다 : http://en.wikipedia.org/wiki/Internet_Explorer_box_model_bug