Márgenes y padding son tus mejores amigos para crear espacios en tu diseño. Aunque parecen similares, tienen diferencias cruciales. Dominarlos te hará un diseñador web mucho mejor.
Esta es la diferencia más importante que debes entender:
Dentro del elemento. Crea espacio entre el contenido y el borde.
Fuera del elemento. Crea distancia entre elementos.
/* Ejemplo visual */
div {
background-color: lightblue;
padding: 20px; /* Espacio DENTRO (azul claro) */
margin: 20px; /* Espacio FUERA (transparente) */
}
Hay varias formas de especificar padding. Elige la que prefieras.
/* Un valor: todos los lados */
div {
padding: 20px;
/* arriba: 20px, derecha: 20px, abajo: 20px, izquierda: 20px */
}
/* Dos valores: vertical, horizontal */
div {
padding: 10px 20px;
/* arriba/abajo: 10px, izquierda/derecha: 20px */
}
/* Tres valores: arriba, horizontal, abajo */
div {
padding: 10px 20px 15px;
/* arriba: 10px, izquierda/derecha: 20px, abajo: 15px */
}
/* Cuatro valores: arriba, derecha, abajo, izquierda (clockwise) */
div {
padding: 10px 20px 15px 5px;
}
/* Especificar cada lado */
div {
padding-top: 10px;
padding-right: 20px;
padding-bottom: 15px;
padding-left: 5px;
}
Margin usa exactamente la misma sintaxis que padding.
/* Un valor: todos los lados */
div {
margin: 20px;
}
/* Dos valores: vertical, horizontal */
div {
margin: 10px 20px;
}
/* Tres valores: arriba, horizontal, abajo */
div {
margin: 10px 20px 15px;
}
/* Cuatro valores: arriba, derecha, abajo, izquierda */
div {
margin: 10px 20px 15px 5px;
}
/* Especificar cada lado */
div {
margin-top: 10px;
margin-right: 20px;
margin-bottom: 15px;
margin-left: 5px;
}
Aquí hay patrones que usarás constantemente:
div {
width: 300px;
margin: 0 auto; /* 0 arriba/abajo, auto izquierda/derecha */
}
button {
padding: 10px 20px; /* Espacio dentro del botón */
margin: 5px; /* Distancia entre botones */
}
p {
padding: 15px; /* Espacio dentro del párrafo */
margin-bottom: 20px; /* Distancia con el siguiente elemento */
}
.card {
padding: 20px; /* Espacio dentro */
margin: 10px; /* Distancia entre tarjetas */
border: 1px solid #ccc;
border-radius: 8px;
}
Cuando dos márgenes se tocan verticalmente, se fusionan en el mayor de los dos.
div {
margin-bottom: 20px;
}
p {
margin-top: 30px;
}
/* El espacio entre div y p es 30px, NO 50px */
/* Se colapsa al valor mayor */
¡Importante! El colapso de márgenes solo ocurre:
Los navegadores aplican márgenes y padding por defecto. A menudo los reseteas.
/* Reset global */
* {
margin: 0;
padding: 0;
}
/* O más específico */
body, h1, h2, p, ul {
margin: 0;
padding: 0;
}
Puedes usar diferentes unidades para márgenes y padding:
div {
padding: 20px; /* Píxeles (fijo) */
margin: 2em; /* Em (relativo al tamaño de fuente) */
}
div {
padding: 5%; /* Porcentaje (relativo al padre) */
margin: 1rem; /* Rem (relativo a la raíz) */
}
Unidades recomendadas:
px: Para valores fijos y pequeños.em: Para valores relativos al elemento.rem: Para valores relativos a la raíz (mejor para responsive).%: Para valores relativos al padre.<div> con color de fondo y aplica padding: 20px a cada uno. Observa cómo el espacio está DENTRO.margin: 15px a los mismos divs. Observa cómo crea distancia ENTRE ellos.width: 200px y margin: 0 auto para centrarlo horizontalmente.padding: 10px 20px (vertical, horizontal).padding: 20px, margin: 10px, border: 1px solid #ccc, y border-radius: 8px.margin-bottom: 20px en el primero. Observa el colapso de márgenes.* { margin: 0; padding: 0; }.