JavaScriptまたはテーブルレイアウトハックを使用しないシンプルでクリーンなソリューションを次に示します。それはこの答えに似ています:入力テキストの自動幅は他の要素がフローティングで100%埋めます
入力フィールドを次のスパンでラップすることが重要です display:block
。次に、ボタンを最初に、入力フィールドを2番目に配置する必要があります。
次に、ボタンを右にフロートすると、入力フィールドが残りのスペースを埋めます。
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:これは、入力フィールドとフルを共有する複数のボタンまたは他の要素でも機能します。以下に例を示します。