내 텍스트 입력에 display:block;width:auto;
이 div처럼 동작하지 않고 컨테이너 너비를 채우지 않는 이유는 무엇입니까?디스플레이가있는 입력 : 블록이 블록이 아닌 이유는 무엇입니까?
div는 단순히 자동 너비가있는 블록 요소라는 인상하에있었습니다. 다음 코드에서 div와 입력의 치수가 같지 않아야합니까?
너비를 채우려면 입력을 어떻게 받습니까? 입력에 패딩과 테두리가 있기 때문에 100 % 너비가 작동하지 않습니다. 최종 너비는 1 픽셀 +5 픽셀 + 100 % + 5 픽셀 + 1 픽셀입니다. 고정 너비는 옵션이 아니며 좀 더 융통성있는 것을 찾고 있습니다.
해결 방법에 대한 직접적인 대답을 선호합니다. 이것은 CSS 버크 (quirk)와 같아서 나중에 이해하는 것이 유용 할 수 있습니다.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>width:auto</title>
<style>
div, input {
border: 1px solid red;
height: 5px;
padding: 5px;
}
input, form {
display: block;
width: auto;
}
</style>
</head>
<body>
<div></div>
<form>
<input type="text" name="foo" />
</form>
</body>
</html>
이미 래퍼 문제를 해결할 수 있음을 지적해야합니다. 페이지 의미론과 CSS 선택기 관계에 대한 문제로 인해 문제의 본질과 입력 자체의 특성을 변경하여 극복 할 수 있는지 여부를 이해하려고 노력하고 있습니다.
좋습니다. 이것은 이상합니다! 나는 해결책이 width:100%;padding:5px;
과 함께 입력에 max-width:100%
을 단순히 추가하는 것임을 발견했다. 그러나 이것은 더 많은 질문을 제기하는데 (나는 별도의 질문으로 질문 할 것입니다.) 폭은 일반 CSS 상자 모델을 사용하고 최대 너비는 인터넷 탐색기 테두리 상자 모델을 사용하는 것으로 보입니다. 얼마나 이상합니다. 좋아
는, 마지막 하나는 파이어 폭스 3. 인터넷 익스플로러 8 사파리 에서 버그가 수 있도록 나타납니다 4 제한 사양이 할 말하는 100 % + 패딩 + 국경에 최대 폭. 마지막으로, 인터넷 탐색기에 뭔가 맞는 것이 있습니다.
오 마이 갓, 이거 최고예요! 이 과정을 진행하면서 훌륭한 전문가 인 Dean Edwards과 Erik Arvidsson의 많은 도움을 받아 필자는 임의의 패딩과 테두리가있는 요소에서 진정한 크로스 브라우저 100 % 너비를 만들기 위해 세 가지 솔루션을 하나로 모았습니다. 아래 답변을 참조하십시오. 이 솔루션은 여분의 HTML 마크 업, 클래스 (또는 선택기) 및 레거시 인터넷 탐색기에 대한 선택적 동작을 필요로하지 않습니다.
정확한 중복 [http://stackoverflow.com/questions/628500/can-i-stop-100-width-text-boxes-from-extending-beyond-their-containers ] (http://stackoverflow.com/questions/628500/can-i-stop-100-width-text-boxes-from-extending-beyond-their-containers) –
@SleepyCod는 정확한 복제본이 아닙니다. 이 질문은 CSS 2.1 사양을 준수하지 않는 'input'요소의 문제를 다루는 반면, 링크 된 질문은 CSS 2.1 사양의 범위 내에서 완벽하게 발생하는 상자 오버플로를 방지하는 방법을 묻습니다. 질문과 솔루션은 중복되지만 정확한 중복을 부르는 것은 ** 잘못된 것입니다. ** – amn