Подтвердить что ты не робот

Ширина входного типа = текстовый элемент

Как получилось:

<input type="text" style="width: 10px; padding: 2px"/>
<div style="width: 10px; border: solid 1px black; padding: 2px">&nbsp;</div>

вход заканчивается на 2 px шире, чем div в IE6 и FF3? Что мне не хватает?

EDIT: Как говорили многие, граница является проблемой. Если я устанавливаю границу: 0px на входе, она будет иметь ту же ширину, что и div с границей 0 px (проверяется путем ее обертывания внутри ограниченного SPAN).

Однако, когда я измеряю элементы в краске, div имеет внутренность 14 px, как и ожидалось (10 + 2 + 2). Вход, однако, имеет внутренность 16 px, а затем границу за пределами этого. Почему это? Вероятно, это не ошибка, так как это происходит как в IE6, так и в FF3, но я не понимаю.

4b9b3361

Ответ 1

Я считаю, что именно так браузер делает свой стандартный ввод. Если вы установите границу на входе:

<input type="text" style="width: 10px; padding: 2px; border: 1px solid black"/>
<div style="width: 10px; border: solid 1px black; padding: 2px"> </div>

Тогда обе имеют одинаковую ширину, по крайней мере, в FF.

Ответ 2

Видимая ширина элемента width + padding + border + outline, поэтому кажется, что вы забываете о границе элемента ввода. То есть, чтобы ширина границы по умолчанию для элемента ввода в большинстве (некоторых?) Браузеров фактически вычислялась как 2px, а не одна. Следовательно, ваш ввод выглядит как 2px шире. Попробуйте явно установить border-width на входе или сделать ваш div шире.

Ответ 3

ширина ввода 10 + 2 раза 1 px для границы

Ответ 4

Я думаю, вы забываете о границе. Наличие границы с одним пикселем на Div приведет к удалению двух пикселей общей длины. Поэтому он будет выглядеть так, как если бы div был на два пикселя короче, чем он есть на самом деле.