Почему display:block;width:auto;
на моем вводе текста не ведет себя как div и заполняет ширину контейнера?
У меня создалось впечатление, что div - это просто элемент блока с автоматической шириной. В следующем коде не должны быть деления и ввода одинаковых размеров?
Как мне получить вход для заполнения ширины? 100% -ная ширина не будет работать, потому что на входе есть отступы и граница (вызывая конечную ширину 1 пиксель + 5 пикселей + 100% + 5 пикселей + 1 дюйм пикселей). Фиксированная ширина не является опцией, и я ищу что-то более гибкое.
Я бы предпочел прямой ответ на обходной путь. Это похоже на причуду CSS и понимание того, что это может быть полезно позже.
<!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, я пытаюсь понять природу проблемы и можно ли ее преодолеть, изменив характер самого INPUT.
Хорошо, это правда странно! Я обнаружил, что решение состоит в том, чтобы просто добавить max-width:100%
к вводу с помощью width:100%;padding:5px;
. Однако возникает еще больше вопросов (которые я задам в отдельном вопросе), но кажется, что ширина использует обычную модель окна CSS, а max-width использует модель пограничного окна Internet Explorer. Как очень странно.
Хорошо, эта последняя кажется ошибкой в Firefox 3. Internet Explorer 8 и Safari 4 ограничивают максимальную ширину до 100% + дополнение + границу, что и говорит спекуляция. Наконец, Internet Explorer получил что-то правильное.
Боже мой, это здорово! В процессе игры с этим и с большой помощью от почтенных гуру Дин Эдвардс и Эрик Арвидсон, мне удалось собрать три отдельных решения, чтобы сделать истинную кросс-браузерную 100-процентную ширину на элементах с произвольным заполнением и границами. См. Ответ ниже. Это решение не требует дополнительной разметки HTML, просто класс (или селектор) и необязательное поведение для устаревшего Internet Explorer.