2011-07-15 6 views
7

Estoy tratando de tener una caja de entrada fluida con un ancho del 100%, mientras que la etiqueta flota a la izquierda. Esto es lo que tengo actualmente:Caja de entrada 100% ancho, con la etiqueta a la izquierda

.left { 
    float: left; 
} 

input { 
    width: 100%; 
} 

<form> 
    <label class="left">Name:</label> 
    <input class="left" id="name" name="name"/> 
    <div class="clear"></div> 
</form> 

Esto funciona, sin embargo, aparece debajo de la etiqueta. Si uso un div principal para asignar los flotantes, entonces no abarca el 100%. ¿Algunas ideas?

¡Gracias!

+3

¿Qué estás tratando de hacer? ¿Estás tratando de obtener el cuadro de entrada y la etiqueta en la misma línea? Si tiene un cuadro de entrada del 100% del ancho del contenedor, no hay espacio para una etiqueta en esa misma línea, por lo que sería imposible hacerlo. – Will

Respuesta

23

Ver:http://jsfiddle.net/r2769/(cambiar el tamaño de la ventana)

CSS:

.left { 
    float: left; 
} 

.left2 { 
    overflow: hidden; 
    display: block; 
    padding: 0 4px 0 10px 
} 
.left2 input { 
    width: 100% 
} 

HTML:

<form> 
    <label class="left" for="name">Name:</label> 
    <span class="left2"><input id="name" name="name" /></span> 
</form> 

Una explicación del método is here.

+0

+1 Veo este truco más y más aplicable ...;) – NGLN

+0

Sí, es realmente muy útil :) – thirtydot

+0

Thx para la idea inteligente ilustrada en un buen jsfiddle. – chikamichi

3

Hace poco se enteraron de Calc en css:

width: calc(100% - 100px); 

esto se puede utilizar para resolver este problema: jsfiddle here

HTML:

<div class="setting"> 
    label 
    <input class="s2"/> 
</div> 

CSS:

.setting { 
    position: relative; 
    width: 100%; 
} 
.setting .s2 { 
    position: absolute; 
    left: 180px; 
    width: calc(100% - 184px); 
} 
+0

funciona, pero no es compatible con todos los navegadores modernos (3 versiones atrás). Breaks, especialmente en Safari 5 –

Cuestiones relacionadas