Як зазначено в іншій відповіді, width: auto не працює через ширину, що генерується атрибутом size input, який не може бути встановлений на "auto" або щось подібне.
Є кілька обхідних шляхів, які ви можете використати, щоб змусити її добре грати з коробковою моделлю, але, наскільки я знаю, нічого фантастичного.
Спочатку ви можете встановити прокладку в полі за допомогою відсотків, переконайтесь, що ширина додає до 100%, наприклад:
input {
width: 98%;
padding: 1%;
}
Інша річ, яку ви можете спробувати, - це використання абсолютного позиціонування з лівим і правим значенням 0. Використовуючи цю розмітку:
<fieldset>
<input type="text" />
</fieldset>
І це CSS:
fieldset {
position: relative;
}
input {
position: absolute;
left: 0;
right: 0;
}
Це абсолютне позиціонування призведе до того, що вхід заповнює батьківський набір горизонтально, незалежно від вкладеного вкладу чи поля. Однак величезним недоліком цього є те, що тепер вам доведеться мати справу з висотою набору польових, яка буде 0, якщо ви не встановите його. Якщо ваші входи однакові за висотою, це буде працювати для вас, просто встановіть висоту набору поля на будь-яку висоту вводу.
Крім цього є деякі рішення JS, але мені не подобається застосовувати базові стилі за допомогою JS.