Tabla de contenidos
Existen diversas formas de centrar horizontal y verticalmente un elemento en un contenedor mediante CSS. Cada método es adecuado para una situación concreta y, por ello, es necesario saber cómo funcionan todas las propiedades para reconocer fácilmente qué técnica utilizar en cada caso.
A continuación se describe cómo se puede realizar el centrado de algunos elementos mediante cajas flexibles, con la propiedad «transform«, con las propiedades «line-height» y «text-align» y con la propiedad vertical-align.
Este es el método más útil porque funciona para todos los elementos que se posicionen dentro de un contenedor. Por tanto, es válido para imágenes, textos, vídeos, etc. Sin embargo, para comprender cómo funciona es necesario tener conocimientos sobre el modelo de caja flexible o flexbox.
Para utilizar las propiedades de flexbox es necesario crear un contenedor y declararle la propiedad «display: flex«. Para centrar horizontal y verticalmente el contenido utilizaremos las propiedades «justify-content: center» y «align-items:center«.
div{ height: 200px; background-color: #EEE; display:flex; justify-content: center; align-items: center; }
0
Mediante las propiedades line-height y text-align podemos alinear únicamente textos. Así que este método sólo va a ser válido para el centrado de párrafos, encabezados, etc.
div { height: 200px; background-color: #EEE; text-align: center; } div h1 { line-height: 200px; }
dark
Mediante este método se puede alinear tanto vertical como horizontalmente imágenes y contenedores. No es válido para la alineación de textos ya que no tiene en cuenta el tamaño de la letra.
div { height: 300px; background-color: #EEE; position: relative; } div img{ position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); -webkit-transform: translate(-50%, -50%); }
dark
Con esta técnica podemos alinear un texto a una imagen de forma vertical. Esta propiedad admite los valores top, middle y bottom, entre otros valores.
img{ vertical-align: middle; }
dark
Vamos a alinear un texto en un div con la propiedad vertical-align. Hay que tener en cuenta que esta propiedad no se comporta de la misma manera con todos los elementos. En este caso, haremos uso de las reglas de estilo «display: inline-table» y «display: table: cell».
div{ height: 200px; width: 200px; background-color: #EEE; display: inline-table; } p{ display: table-cell; vertical-align: middle; }
dark
Las imágenes se pueden alinear a la izquierda, derecha o centro insertándolas dentro de un div e indicando la propiedad text-align correspondiente.
.a{text-align: left;} .b{text-align: center;} .c{text-align: right;}
dark
Cuando el tamaño del texto no coincide con el tamaño del checkbox, estos dos elementos no quedan alineados verticalmente. Para conseguir esta alineación utilizaremos «vertical-align:middle» y definiremos el tamaño del texto a las dos etiquetas, tal y como se muestra a continuación.
label, input{ font-size: 28px; vertical-align: middle; }
dark