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