Позиционируя абсолют, вы становитесь зависимыми от правильной ширины входных элементов. Это трудно сделать кросс-браузер, потому что браузеры, как правило, используют пользовательские или нативные элементы, которые не согласованы по стилю. Вам лучше использовать встроенный блок или плавающий макет, который обрабатывает непостоянную ширину.
Если вам действительно нужно сделать это таким образом, есть некоторые хаки, использующие свойство css3 box-sizing
и / или вручную настраивающие свойства, такие как высота строки, размер шрифта и отступы, чтобы заставить все браузеры согласовать размер ввода, но это сложнее, чем это звучит.
Этот вопрос содержит некоторую информацию о box-sizing
и использовании процента / автоматической ширины для получения согласованности: ввод с отображением: блок не является блоком, почему бы и нет?
РЕДАКТИРОВАТЬ: Исходя из вашего комментария выше, вам может потребоваться настроить некоторые div-обертки, чтобы установить размер / положение как скрытых, так и видимых элементов, а затем использовать ширину в процентах и box-sizing
, как объяснено.
<div class="input_wrapper" style="width:100px;position:relative">
<input style="width:100%;box-sizing:border-box;position:absolute">
<div class="fake_input" style="width:100%;position:absolute">
</div>
Ключ ко всему этому заключается в том, что box-sizing:border-box
менее восприимчив к различиям в браузере при заполнении и вычислениях границ при вводе формы.