Seleccionar página
octubre 8, 2018

4 Métodos para centrar verticalmente con CSS

por | CSS, Maquetación

Centrar verticalmente y horizontalmente con CSS

En este post de hoy te voy a mostrar algunos métodos actuales para centrar verticalmente con CSS cualquier elemento en la pantalla y también horizontalmente. En los tres primeros ejemplos voy a utilizar propiedades y métodos para navegadores actuales. Como alternativa te mostraré un cuarto ejemplo que utiliza propiedades que si podrás aplicar en navegadores más antiguos ( explorer10 o similares).

centrar verticalmente con CSS. Ejemplo

Para estos ejemplos de alineación vertical utilizaré estas dos propiedades: transform, flexbox. Además de la unidad de medida vh. Todas ellas pueden utilizarse en los siguientes browsers:

Soporte de la propiedad Transform en diferentes navegadores

https://caniuse.com/

1. Centrar verticalmente con Transform:

 

Explicación

Con 100vh le indicamos que nuestro contenedor mida la altura de nuestro dispositivo. Si nuestro monitor mide 800px de altura está será la medida de nuestra capa.

Es muy importante agregar el atributo min-height para indicar una altura mínima. Ya que si cargamos este ejemplo en un móvil en apaisado la capa sólo mediría 320px de altura. Con min-height nos aseguramos que nunca mida menos de 600px.

Para el hijo utilizamos position:absolute. Con Top:50% y left:50% posicionamos la esquina superior izquierda de nuestra caja en el centro de la pantalla. Y con transform:translate(-50%,-50%). Estos porcentajes hacen referencia a la medida de la caja. Es decir si la caja mide 500px de ancho, la estaríamos desplazando 250px a la izquierda. Si mide 100px de altura la desplazamos 50px hacia arriba. Con ello conseguimos posicionarla en el centro.

2. Centrar verticalmente con Flexbox:

Soporte propiedad flex

https://caniuse.com/

Seguimos utilizando la unidad 100vh para el contenedor padre. También utilizamos la propiedad display:flex. La propiedad flex es una de las últimas maravillas de CSS que nos facilitan mucho la vida a los maquetadores y diseñadores. Ya que resulta muy sencillo trabajar y modular el espacio. Si te interesa conocer más acerca de ella te dejo puedes consultar esta pequeña guía:

Además si quieres practicar con ella también te puede interesar esta web. Es un pequeño juego que te ayudará a entender como funciona: https://flexboxfroggy.com/#es

En mi ejemplo  con la propiedad align-items: center alineamos el contenido en el centro de la pantalla y la propiedad justify-content: center la alineamos horizontalmente.

3. Centrar verticalmente con display:table

Para centrar verticalmente con este este método tenemos que agregar display:table-cell al contenedor hijo. Así conseguiremos que se comporte como una celda de las antiguas tablas y podemos agregar la propiedad  vertical-align: middle.

4. Centrar verticalmente con position absolute y márgenes negativos

Este es el método que más navegadores soportan. El inconveniente de este método es que tenemos que trabajar con medidas fijas para el alto. Para centrar el contenedor hijo tenemos que restar la mitad de su altura y anchura con la propiedad margin-top y margin-left

¿Qué te han parecido estos métodos?  ¿Conoces otros mejores? 

Tanto si te han gustado como si conoces otros mejores métodos para alinear verticalmente con CSS puedes dejar tu opinión en los comentarios. Espero que los puedas utilizar en tus proyectos 🙂

Anto Fernández

Anto Fernández

Mi nombre es Anto Fernández y gestiono este blog. En el puedes encontrar recursos que yo mismo he generado de tereceros acerca de diseño y maquetación web.

2 Comentarios

  1. Gerard

    Probé el primero, y con eso tuve, muchas gracias.

    Responder

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

NO TE PIERDAS NADA

SUSCRÍBETEA MI LISTA

Recibe en tu correo los nuevos post y contenidos de mi blog.

Revisa tu correo, sólo queda que confirmes tu suscripción al blog.