Sabemos que es muy sencillo centrar verticalmente una imagen, o incluso toda la nuestra página, en el navegador, haciendo uso de margin:0 auto (si no sabes de qué estamos hablando es mejor que veas antes este tutorial; ¿pero qué pasa si nuestro site es una película flash o queremos colocar una imagen anunciando mantenimiento o la fecha de inauguración de nuestro site y queremos que esté centrado horizontal y verticalmente?
Bien, este es un sencillo tip que nos permitirá hacerlo sin importar el tamaño del navegador, pero con una salvedad, sólo funciona con elementos de tamaño fijo. Dicho esto, comencemos.
Lo primero que haremos es insertar el elemento que queremos centrar, una imagen por ejemplo, y colocarle un identificador.
Código :
<img src="img/central.jpg" id="central" height=200px width=200px/>
Hecho esto, colocamos en nuestro css:
Código :
#central{ position:absolute; top:50%; left: 50%; margin-top: -100px; margin-left: -100px; }
¡Y eso es todo! Expliquemos el código:
Código :
position:absolute;
Al colocar la propiedad position en absolute hacemos que se rija por las coordenadas absolutas de la página, sin importar si se encuentra o no en algún contenedor.
Código :
top:50%; left:50%;
Empuja nuestro elemento colocando su esquina superior izquierda en el centro de la página.
Código :
margin-top: -100px; margin-left: -100px;
Colocamos un margen negativo al tope (la mitad del alto) y a la izquierda (la mitad del ancho), para colocarlo al centro del elemento. ¡Y ya!

Espero que les sea útil. Un tip sencillo pero con un resultado elegante.

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por Maykel Aburto el 05 de Diciembre de 2012
Por Santiago Gimenez el 21 de Enero de 2013
Les agradezco
Por Eri el 23 de Julio de 2013
Por Centrar texto con HT el 06 de Noviembre de 2013
<div style="background-color: #ff0000; margin-left: 320px; margin-right: 320px; height: 25px;">
correo: carfaja@gmail.com
Por favor me puedes ayuar. De antemano gracias
Centrar texto con HTML-bl :
<div style="background-color: #ff0000; margin-left: 320px; margin-right: 320px; height: 25px;">
correo: carfaja@gmail.com
Por favor me puedes ayuar. De antemano gracias
A ver.
Primero: CSS inline en el HTML. No, no y no. CSS en la hoja de estilos y HTML en la vista.
Segundo: Quita los márgenes.
Tercero: Sigue los pasos como están indicados arriba.
Por cierto, esta técnica ya es obsoleta y hay una forma mucho mejor de lograr lo mismo que descubrí hace unos días. Suponiendo que tu elemento tiene una clase .absolute-centered:
Código :
Con eso deberías tener
Por Marcexl el 06 de Diciembre de 2013
perdon no lei todos los comments pero creo q el codigo hay que ajustar a:
margin-top: -50px;
margin-left: -50px;
a mi me funciona asi....salu2
Por Ramon Chancay el 31 de Marzo de 2014
Por manuel el 04 de Diciembre de 2014
Muy bien explicado.
Por ePortaS el 16 de Enero de 2015
#central{
position:fixed;
bottom:0%;
left: 50%;
margin-top: -175px;
margin-left: -175px;
}
<img src="img/central.jpg" id="central" height=65px width=350px/>
/* Se cambiaron las medidas porque eran las de mi imagen */
Gracias.
Por AlexMM el 04 de Agosto de 2015
position:absolute; se pone en los elementos en los que quieras que las posiciones top/bottom/right/left tengan como origen de coordenadas el primer elemento padre cuyo position no sea static.
En el caso de que no exista ningún elemento padre con position distinto a static, entonces el origen de coordenadas es body. Pero lo habitual es poner un padre con position:relative; para controlar el origen de coordenadas.