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: absolutetodas partes?vertical-align: middle;trabajos condisplay: inline-blocko 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-alignsolo 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
transformytopEl punto clave es que un valor de porcentaje en
topes relativo al delheightbloque contenedor; Mientras que un valor porcentual entransforms 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 latransformdeclaración para que se convierta en:Vale la pena señalar que CSS
transformes compatible con IE9 + .2. Usando
inline-block(pseudo-) elementosEn este método, tenemos dos
inline-blockelementos hermanos que están alineados verticalmente en el medio porvertical-align: middledeclaración.Uno de ellos tiene uno
heightde100%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
valignelemento del método debe serdisplay: blocktransform: 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
heightpropiedad 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
.bfalta 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.ay.bclases?Aquí hay una manera simple de usar el objeto Top.
Por ejemplo: si el tamaño absoluto del elemento es 60px.
fuente
calces ú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