Ширина входного типа = текстовый элемент
Как получилось:
<input type="text" style="width: 10px; padding: 2px"/>
<div style="width: 10px; border: solid 1px black; padding: 2px"> </div>
вход заканчивается на 2 px шире, чем div в IE6 и FF3? Что мне не хватает?
EDIT:
Как говорили многие, граница является проблемой. Если я устанавливаю границу: 0px на входе, она будет иметь ту же ширину, что и div с границей 0 px (проверяется путем ее обертывания внутри ограниченного SPAN).
Однако, когда я измеряю элементы в краске, div имеет внутренность 14 px, как и ожидалось (10 + 2 + 2). Вход, однако, имеет внутренность 16 px, а затем границу за пределами этого. Почему это? Вероятно, это не ошибка, так как это происходит как в IE6, так и в FF3, но я не понимаю.
Ответы
Ответ 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 был на два пикселя короче, чем он есть на самом деле.