Вот простое и чистое решение без использования JavaScript или взлома макета таблицы. Это похоже на этот ответ: автозаполнение ввода текста заполнение 100% с другими элементами с плавающей
Важно обернуть поле ввода диапазоном display:block
. Следующее, что кнопка должна идти первой, а поле ввода - второй.
Затем вы можете перемещать кнопку вправо, и поле ввода заполняет оставшееся пространство.
form {
width: 500px;
overflow: hidden;
background-color: yellow;
}
input {
width: 100%;
}
span {
display: block;
overflow: hidden;
padding-right:10px;
}
button {
float: right;
}
<form method="post">
<button>Search</button>
<span><input type="text" title="Search" /></span>
</form>
Простая скрипка: http://jsfiddle.net/v7YTT/90/
Обновление 1: если ваш сайт ориентирован только на современные браузеры, я предлагаю использовать гибкие блоки . Здесь вы можете увидеть текущую поддержку .
Обновление 2: это работает даже с несколькими кнопками или другими элементами, которые полностью используют поле ввода. Вот пример .