> Faqs > Centrar texto vertical y horizontalmente

Centrar texto vertical y horizontalmente

No consigo centrar el texto verticalmente. ¿Cómo podría conseguirlo?.

CÓDIGO HTML

<body>
    <div>
        <a href="#">INICIO</a>        
    </div>    
</body>

CÓDIGO CSS

a{
    display: block;
    float: left;
    width: 5em;
    height: 3em;
    background-color: yellow;
    text-align: center;
    border: 1px solid;  
}

Respuestas

Central verticalmente siempre fue un problema en CSS... hasta que llegó Flexbox.

Te voy a dar una solución basada en flexbox, pero te recomiendo que leas a fondo sobre esa utilidad de CSS para que entiendas bien cómo realizar las alineaciones verticales u horizontales y puedas sacarle el mejor partido.

a {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 5em;
    height: 3em;
    background-color: yellow;
    border: 1px solid;  
}
  • Lo más importante para comenzar a usar Flexbox lo tienes en el display: flex
  • align-items: center; te sirve para alinear verticalmente en este caso y justify-content: center; te está realizando la alineación horizontal
  • Luego text-align ya no te hace falta, porque la alineación horizontal te la da justify-content en este caso

Puedes aprender sobre Flexbox en el manual de flexbox. Además tienes un artículo dedicado a la alineación vertical con CSS.

Lucas
139 1 8 5

Para centrar el texto verticalmente puedes usar la respuesta de Lucas y el artículo ampliado para centrar verticalmente.

Para centrar horizontalmente usamos varias alternativas:

  • En contenedores block, puedes usar el atributo text-align de CSS de toda la vida. No hay misterio porque venimos haciendo eso toda la vida.
.contenedor {
    display: block;
    text-align: center;
}

Eso centra el contenido que haya dentro del contenedor.

  • Ahora bien, si necesitas centrar el contenedor en si mismo, puedes usar margin: 0 auto;.
.contenedor-centrado {
    margin: 0 auto;
}

El valor 0 es el margin arriba y abajo. Lo puedes cambiar. Lo importante es el valor auto a la izquierda y la derecha.

  • También puedes centrar horizontalmente con flex. Usas las mismas propiedades que comentaba Lucas, align-items y justify-content. Si la distribución del contenedor flex es filas, align-items centra en la vertical mientras que justify-content centra en la horizontal. Ahora bien, si la distribución del contenedor flex es en el eje de la vertical (columnas), entonces align-items centra en la horizonatal y justify-content centra en la vertical.

Si quieres centrar a la vez horizontalmentr y verticalmente, simplemente se trata de usar ambas propiedades a la vez.

.contenedor {
    display: flex;
    justify-content: center;
    align-items: center;
}
Sergio
366 11 32 13