7
Tengo un img en div flotante y no sé cómo centrarlo verticalmente.CSS vertical alinear
<div style="height: 300px">
<img style="height: 50px" src="something" />
</div>
vertical-align: middle of course does not trabajo.
Las dos formas que menciona este artículo ya se han dado como respuestas separadas, pero sería un mejor CSSer si supiera para qué se utiliza 'vertical-align': http://phrogz.net/css/vertical-alinear/ – scragz
@scragz - Ese es un buen enlace. Sin embargo, no usaría 'display: table-cell'. Por supuesto, tampoco usaría mi respuesta propuesta de '
https://pbs.twimg.com/media/B2mW8NiCQAA6IIP.jpg – walv
Respuesta
Para texto vertical-align dentro de un elemento padre, y tener en cuenta que un
img
es un inline -elemento y así se comporta de manera similar al texto, se puede establecer simplemente elline-height
a laheight
del elemento padre:JS Fiddle demo.
Fuente
2011-01-24 18:56:31
vertical-align
propiedad sólo es verdaderamente bueno entd
elementos. Pruebe algo como:O ya conoce la altura y la anchura de la
img
:Fuente
2011-01-24 18:53:47 Jason
ZOMG, ninguna de las anteriores me parece bien, quiero decir que hay un agujero serio en CSS, están desarrollando sombras, etc. y tenemos que usar tablas todavía o en divs en divs para centrar verticalmente ... Holy cow. Tengo que usar divs. Y no puedo usar el segundo código porque los usuarios cambiarán la altura del div. Entonces estoy perdido. – anonymous
@anonymous: ¿puede usar JavaScript o cualquier biblioteca JS (MooTools, Scriptaculous, jQuery, Glow ...)? –
El estilo CSS
vertical-align
especifica la alineación del texto dentro de su fila de texto. Esto le permite especificar texto como superíndice o subíndice, por ejemplo.Por lo tanto, no está diseñado para alinear verticalmente un elemento dentro de una caja.
Hay una excepción explícita a esto, sin embargo - celdas de la tabla (es decir
<td>
y<th>
elementos) utilizan el estilo devertical-align
para hacer exactamente eso: alinear los contenidos de la celda dentro de la célula.Esta excepción es algo así como una peculiaridad, realmente no debería existir. Los diseñadores de CSS lo pusieron allí para permitir que CSS reproduzca el atributo
valign
de los elementos de la tabla, que los diseñadores usaban habitualmente en los viejos tiempos de los diseños basados en tablas.Para otros elementos, alinear el contenido de una caja verticalmente en el centro de la misma puede ser una obra de arte. Existen varias técnicas:
Para las líneas individuales de texto, sólo tiene que hacer el
line-height
la misma que la altura de todo el cuadro. Probablemente ni siquiera necesitarávertical-align
para esto.Utilice
display:table-cell;
para hacer que el elemento simule una celda de tabla, y luego usevertical-align
. Esto funciona, pero puede tener consecuencias no deseadas (hay otros atributos de las celdas de la tabla que puede que no desee simular).Si conoce la altura del elemento que desee alinear verticalmente, se puede colocar un 50% menos la mitad de su altura, así:
Hay algunos otros, pero esto debería hacerte comenzar.
Espero que ayude.
Fuente
2011-01-24 19:06:49 Spudley
Javascript probablemente sea la mejor opción para obtener la imagen centrada en el centro vertical para cada caso. si puedes usar una biblioteca como jQuery, son solo unas pocas líneas de código.
});
Fuente
2011-01-24 19:12:23 heymrcarter
Entonces, ¿necesita incluir la biblioteca jQuery completa, más este script? Parece un poco exagerado solo para centrar algo. – Jason
si tiene que centrar algo más que unas pocas veces y si no sabe A) cuál es la altura del div principal, y B) cuál es la altura de la imagen, esto funcionará siempre, y en cada case – heymrcarter
Para una solución más moderna (IE8 +) que no utiliza tablas, me gusta this one mejor.
Fuente
2013-03-08 22:38:07 Justin
La mejor solución, ya que no necesita saber la altura del contenido y no utiliza celdas de celdas de tabla. ¡Gracias por compartir! – Sygmoral
+1 ¡Truco inteligente! Esta debería ser la respuesta aceptada de la OMI. – Passerby
hay una manera de hacer esto mientras que .centered sea un ancho porcentual (que en realidad podría ser del 100%). –
Bastante cool and modern approach (con la altura especificada):
Fuente
2013-09-08 22:45:11 Agat
estoy usando la pantalla: propiedad de cuadro:
Ver el JS-violín aquí: verical align js-fiddle
Fuente
2014-11-03 10:13:38 Ruwen
Usa la propiedad translate, es simple y funciona incluso en IE:
Fuente
2015-02-05 22:50:09 yulie
Muy agradable y corto camino! ¡Gracias! –
Cuestiones relacionadas