¿Quieres registrarte?

Centrar un elemento horizontal y verticalmente con CSS

25 de Septiembre del 2007
26,300 visitas
css

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! :lol:

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

Enviar a twitter Enviar a facebook


También te interesa


Etiquetas css

Comentarios | Enviar un comentario
Muy buen tip The Fricky! !!!
Por: flashreloco
Solo aclarar que para que este tip funcione el elemento a centrar tiene que que tener un width y height como lo de pusistes en la etiqueta img height=200px width=200px, de lo contrario no funcionara, saludos
Por: fearlex_blog

fearlex_blog :

Solo aclarar que para que este tip funcione el elemento a centrar tiene que que tener un width y height como lo de pusistes en la etiqueta img height=200px width=200px, de lo contrario no funcionara, saludos

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: The Fricky!
Este tip ya existía
Por: ryuz
muy bueno, si usaba position absolute para fijar al 100% mi swf en el navegador, pero ahora con DW cs3 ya no es necesario para swf.

buen tip XD
Por: paberu_blog
Muy Interesante seguro lo aplicare en mis proyectos Gracias
Por: Luis Ulloa_blog
Si bien, no creo que venga al caso, para poder centrar horizontalmente un objeto sin importar el ancho que tenga, podemos usar

margin-left:auto;
margin-right:auto;

Esto debido a que al poner un margen negativo las barras de scroll no se mostraran adecuadamente.
Por: crystalsys_blog
No se si lo has obtenido de algun lado, pero mis felicitaciones van hacia ti... Tip inteligente ^^
Se me hubieran ocurrido mil y un cosas pero nunca esto...
:D

GRACIAS!!
Por: tomasdev
Cosa util
Por: Cascu-blog
esta muy bien la logica, pero tuve problemas cuando el alto sobrepasa el alto del navegador, si no se entiende prueben dandole un height de 800px y margin-top: -400px
Por: matias-blog
display:block matias
Por: tomasdev
no resulta con display block, aqui les dejo el codigo:

<!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-blog
correccion: margin-left: -100px;
Por: matias-blog
Sos un groso, me diste la solucion exacta para centrar un gif dentro de un lightbox. Saludos capo!!!!
Por: chekeron-blog
Como lo puedo hacer para centrar una palabra en un cuadro de 85px por 35px, de forma horizontal y vertical, el largo lo centro pero el ancho no me resulta. Saludos
Por: yop-blog
ya lo hice XD
Por: yop-blog
Macho, genial idea, me ha salvado la vida para una web que llevo entre manos y además lo usaré en otras ocasiones.
¡Muchas gracias!
Por: Joaquin-blog
funciona con cualquier elemento y a cualquier distancia solo con modificar un poco el codigo
Por: vell-blog
Deja un comentario
IMPORTANTE

Recuerda ser respetuoso, no insultes a otras personas, ni uses palabrotas, hay una persona al otro lado de la pantalla.

Habla bien, NO ESCRIBAS EN MAYUSCULA TODO, no escribas como en un SMS, evita cosas como "ke", "x q" y demás abreviaciones.

Aquí funcionan las etiquetas de los foros, puedes usar [b] para negrita, [img] para las imágenes, [url] para los enlaces, etc.

Si tienes preguntas técnicas, envíalas mejor al foro.