Причина, по которой width: auto
не работает для input
s в Mozilla, заключается в том, что они имеют внутреннюю ширину, которая задается атрибутом size
, по умолчанию 20
, когда атрибут не объявлен.
Я не вижу простого способа обойти это. Обычный кросс-браузерный совместимый способ - это div-обертка с полем, в котором ширина div устанавливается равной 100%
внутри. Это необходимо и для IE6, который не поддерживает абсолютное позиционирование кромок (установка слева и справа, но не ширины, или верха и низа, но не высоты) для любого элемента.