Menu

Margin vs padding en CSS: la diferencia, lado a lado

El padding es el espacio dentro del borde de un elemento; el margin es el espacio fuera de él. Míralos en la misma caja, lado a lado y en vivo, y aprende cuál usar para fondos, áreas de clic, espacio entre elementos y centrado.

Esta página incluye editores ejecutables: edita, ejecuta y ve el resultado al instante.

La diferencia en una imagen

El padding está dentro del borde. El margin está fuera. Las dos cajas de abajo tienen el mismo contenido y el mismo valor de 24px; solo cambia la propiedad. Lo gris es el contenedor que está detrás.

Con padding, los 24px son azules: forman parte de la caja, dentro del borde, y la caja crece. Con margin, los 24px son grises: la caja queda ajustada a su texto y el espacio de afuera aleja los bordes del contenedor.

Prueba los dos en una caja

Mueve los dos controles deslizantes. El padding agranda la caja azul; el margin aleja la caja de los bordes grises sin cambiarla.

Observa la línea del tamaño: cambia cuando mueves el control del padding y se queda igual cuando mueves el del margin.

Margin vs padding de un vistazo

PaddingMargin
DóndeDentro del bordeFuera del borde
FondoMuestra el fondo del elementoSiempre transparente
Parte del área de clicSíNo
Se suma al tamaño del elementoSí, con content-boxNo
Puede ser autoNoSí (margin: 0 auto centra)
Puede ser negativoNoSí
Los valores verticales colapsanNuncaSí, los márgenes verticales adyacentes colapsan
Porcentajes relativos aEl ancho del bloque contenedorEl ancho del bloque contenedor
Uso típicoEspacio dentro de botones, tarjetas, inputsEspacio entre elementos, centrado

Cada propiedad tiene su propia página con todos los detalles: padding en CSS y margin en CSS.

Cuál usar

Hazte una pregunta: ¿el espacio pertenece al elemento o está entre elementos?

  • El aire alrededor del texto de un botón, el interior de una tarjeta, el espacio entre el texto de un input y su borde: padding. Toma el fondo y agranda el objetivo.
  • El espacio entre dos párrafos, entre tarjetas, alrededor de una sección: margin, o gap cuando el padre es un contenedor flex o grid.

El área de clic es donde más importa la elección. Los dos enlaces de abajo ocupan el mismo espacio en la página, pero el espacio del primero es padding y el del segundo es margin. Solo el primero es fácil de tocar:

El contorno ámbar punteado es el borde del elemento, que es el área que responde a clics y toques. El margin alrededor del segundo enlace es espacio vacío que no hace nada.

Espacio entre elementos: margin o gap

Para una fila o una cuadrícula de elementos, gap en el padre flex o grid suele ser más limpio que poner márgenes en cada hijo: solo va entre los elementos, nunca antes del primero ni después del último, así que no hay nada que deshacer.

Aquí el contenedor gris usa padding (espacio dentro de él, gris), los elementos usan padding (espacio dentro de cada uno, verde) y gap se encarga del espacio entre ellos.

Errores comunes

  • Usar margin para un espacio que debería tener color. El margin es transparente. Si el espacio debe mostrar el fondo, es padding.
  • Usar margin para agrandar un enlace. El área de clic termina en el borde; usa padding.
  • Esperar que dos márgenes verticales de 20px den 40px. Los márgenes verticales adyacentes colapsan a 20px. El padding nunca colapsa.
  • Probar padding: auto para centrar. Solo margin acepta auto.
  • Olvidar que el padding agranda la caja. Agrega box-sizing: border-box para que width lo incluya.

Preguntas frecuentes

¿Qué diferencia hay entre margin y padding?

El padding es el espacio entre el contenido de un elemento y su borde, dentro del elemento. El margin es el espacio fuera del borde, entre el elemento y sus vecinos. El padding muestra el fondo del elemento; el margin siempre es transparente.

¿Cuándo uso padding en lugar de margin?

Usa padding para el espacio que pertenece al elemento: el aire alrededor del texto de un botón, el interior de una tarjeta, todo lo que deba compartir el fondo o ser clicable. Usa margin (o gap en flex y grid) para el espacio entre elementos separados.

¿El padding o el margin aumentan el tamaño del elemento?

El padding sí, con el box-sizing: content-box por defecto: se suma al ancho y al alto. El margin nunca se suma al tamaño del elemento; agrega espacio a su alrededor (un bloque con width: auto incluso se vuelve más angosto, porque sus márgenes toman parte del ancho disponible). Con box-sizing: border-box, el padding se toma de dentro del ancho.

¿El padding puede ser negativo como el margin?

No. Un padding negativo es inválido y se ignora, mientras que los márgenes negativos están permitidos y pueden hacer que los elementos se superpongan. El padding tampoco puede ser auto, y por eso para centrar se usa margin: 0 auto.

Coddy programming languages illustration

Aprende a programar con Coddy

COMENZAR