Я согласен с centr0 относительно того, почему width: auto
не работает.
Если вы действительно хотите получить input
в качестве полной ширины своего контейнера, тогда работает следующее.Дано:
<div id="Container">
<form>
<input type="text" />
</form>
</div>
Сделайте это с помощью css:
form {
padding: 0 0 0 14px;
}
input {
padding: 5px;
width: 100%;
margin: 0 0 0 -14px;
}
Объяснение: Очевидно, поле -14px в input
противодействует добавлению, добавленному кэлемент form
.Что не так очевидно, так это откуда взялся 14px
.Он равен левому / правому 5-пиксельному отступу input
плюс значение по умолчанию для ширины границы элемента input
(2 пикселя во всех браузерах, которые я тестировал).Таким образом, 2 + 5 + 5 + 2 = 14.
Чтобы быть уверенным в том, что вы используете кросс-браузер, вам нужно явно установить ширину границы, равную желаемой для input
.Если вы хотите другой отступ (или более толстые / более тонкие границы), просто переделайте математику.Заполнение 3px будет 10px вместо 14px, заполнение 7px будет 18px вместо 14px.
Например, вы можете установить ширину #Container
(также может быть сама body
, то естьпросто по умолчанию 100% ширины страницы) к тому, что вы хотите, и вышеупомянутый CSS должен соответствовать его ширине.