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 flashreloco el 25 de Septiembre de 2007
Por fearlex el 27 de Septiembre de 2007
Por The Fricky! el 27 de Septiembre de 2007
fearlex_blog :
Las medidas son sólo de ejemplo, lo único necesario es que el elemento sea de un tamaño fijo. Por eso puse al final que los márgenes izquierdo y superior son de la mitad del ancho y del alto respectivamente. Si tu elemento es de 300 * 100, colocarás en los márgenes 150 y 50 respectivamente y funciona igual.
Por ryuz el 27 de Septiembre de 2007
Por paberu el 27 de Septiembre de 2007
buen tip
Por Luis Ulloa el 27 de Septiembre de 2007
Por crystalsys el 27 de Septiembre de 2007
margin-left:auto;
margin-right:auto;
Esto debido a que al poner un margen negativo las barras de scroll no se mostraran adecuadamente.
Por tomasdev el 29 de Septiembre de 2007
Se me hubieran ocurrido mil y un cosas pero nunca esto...
GRACIAS!!
Por Cascu el 21 de Diciembre de 2008
Por matias el 30 de Enero de 2009
Por tomasdev el 02 de Febrero de 2009
Por matias el 03 de Febrero de 2009
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Test Centrado</title>
<style type="text/css">
div{
width: 200px;
height: 1000px;
position: absolute;
top: 50%;
left: 50%;
margin-top: -500px;
margin-left: -150px;
border: solid 1px red
}
</style>
</head>
<body>
<div><!-- centrado --></div>
</body>
</html>
Por matias el 06 de Febrero de 2009
Por chekeron el 24 de Febrero de 2009
Por yop el 13 de Marzo de 2009
Por yop el 16 de Marzo de 2009
Por Joaquin el 24 de Febrero de 2010
¡Muchas gracias!
Por vell el 09 de Marzo de 2010
Por joseph el 26 de Abril de 2010
pues no me funciona
gracias
Por martin el 19 de Agosto de 2010
Por laura el 28 de Agosto de 2010
Por Sandro el 04 de Febrero de 2011
Por Pris el 03 de Julio de 2011
Por Roa el 18 de Abril de 2012
+1
Por Ignacio el 20 de Abril de 2012
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: [email protected]
Por favor me puedes ayuar. De antemano gracias
Por The Fricky! el 19 de Noviembre de 2013
Centrar texto con HTML-bl :
<div style="background-color: #ff0000; margin-left: 320px; margin-right: 320px; height: 25px;">
correo: [email protected]
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.