Estoy tratando de obtener un contenedor azul en medio del rosa, sin embargo, parece vertical-align: middle;
que no funciona en ese caso.
<div style="display: block; position: absolute; left: 50px; top: 50px;">
<div style="text-align: left; position: absolute;height: 56px;vertical-align: middle;background-color: pink;">
<div style="background-color: lightblue;">test</div>
</div>
</div>
Resultado:
Expectativa:
Sugiera cómo puedo lograr eso.
html
css
vertical-alignment
absolute
Vladimirs
fuente
fuente
position: absolute
todas partes?vertical-align: middle;
trabajos condisplay: inline-block
o diseño de tablamargin-top: calc((56px - 16px) / 2)
dónde56px - parent height
,16px - element height/font-size
- JSFiddleRespuestas:
En primer lugar, tenga en cuenta que
vertical-align
solo es aplicable a celdas de tabla y elementos de nivel en línea.Hay dos formas de lograr alineaciones verticales que pueden o no satisfacer sus necesidades. Sin embargo, te mostraré dos métodos de mis favoritos:
1. Usando
transform
ytop
El punto clave es que un valor de porcentaje en
top
es relativo al delheight
bloque contenedor; Mientras que un valor porcentual entransform
s es relativo al tamaño del cuadro en sí (el cuadro delimitador).Si experimenta problemas de representación de fuente (fuente borrosa), la solución es agregar
perspective(1px)
a latransform
declaración para que se convierta en:Vale la pena señalar que CSS
transform
es compatible con IE9 + .2. Usando
inline-block
(pseudo-) elementosEn este método, tenemos dos
inline-block
elementos hermanos que están alineados verticalmente en el medio porvertical-align: middle
declaración.Uno de ellos tiene uno
height
de100%
sus padres y el otro es nuestro elemento deseado cuyo que queríamos alinear en el medio.Finalmente, debemos usar uno de los métodos disponibles para eliminar la brecha entre los elementos de nivel en línea .
fuente
valign
elemento del método debe serdisplay: block
transform: translateY(-50%);
Nunca he visto esto antes, pero funciona a la perfección. Protector de la vida real.utilizar este :
consulte este enlace: https://www.smashingmagazine.com/2013/08/absolute-horizontal-vertical-centering-css/
fuente
height
propiedad debe estar definida (en px, em, etc.) para que esto funcione.Usa flex blox en tu div posicionado para centrar su contenido.
Ver ejemplo https://plnkr.co/edit/wJIX2NpbNhO34X68ZyoY?p=preview
fuente
Centro vertical y horizontalmente:
fuente
Puedes usar
display:table
/table-cell;
fuente
.b
falta loposition: absolute;
que es importante para mostrar otras cosas que no incluí para mantener el código más claro. Sé que no tiene sentido tener-celda de la tabla con posición absoluta, pero quizá no hay otro enfoque que permita retenerposition: absolute;
en tanto.a
y.b
clases?Aquí hay una manera simple de usar el objeto Top.
Por ejemplo: si el tamaño absoluto del elemento es 60px.
fuente
calc
es útil, aunque esto debería sertop: calc(50% - 30px)
para que realmente esté centrado.Una solución simple adicional
HTML:
CSS:
fuente
Verifique esta respuesta a un problema similar.
Esta es, con mucho, la forma más fácil que he encontrado.
https://stackoverflow.com/a/26079837/4593442
NOTA. Solía pantalla: -webkit-flex; en lugar de mostrar: flex;para probar dentro de safari.
NOTA. Solo soy un novato, comparto la ayuda de alguien que tiene una experiencia clara.
fuente
Puede hacerlo utilizando
display:table;
en div padre ydisplay: table-cell; vertical-align: middle;
en div hijofuente