Estoy tratando de centrar el contenido de mis pestañas verticalmente, pero cuando agrego el estilo CSS display:inline-flex
, la alineación horizontal del texto desaparece.
¿Cómo puedo hacer ambas alineaciones de texto x e y para cada una de mis pestañas?
* { box-sizing: border-box; }
#leftFrame {
background-color: green;
position: absolute;
left: 0;
right: 60%;
top: 0;
bottom: 0;
}
#leftFrame #tabs {
background-color: red;
position: absolute;
top: 0;
left: 0;
right: 0;
height: 25%;
}
#leftFrame #tabs div {
border: 2px solid black;
position: static;
float: left;
width: 50%;
height: 100%;
text-align: center;
display: inline-flex;
align-items: center;
}
<div id=leftFrame>
<div id=tabs>
<div>first</div>
<div>second</div>
</div>
</div>
Respuestas:
Enfoque 1 -
transform
translateX
/translateY
:Ejemplo aquí / Ejemplo de pantalla completa
En los navegadores compatibles (la mayoría de ellos), puede usar
top: 50%
/left: 50%
en combinación contranslateX(-50%) translateY(-50%)
para centrar dinámicamente vertical / horizontalmente el elemento.Enfoque 2 - Método de Flexbox:
Ejemplo aquí / Ejemplo de pantalla completa
En los navegadores compatibles , configure el
display
elemento de destinoflex
y utilíceloalign-items: center
para el centrado vertical y eljustify-content: center
centrado horizontal. Simplemente no olvide agregar prefijos de proveedor para soporte adicional del navegador ( ver ejemplo ).Enfoque 3 -
table-cell
/vertical-align: middle
:Ejemplo aquí / Ejemplo de pantalla completa
En algunos casos, deberá asegurarse de que la altura del elemento
html
/body
esté establecida en100%
.Para la alineación vertical, establezca
width
/height
to del elemento principal100%
y agreguedisplay: table
. Luego, para el elemento hijo, cambiedisplay
atable-cell
y agreguevertical-align: middle
.Para el centrado horizontal, puede agregar
text-align: center
para centrar el texto y cualquier otroinline
elemento secundario. Alternativamente, podría usarmargin: 0 auto
, suponiendo que el elemento estéblock
nivelado.Enfoque 4 - Absolutamente posicionado
50%
desde la parte superior con desplazamiento:Ejemplo aquí / Ejemplo de pantalla completa
Este enfoque asume que el texto tiene una altura conocida - en este caso,
18px
. Simplemente coloque el elemento50%
desde arriba, en relación con el elemento padre. Use unmargin-top
valor negativo que sea la mitad de la altura conocida del elemento, en este caso --9px
.Enfoque 5 - El
line-height
método (menos flexible - no sugerido):Ejemplo aquí
En algunos casos, el elemento padre tendrá una altura fija. Para el centrado vertical, todo lo que tiene que hacer es establecer un
line-height
valor en el elemento secundario igual a la altura fija del elemento primario.Aunque esta solución funcionará en algunos casos, vale la pena señalar que no funcionará cuando haya varias líneas de texto, como esta .
fuente
display: flex
en los padres yalign-self: center
en los hijos.Si CSS3 es una opción (o tiene una reserva), puede usar transform:
A diferencia del primer enfoque anterior, no desea usar left: 50% con la traducción negativa porque hay un error de desbordamiento en IE9 +. Utilice un valor correcto positivo y no verá barras de desplazamiento horizontales.
fuente
transform: translateX(50%) translateY(50%);
en su lugar. La transformación anterior no es sintácticamente correcta según los documentos de transformación de Mozilla .transform
valores que pueden tomar un valor X e Y tienen una función básica para tomar ambos y funciones especializadas para tomar solo uno.La mejor manera de centrar una caja, tanto vertical como horizontalmente, es usar dos contenedores:
El otro contenedor:
display: table;
El contenedor interior:
display: table-cell;
vertical-align: middle;
text-align: center;
El cuadro de contenido:
display: inline-block;
Demo:
Ver también este violín !
Centrado en el medio de la página:
Para centrar su contenido en el medio de su página, agregue lo siguiente a su contenedor externo:
position : absolute;
width: 100%;
height: 100%;
Aquí hay una demostración para eso:
Ver también este violín !
fuente
Aquí se explica cómo usar 2 propiedades flexibles simples para centrar n divs en el eje 2:
align-items: center
centrará verticalmente los bloquesjustify-content: space-around
distribuirá el espacio horizontal libre alrededor de los divsfuente
Ejecute este fragmento de código y vea un div alineado vertical y horizontalmente.
fuente
La solución más simple y limpia para mí es usar la propiedad CSS3 "transform":
fuente
El primer niño estará alineado vertical y horizontalmente en el centro
fuente
para centrar el Div en una página check the fiddle link
Actualizar Otra opción es usar flex box check the fiddle link
fuente
A continuación se muestra el enfoque de caja flexible para obtener el resultado deseado
fuente
Otro enfoque es usar la tabla:
fuente
Para centrar vertical y horizontalmente un elemento, también podemos usar las propiedades mencionadas a continuación.
Esta propiedad CSS alinea elementos verticalmente y acepta los siguientes valores:
inicio flexible : los elementos se alinean con la parte superior del contenedor.
extremo flexible : los elementos se alinean con el fondo del contenedor.
centro : los elementos se alinean en el centro vertical del contenedor.
línea base : los elementos se muestran en la línea base del contenedor.
Estirar : los artículos se estiran para adaptarse al contenedor.
Esta propiedad CSS justifica el contenido , que alinea los elementos horizontalmente y acepta los siguientes valores:
inicio flexible : los elementos se alinean al lado izquierdo del contenedor.
extremo flexible : los elementos se alinean al lado derecho del contenedor.
centrar : los elementos se alinean en el centro del contenedor.
espacio entre : los elementos se muestran con el mismo espacio entre ellos.
espacio alrededor : los elementos se muestran con el mismo espacio alrededor de ellos.
fuente
Enfoque de cuadrícula CSS
fuente
Es necesario seguir la siguiente solución nueva y fácil:
fuente
fuente
Simplemente coloque arriba, abajo, izquierda y derecha en 0.
fuente
Puede lograr esto usando CSS (su elemento
display:inline-grid
+grid-auto-flow: row;
) Grid y Flex Box (elemento padre)display:flex;
),Ver el fragmento a continuación
fuente
Enlace fuente
Ver otros métodos aquí
fuente
La forma más fácil de centrar un div tanto vertical como horizontalmente es la siguiente:
Un ejemplo más :
fuente
Este es un problema relacionado que las personas pueden visitar en esta página cuando buscan: Cuando quiero centrar un div para un gif animado "esperando ..." (cuadrado de 100 px) utilizo:
fuente
Si lo prefiere sin :
flexbox / grid / table
o sin :
vertical-align: middle
Tu puedes hacer:
HTML
CSS
fuente
Esto debería funcionar
fuente
Simple ! ¡Use flex de pantalla en contenedor y margen automático en texto!
Demostración: https://jsfiddle.net/ay95f08g/
Probado: Safari, Chrome, Firefox y Opera en MacOs Mojave. (toda última actualización el 25 de febrero de 2019)
fuente
Hay muchos para hacer lo mismo. puede usar el siguiente método para hacer el div en el medio de la página.
salud !
fuente
El
flexbox
enfoque más simple :La forma más fácil de centrar un solo elemento vertical y horizontalmente es convertirlo en un elemento flexible y establecer su margen en
auto
:Esta extensión de márgenes en cada dirección empujará el elemento exactamente al centro de su contenedor.
fuente