CSS에서 패딩 속성이 너비 나 높이를 변경하지 못하게하려면 어떻게합니까?


227

DIVs가 있는 사이트를 만들고 있습니다 . DIV를 만들 때를 제외하고는 모든 것이 잘 작동합니다. 다음과 같이 작성합니다 (예).

newdiv {
    width: 200px;
    height: 60px;
    padding-left: 20px;
    text-align: left;
}

padding-left속성을 추가하면 너비 DIV가 220px로 변경되고 200px로 유지하려고합니다.

하자 내가 다른 만들라고 DIV이름 anotherdiv과 정확히 일치를 newdiv, 그리고 내부에 넣어 newdiv하지만 newdiv패딩이 없습니다하고 anotherdiv있다 padding-left: 20px. 나는 같은 것을 얻습니다 newdiv.의 너비는 220px입니다.

이 문제를 어떻게 해결할 수 있습니까?


3
슬프지만 IE가 이것을 처리하는 방법이 마음에
듭니다

답변:


390

속성 추가 :

-webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
-moz-box-sizing: border-box;    /* Firefox, other Gecko */
box-sizing: border-box;         /* Opera/IE 8+ */

참고 :작동하지 않습니다 버전 8 이하 Internet Explorer에서.


14
이것은 테두리에 대한 훌륭한 솔루션이지만 패딩에 어떻게 도움이됩니까?
Kato

6
이것은 순수한 마법입니다! -우리 모두가 알고 싫어하는 상자 모델을 수정합니다! 오히려 사양보다 - - 즉이 방식의 직관이 정상적으로 제안 일 수 있지만, 지금까지의 내가 중 어떤 사양을 아프게하지 않습니다 알고 : D이 문서의 관계를 설명 그것은 잘 ... stackoverflow.com/questions/779434/...
technicalbloke

2
@technicalbloke 귀하의 링크는이 질문으로 되돌아갑니다.
mhenry1384

11
그렇습니다. 복사하여 붙여 넣습니다. 이것은 내가 공유하고자하는 링크입니다 ... paulirish.com/2012/box-sizing-border-box-ftw
technicalbloke

1
많은 사람들이 너비를 고려해야합니다 : 아래의 자동 트릭. 브라우저, 적은 코드 등에서 작동합니다.
Ryan Shillington 21



11

div의 크기를 변경하지 않고 div 내에서 텍스트를 들여 쓰려면 text-indent대신 대신 CSS 를 사용하십시오 padding-left.

.indent {
  text-indent: 1em;
}
.border {
  border-style: solid;
}
<div class="border">
  Non indented
</div>

<br>

<div class="border indent">
  Indented
</div>


1
이것은 고정 너비 div에서 작동하는 유일한 솔루션입니다. box-sizing은 불행히도 패딩이 너비에 영향을 미치는 것을 막지 못했습니다.이 멋진 작은 속성을 지적 해 준 톤 덕분에.
Stevo


1

padding-left 속성을 추가하면 DIV의 너비가 220px로 변경됩니다.

예, 그것은 정확히 표준에 따릅니다. 그것이 작동하는 방식입니다.

newdiv와 정확히 동일한 anotherdiv라는 다른 DIV를 만들어 newdiv 안에 넣지 만 newdiv에는 패딩이없고 anotherdiv에는 padding-left : 20px가 있다고 가정 해 봅시다. 같은 것을 얻습니다. newdiv의 너비는 220px입니다.

아니요, newdiv는 200px 너비로 유지됩니다.


2
구파, 그것은 표준이 전혀 작동하는 방식이 아닙니다. 패딩은 적용되는 요소의 크기에 영향을 미치지 않습니다. 가장 큰 존경심으로 '패딩'과 '여백'을 혼동 할 수 있습니까?
da5id 2009

1
예, 패딩은 요소의 크기에 영향을 미칩니다. 나는 당신이 혼란스러워하는 사람이라고 생각합니다 ... 여백이 요소의 치수에 영향을 줄 것이라고 어떻게 제안합니까?
Guffa

사실, 우리 둘 다 옳다고 생각합니다. 나는 표준을 완전히 잊어 버린 효과에 대처하는 데 익숙합니다. 여기에서 좋은 설명을 찾았습니다 quirksmode.org/css/box.html
da5id 2009

죄송합니다, 구파 씨 그러나 실용적인 목적 (우리가 이야기하는 모든 것)에 대한 나의 조언은 여전히 ​​아니요?
da5id 2009

글쎄, 당신은 상자 모델 버그가있는 한
옳지 만이

-1

패딩이 20px 인 경우 div 너비를 160px로 변경하면 div 너비에 40px가 더해 지므로 div를 정상으로 유지하고 여분의 너비로 왜곡되지 않도록 너비에서 40px를 빼야합니다. 당신의 텍스트는 엉망입니다.


2
이것은 @rvarcher의 답변과 동일합니다.
8bitjunkie
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.