2011-01-22 4 views
61

저는 div와 textarea에 약간의 덧 덧셈을 주려고합니다. 이 작업을 수행 할 때 요소 내부의 내용 영역을 축소하는 대신 요소의 크기를 나타냅니다. 내가하려는 일을 성취 할 수있는 방법이 있습니까?CSS 패딩이 요소의 크기를 늘리는 이유는 무엇입니까?

도움 주셔서 감사합니다.

+0

어떤 브라우저 (들)을 추가하면이 테스트에 사용하는 증가 때문에 자식 DIV 너비 지정하지? –

+19

'* {box-sizing : border-box;}'를 스타일 시트에 추가하면 크기 조정이 예상대로 작동합니다. Paul Irish는 모든 최신 브라우저에서 안전하다는 것을 확인했습니다. http://www.paulirish.com/2012/box-sizing-border-box-ftw/ –

답변

2

브라우저에 따라 다르며 구현은 box model입니다. 당신이 겪고있는 것은 올바른 행동입니다.

IE는 전통적으로 잘못을 가지고 : http://en.wikipedia.org/wiki/Internet_Explorer_box_model_bug

+11

"Wrong"은 W3C의 등장과는 다른 것이지만 지금까지는 멀리있었습니다. 더 직관적 인/일하기 쉬운 것. – pbz

+7

@pbz : 당신이 옳을 것입니다. 그러나 IE가 야기한 혼란을 피하기 위해 명세를 따라야한다. – cherouvim

18

따르면 CSS2 specs에, 상자 형 요소의 렌더링 된 너비 폭의 합과 같다, 왼쪽/오른쪽의 경계와 왼쪽/오른쪽 패딩 (왼쪽/오른쪽 여백 놀이에 또한 들어간다). 상자의 너비가 '100 %'이고 여백, 테두리 및 패딩이있는 경우 개체가 차지하는 너비에 영향을줍니다 (증가).

텍스트 영역을 100 % 넓이로 지정해야하는 경우 width, margin-left/right, border-left/right 및 padding-left/right에 합계가 100 %가되도록 값을 할당하십시오.


우리는 three box-sizing models을 가지고 있습니다. 이 요소는 요소의 경계 박스를 결정

지정된 폭 및 높이 (각각의 최소/최대 특성) 에 : 현재 border-box 모델을 사용할 수있다. 즉, 요소에 지정된 여백 또는 테두리가 배치되고이 지정된 너비와 높이 내에 으로 그려집니다. 콘텐츠 너비와 높이 은 지정된 '너비'및 '높이'속성에서 각 변의 경계 및 패딩 너비를 빼서 계산합니다.

4

이것은 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> 

을 고정 크기 컨테이너에만 적용

45

패딩 및/또는 경계를 요소에 추가 할 때 달라지지 않는 너비와 높이를 지정할 수 있도록 box-sizing:border-box을 컨테이너 요소에 추가 할 수 있습니다.

사양은 here (MDN)을 참조하십시오.

업데이트 과정의 MDN Specs

일부 브라우저에 따라,

는 지금, 값 border-box 모든 주요 브라우저에서 지원됩니다 (복사 댓글이 대답은) 적절한 접두사를 필요 즉,자동 : 당신은 분명히 더 크로스 브라우저 솔루션을 here

+3

[border-box] 값은 모든 주요 브라우저에서 [MDN Specs]에 따라 지원됩니다 (https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing#Browser_compatibility) - 물론 일부 브라우저는 적절한 접두어 즉, '-webkit' 및 -moz'를 명확하게 표시해야합니다 (https://developer.mozilla.org/en-US/docs/Web/CSS/box). 크기 조정 예제) –

0

를 볼 수 -webkit-moz, 당신은 고정 된 폭이 다른 태그에 패딩을 필요로 어떤 태그를 포장하고 폭함으로써이 문제를 피할 수 있습니다. 이렇게하면 부모의 폭이 x이고 자식에 패딩을 추가하면 자식은 부모 폭이나 고유 한 값을 수정하지 않고 채우기를 올바르게 적용하여 x의 전체 너비를 상속합니다.

0

기본적으로 DIV는 다음 자식 DIV에 필요한 패딩을 추가 지정된 DIV자식 DIV을 추가 할 수 있습니다, 브라우저 호환성 문제를 방지하기 때문에, 부모 컨테이너의 폭을한다 .

N.B - 당신이 패딩

관련 문제