Я пытаюсь разрешить <input type="text">
(далее именуемый как «текстовое поле») заполнить родительский контейнер, установив его width
на 100%
. Это работает до тех пор, пока я не дам текстовому полю дополнение. Затем это добавляется к ширине содержимого и переполнению поля ввода. Обратите внимание, что в Firefox это происходит только при рендеринге контента в соответствии со стандартами. В режиме quirks применяется другая модель коробки.CSS: текстовое поле для заполнения родительского контейнера
Вот минимальный код для воспроизведения поведения во всех современных браузерах.
#x {
background: salmon;
padding: 1em;
}
#y, input {
background: red;
padding: 0 20px;
width: 100%;
}
<div id="x">
<div id="y">x</div>
<input type="text"/>
</div>
Мой вопрос: Как получить текстовое поле, чтобы соответствовать контейнер?
Примечание: для <div id="y">
, это просто: просто установить width: auto
. Однако, если я попытаюсь сделать это для текстового поля, эффект будет другим, и текстовое поле примет значение по умолчанию в строке по ширине (даже если я установил display: block
для текстового поля).
/EDIT: «Решение» Дэвида, конечно, будет работать. Тем не менее, я не хочу изменять HTML - я особо не хочу добавлять фиктивные элементы без семантической функциональности. Это типичный случай divitis, который я хочу избежать любой ценой. Это может быть только взлом в последней инстанции.
что касается отрицательной прокладки? если отрицательная маржа не работает. Можете ли вы иметь отрицательную прокладку? – Sekhat 2009-04-17 09:20:04