2011-03-07 4 views
24

나는 input 텍스트 상자만을 포함하는 div의 고정 폭을 가지고 은 100%으로 설정됩니다. 나는 그것이 div를 채울 것으로 예상하지만 그 대신 약간 더 길다.너비가 100 %로 설정되면 div의 내용이 길어지고 div 자체가 더 길어 집니까?

데모 코드 :

HTML :

<div class="container"> 
    <input class="content" id="Text1" type="text" /> 
</div> 

CSS :

.container 
{ 
    width: 300px; 
    height: 30px; 
    border: thin solid red; 
} 
.content 
{ 
    width: 100%; 
} 

결과 (파이어 폭스) :

enter image description here

이 우연 Internet Explorer 8, Chrome, Safari의 펜 ... 오버플로 너비는 브라우저마다 다를 수 있습니다. 콘텐츠를 정확히 div의 너비를 채우도록 만드시겠습니까?

답변

83

box-sizing: border-box에 기본 그것을 해결하기위한 빠르고 쉬운 방법입니다. http://jsfiddle.net/thirtydot/QkmSk/301/

.content { 
    width: 100%; 
    box-sizing: border-box; 
} 

See here 구역질 IE7 호환 방법 :

여기 데모입니다.

+0

그래서이 이상한 행동의 원인은 무엇입니까? – drasto

+2

@drasto : 테두리와 패딩이있는 요소에 'width : 100 %'를 적용한다는 사실. 'border-box'는이 테두리와 패딩을 * width * 100 % 계산에 포함시킴으로써 이것을 수정합니다. – thirtydot

+0

그래서'div'에 0을 채우고 테두리를 없애면 문제를 해결할 수 있습니다 (프로덕션 HTML에서는 필요하지 않습니다). – drasto

0

또한 CSS 재설정을 사용자 페이지에 추가하십시오. 입력에 일부 패딩이 추가되었을 수 있습니다!

+0

'overflow : auto'는 도움이되지 않습니다. 사실, 그냥 추한 스크롤바를 추가합니다. – thirtydot

+0

좋은 지적. 그걸 긁어. – benhowdle89

0

코드를 사용할 때 Firefox에 잘 표시됩니다. 구체적으로 문제가 있다고 생각됩니다. http://htmldog.com/guides/cssadvanced/specificity/

또는 주변 html에 문제가 있습니다. 나는. 닫히지 않은 태그.

해당 CSS와 HTML을 일반 파일에 넣어 올바르게 표시되는지 확인해보십시오. 그렇다면 부모 요소의 CSS 속성을 살펴 보는 것이 좋습니다.

아직 다운로드하지 않은 경우 Firefox 용 Web Developer Toolbar를 다운로드 한 다음 CTRL + SHIFT + F를 사용하여 클릭 가능한 요소 속성 표시를 활성화하십시오. 이것은 무슨 일이 일어나고 있는지 디버깅하는 데 도움이 될 것입니다.

희망이 도움이됩니다.

+1

특수성 또는 잘못된 HTML과는 아무 관련이 없습니다. 수정되지 않은 버전의 내 답변을 참조하십시오 : http://jsfiddle.net/QkmSk/1/ - Firefox에서 효과가 명확하지는 않지만 빨간색 테두리는 '입력'으로 처리됩니다. – thirtydot

+0

Firefox 3.6.14를 사용하는 경우에는 그렇지 않습니다. OP가 제공 한 코드는 조정없이 완벽하게 작동했습니다. 입력 상자는 빨간색 테두리 안에 있습니다. – Dave

+0

질문에 언급 된 4 개의 주요 브라우저에서이 문제를 관찰하고있었습니다. 데모 코드는 빈 페이지 html로 작성되었으며'html' 태그에는 아무런 상식이 없습니다. 그래서 거기에 어떤 문제도 상상할 수 없습니다. 'ctrl + '+'' – drasto

관련 문제