Aquí hay una solución simple y limpia sin usar JavaScript o hacks de diseño de tabla. Es similar a esta respuesta: el ancho de entrada automático del texto de entrada se llena al 100% con otros elementos flotantes
Es importante ajustar el campo de entrada con un intervalo que es display:block
. Lo siguiente es que el botón tiene que venir primero y el campo de entrada segundo.
Luego puede flotar el botón a la derecha y el campo de entrada llena el espacio restante.
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>
Un violín simple: http://jsfiddle.net/v7YTT/90/
Actualización 1: si su sitio web está dirigido solo a navegadores modernos, sugiero usar cuadros flexibles . Aquí puedes ver el soporte actual .
Actualización 2: Esto incluso funciona con múltiples botones u otros elementos que comparten el total con el campo de entrada. Aquí hay un ejemplo .