2012-05-12 19 views
9

Tengo dos divs dentro de un contenedor div. Uno debe flotar a la izquierda del otro carro derecho. También ambos deben estar centrados verticalmente dentro de su padre. ¿Cómo puedo conseguir esto?¿Cómo puedo alinear verticalmente dos divs flotantes?

<div id='parent'> 
    <div id='left-box' class='child'>Some text</div> 
    <div id='right-box' class='child'>Details</div>  
</div> 

Si no se aplica a cualquiera de flotador que se alinean verticalmente a la mitad con esta css

.child{ display:inline-block; vertical-align:middle; } 

Sin embargo la adición de #right-box{ float: right; } hace que los niños pierdan su alineación vertical. ¿Qué estoy haciendo mal?

Gracias chicos

+0

su código no funciona para alinear verticalmente a la [demostración en línea en dabblet] media (http://dabblet.com/gist/2664227) –

+0

bien, gracias por revisar, no estoy seguro de cómo lo manejé antes, ¿podría ayudarme a colocar los divs verticalmente en el medio con un flotador a la izquierda para '# left-box' y flotar a la derecha para' # right-box'? ¿Qué css usarías? – JackMahoney

+0

escribí una respuesta –

Respuesta

10

here es la demostración en línea de la solución que necesitaba

enter image description here

que se hizo con este html:

<div id='parent'> 
    <div id='left-box' class='child'>Some text</div> 
    <div id='right-box' class='child'>Details</div>  
</div> 

y esto css:

#parent { 
    position: relative; 

    /* decoration */ 
    width: 500px; 
    height: 200px; 
    background-color: #ddd; 
} 

.child { 
    position: absolute; 
    top: 50%; 
    height: 70px; 
    /* if text is one-line, line-height equal to height set text to the middle */ 
    line-height: 70px; 
    /* margin-top is negative 1/2 of height */ 
    margin-top: -35px; 

    /* decoration */ 
    width: 200px; 
    text-align: center; 
    background-color: #dfd; 
}​ 

#left-box { left: 0; } 
#right-box { right: 0; } 
+0

¡Gracias por todo el esfuerzo que ustedes son realmente geniales! Me encanta ser parte de una comunidad tan entusiasta. – JackMahoney

2

Puede probar la pantalla: mesa y la pantalla: table-cell estilos.
este sitio hacia fuera para más detalles http://www.quirksmode.org/css/display.html


Nota: si desea que la altura div padre a ser un porcentaje (como 100%), entonces será con relación a la altura de su contenedor. Si el contenedor es el cuerpo, entonces tendrás que configurar el cuerpo y la altura del html también, como al 100%.

He aquí un ejemplo de lo que el código podría ser:

<div id='parent'> 
    <div id='left-box'>Some text</div> 
    <div id='right-box'>Details</div>  
</div>​ 

<style> 
body,html{ 
    height:100%; 
} 
#parent{ 
    border:1px solid red; 
    display:table; 
    height:100%; 
    width:100%;   
} 
#left-box{ 
    background-color:#eee; 
    display: table-cell; 
    vertical-align:middle; 
    padding:3px; 
    width:50%; 
} 
#right-box{ 
    background-color:#dddddd; 
    display: table-cell; 
    vertical-align:middle; 
    padding:3px; 
    width:50%; 
} 
​</style> 
Cuestiones relacionadas