Вы можете использовать отображение таблицы / таблицы-ячейки. Это не макет на основе таблицы, поэтому люди не будут закрывать крышку. Вы устанавливаете div для отображения в виде таблицы, а затем используете селектор непосредственных потомков > *
, чтобы все непосредственные дочерние элементы действовали как ячейки. Затем вы можете указать ширину ячеек, и они сделают все возможное, чтобы занять всю ширину. Мне пришлось обернуть кнопку в промежуток, потому что иначе она бы сжалась.
http://jsfiddle.net/LLQQQ/6/
<div>
<input type="text"/>
<span><button>button</button></span>
</div>
div {
border: 1px solid #000;
display: table;
width: 100%;
}
div > * { display: table-cell; }
div > span { width: 1%; }
div > input { width: 100%; }