Volver al índiceMárgenes exteriores e interiores

Cualquier elemento de una página web puede tener un márgen exterior y un margen interior.

En esta página se tratan los siguientes temas:


Margen exterior: margin

El margen exterior de un elemento es el espacio transparente situado alrededor del borde del elemento, independientemente de que el borde sea o no visible.

La propiedad margin permite establecer el tamaño del margen exterior. Como en el caso de las propiedades border-color, border-width y border-style se pueden escribir de uno a cuatro valores, que se interpretan de la siguiente manera:

Correcto en Firefox Correcto en Internet Explorer Correcto en Chrome
p { 
  margin: 20px; 
  border: red 2px solid; 
}

Esto es un párrafo con borde de color rojo y un margen de 20 pixeles alrededor. Fíjate en que los márgenes superior e inferior de dos párrafos seguidos se solapan.

Esto es un párrafo con borde de color rojo y un margen de 20 pixeles alrededor. Fíjate en que los márgenes superior e inferior de dos párrafos seguidos se solapan.

Correcto en Firefox Correcto en Internet Explorer Correcto en Chrome
p { 
  margin: 0px; 
  border: red 2px solid; 
}

Esto es un párrafo con borde de color rojo y sin margen alrededor. Fíjate en que los párrafos seguidos no tienen separación entre ellos.

Esto es un párrafo con borde de color rojo y sin margen alrededor. Fíjate en que los párrafos seguidos no tienen separación entre ellos.

Las propiedades margin-top, margin-right, margin-bottom y margin-left permiten establecer el tamaño del margen exterior de forma independiente (arriba, derecha, abajo e izquierda respectivamente). Los márgenes exteriores que no se establezcan los elegirá el navegador (normalmente tienen un valor distinto de cero).

Correcto en Firefox Correcto en Internet Explorer Correcto en Chrome
p { 
  margin-left: 20px; 
  border: red 2px solid; 
}

Esto es un párrafo con borde de color rojo y un margen izquierdo de 20 pixeles. El resto de márgenes los elige el navegador.

Esto es un párrafo con borde de color rojo y un margen izquierdo de 20 pixeles. El resto de márgenes los elige el navegador.

Correcto en Firefox Correcto en Internet Explorer Correcto en Chrome
p { 
  margin-left: 0px; 
  border: red 2px solid; 
}

Esto es un párrafo con borde de color rojo y sin margen izquierdo. El resto de márgenes los elige el navegador.

Esto es un párrafo con borde de color rojo y sin margen izquierdo. El resto de márgenes los elige el navegador.

Volver al principio de la página


Centrar con margin-left y margin-right

Para centrar un elemento de bloque, se utilizan las propiedades margin-left y margin-right con el valor auto.

Correcto en Firefox Correcto en Internet Explorer Correcto en Chrome
table { 
  margin-left: auto; 
  margin-right: auto; 
}
Casilla 1 Casilla 2
Casilla 3 Casilla4
Correcto en Firefox Correcto en Internet Explorer Correcto en Chrome
div { 
  border: black 3px solid; 
  margin-left: auto; 
  margin-right: auto; 
  width: 50%; 
}

Este párrafo está dentro de una división.

Nota: Internet Explorer 7 centra correctamente los elementos de bloque mediante las propiedades margin-left y margin-right con el valor auto. Las versiones anteriores lo hacían incorrectamente, como se comenta en la página de diferencias IE7 e IE6.

Volver al principio de la página


Margen interior: padding

El margen interior de un elemento es el espacio transparente situado entre el elemento y el borde. Este espacio se puede de definir aunque el elemento no tenga borde.

La propiedad padding permite establecer el tamaño del margen interior. Como en el caso de las propiedades border-color, border-width y border-style se pueden escribir de uno a cuatro valores, que se interpretan de la siguiente manera:

Correcto en Firefox Correcto en Internet Explorer Correcto en Chrome
p { 
  border: red 2px solid; 
  padding: 10px; 
}

Esto es un párrafo con borde de color rojo y un margen interior de 10 pixeles entre el texto y el borde.

Esto es un párrafo con borde de color rojo y un margen interior de 10 pixeles entre el texto y el borde.

Correcto en Firefox Correcto en Internet Explorer Correcto en Chrome
p { 
  border: red 2px solid; 
  padding: 0px; 
}

Esto es un párrafo con borde de color rojo y sin margen interior entre el texto y el borde.

Esto es un párrafo con borde de color rojo y sin margen interior entre el texto y el borde.

Las propiedades padding-top, padding-right, padding-bottom y padding-left permiten establecer el tamaño del margen interior de forma independiente (arriba, derecha, abajo e izquierda respectivamente). Los márgenes interiores que no se establezcan los elegirá el navegador (normalmente toman el valor cero).

Correcto en Firefox Correcto en Internet Explorer Correcto en Chrome
p { 
  border: red 2px solid; 
  padding-left: 10px; 
}

Esto es un párrafo con borde de color rojo y un margen interior de 10 pixeles entre el texto y el borde. El resto de márgenes interiores los elige el navegador.

Esto es un párrafo con borde de color rojo y un margen interior de 10 pixeles entre el texto y el borde. El resto de márgenes interiores los elige el navegador.

Correcto en Firefox Correcto en Internet Explorer Correcto en Chrome
p { 
  padding-left: 0px; 
  border: red 2px solid; 
}

Esto es un párrafo con borde de color rojo y sin margen interior entre el texto y el borde. El resto de márgenes interiores los elige el navegador.

Esto es un párrafo con borde de color rojo y sin margen interior entre el texto y el borde. El resto de márgenes interiores los elige el navegador.

Volver al principio de la página


Superposición de márgenes exteriores e interiores

Únicamente se superponen los márgenes exteriores de dos elementos contiguos (horizontal o verticalmente). Es decir, el espacio entre dos elementos es igual al mayor de los márgenes exteriores de los elementos.

Correcto en Firefox Correcto en Internet Explorer Correcto en Chrome
p { 
  border: black 2px solid; 
  font-weight: bold; 
  margin: 20px; 
}

Este párrafo tiene un margen de 20 píxeles alrededor suyo. El párrafo siguiente también. El espacio entre ambos párrafos es de 20 píxeles, no de 40 (20+20).

Este párrafo tiene un margen de 20 píxeles alrededor suyo. El párrafo anterior también. El espacio entre ambos párrafos es de 20 píxeles, no de 40 (20+20).

Correcto en Firefox Correcto en Internet Explorer Correcto en Chrome
p {
  border: black 2px solid; 
  font-weight: bold; 
} 

p.e1 { 
  margin: 30px; 
}
p.e2 { 
  margin: 20px; 
}

Este párrafo tiene clase e1, es decir, un margen de 30 píxeles alrededor suyo. El párrafo siguiente tiene clase e2, es decir, un margen de 20 píxeles alrededor suyo. El espacio entre ambos párrafos es de 30 píxeles, no de 50 (30+20).

Este párrafo tiene clase e2, es decir, un margen de 20 píxeles alrededor suyo. El párrafo anterior tiene clase e1, es decir, un margen de 30 píxeles alrededor suyo. El espacio entre ambos párrafos es de 30 píxeles, no de 50 (30+20).


Los márgenes interiores de dos elementos contiguos (horizontal o verticalmente) no se superponen, independientemente de que los elementos lleven borde o no:

Correcto en Firefox Correcto en Internet Explorer Correcto en Chrome
p { 
  border: black 2px solid; 
  font-weight: bold; 
  margin: 0px; 
  padding: 20px; 
} 

Este párrafo tiene un margen interior de 20 píxeles alrededor suyo. El párrafo siguiente también. El espacio entre ambos párrafos es de 40 píxeles (20+20).

Este párrafo tiene un margen interior de 20 píxeles alrededor suyo. El párrafo anterior también. El espacio entre ambos párrafos es de 40 píxeles (20+20).

Correcto en Firefox Correcto en Internet Explorer Correcto en Chrome
p { 
  font-weight: bold; 
  margin: 0px; 
  padding: 20px; 
} 

Este párrafo tiene un margen interior de 20 píxeles alrededor suyo. El párrafo siguiente también. El espacio entre ambos párrafos es de 40 píxeles (20+20).

Este párrafo tiene un margen interior de 20 píxeles alrededor suyo. El párrafo anterior también. El espacio entre ambos párrafos es de 40 píxeles (20+20).


Los márgenes exteriores e interiores de dos elementos contiguos (horizontal o verticalmente) tampoco se superponen, independientemente de que los elementos lleven borde:

Correcto en Firefox Correcto en Internet Explorer Correcto en Chrome
p { 
  border: black 2px solid; 
  font-weight: bold; 
} 
p.e1 { margin: 0px; padding: 20px; }
p.e2 { margin: 20px; padding: 0px; }

Este párrafo tiene clase e1, es decir, un margen interior de 20 píxeles alrededor suyo. El párrafo siguiente tiene clase e2, es decir, un margen exterior de 20 píxeles alrededor suyo. El espacio entre ambos párrafos es de 40 píxeles (20+20).

Este párrafo tiene clase e2, es decir, un margen exterior de 20 píxeles alrededor suyo. El párrafo anterior tiene clase e1, es decir, un margen interior de 20 píxeles alrededor suyo. El espacio entre ambos párrafos es de 40 píxeles (20+20).

Correcto en Firefox Correcto en Internet Explorer Correcto en Chrome
p {
  font-weight: bold; 
}

p.e1 { 
  margin: 0px; 
  padding: 20px; 
} 

p.e2 { margin: 20px; padding: 0px; }

Este párrafo tiene clase e1, es decir, un margen interior de 20 píxeles alrededor suyo. El párrafo siguiente tiene clase e2, es decir, un margen exterior de 20 píxeles alrededor suyo. El espacio entre ambos párrafos es de 40 píxeles (20+20).

Este párrafo tiene clase e2, es decir, un margen exterior de 20 píxeles alrededor suyo. El párrafo anterior tiene clase e1, es decir, un margen interior de 20 píxeles alrededor suyo. El espacio entre ambos párrafos es de 40 píxeles (20+20).

Volver al principio de la página


Los márgenes exteriores e interiores de dos elementos anidados tampoco se superponen, independientemente de que los elementos lleven borde:

Correcto en Firefox Correcto en Internet Explorer Correcto en Chrome
p { 
  border: black 2px solid; 
  font-weight: bold;
  margin: 20px; 
  padding: 0px; 
} 
div { border: red 2px solid; padding: 20px }

Este párrafo tiene un margen exterior de 20 píxeles alrededor suyo. El párrafo está dentro de una división con margen interior de 20 píxeles. La separación entre bordes es de 40 píxeles (20+20).

Correcto en Firefox Correcto en Internet Explorer Correcto en Chrome
p { 
  font-weight: bold;
  margin: 20px; 
  padding: 0px; 
} 
div { padding: 20px }

Este párrafo tiene un margen exterior de 20 píxeles alrededor suyo. El párrafo está dentro de una división con margen interior de 20 píxeles. El espacio alrededor es de 40 píxeles (20+20).

Volver al principio de la página


Márgenes exteriores e interiores de <html> y <body>

Los márgenes exteriores e interiores de <html> y <body> no se superponen ya que son elementos anidados, como puede comprobarse en la siguiente página de ejemplo o en las siguientes capturas de pantalla de esa página en Firefox. En esa página, tanto <html> como <body> tienen un margin y padding de 10px, por lo que espacio alrededor del contenido es de 40px en total (10px+10px+10px+10px).

Nota: Internet Explorer 7 representa correctamente los márgenes exteriores e interiores de <html> y <body>. Las versiones anteriores lo hacían incorrectamente, como se comenta en la página de diferencias entre IE7 e IE6.

Correcto en Firefox Correcto en Internet Explorer Correcto en Chrome FF - margin y padding en html y body margin y padding en html y body

En las capturas anteriores:

Es importante señalar que la imagen de fondo (Cuadricula transparente) de la página no se coloca en la esquina superior izquierda de la ventana y se repite a partir de esa posición, sino que se coloca desplazada 10px a la derecha y hacia abajo de la esquina superior izquierda y se repite a partir de esa posición debido al margin de 10px de <html>, como se comenta en la lección de fondos.


Los navegadores aplican de forma predeterminada algunos de estos márgenes, como se observa en el ejemplo siguiente. El borde de color teal que se ve en el lado izquierdo, superior y derecho se debe a márgenes de algunos elementos.

Correcto en Firefox Correcto en Internet Explorer Correcto en Chrome
html {
  background: url("cuadricula.png") teal;  
}

body {
  background: url("cuadricula.png") white;  
}

pre {
}
ERROR (no puede mostrarse el objeto)

Concretamente, los navegadores aplican margin en px a <body>. Para verlo, lo podemos poner a cero:

Correcto en Firefox Correcto en Internet Explorer Correcto en Chrome
html {
  background: url("cuadricula.png") teal;  
}

body {
  background: url("cuadricula.png") white;  
  margin: 0px;
}

pre {
}
ERROR (no puede mostrarse el objeto)

El margen superior se debe al margin (en em) del elemento <pre>. Para verlo, lo podemos poner a cero:

Correcto en Firefox Correcto en Internet Explorer Correcto en Chrome
html {
  background: url("cuadricula.png") teal;  
}

body {
  background: url("cuadricula.png") white;  
  margin: 0px;
}

pre {
  margin: 0px;
}
ERROR (no puede mostrarse el objeto)

Volver al principio de la página

Esta página forma parte del curso "Páginas web HTML / XHTML y hojas de estilo CSS" disponible en http://www.mclibre.org
Autor: Bartolomé Sintes Marco
Última modificación: 25 de octubre de 2011

Creative Commons License
Esta obra está bajo una licencia de Creative Commons Reconocimiento-CompartirIgual 3.0 España.