Todo en CSS es una caja. Textos, imágenes, botones... ¡Todo! El Modelo de Caja explica cómo se estructura cada elemento: contenido, relleno, borde y margen. Entenderlo es clave para dominar CSS.
De adentro hacia afuera:
El texto, imagen o contenido real del elemento. Su tamaño se define con width y height.
Espacio dentro del elemento, entre el contenido y el borde. Respeta el color de fondo.
Una línea alrededor del elemento. Separa el padding del margen.
Espacio fuera del elemento. Crea distancia entre elementos. Es transparente.
Visualización:
┌─────────────────────────────────┐
│ MARGEN (margin) │
│ ┌─────────────────────────────┐ │
│ │ BORDE (border) │ │
│ │ ┌─────────────────────────┐ │ │
│ │ │ PADDING (padding) │ │ │
│ │ │ ┌─────────────────────┐ │ │ │
│ │ │ │ CONTENIDO (content) │ │ │ │
│ │ │ └─────────────────────┘ │ │ │
│ │ └─────────────────────────┘ │ │
│ └─────────────────────────────┘ │
└─────────────────────────────────┘
Crea espacio dentro del elemento. Respeta el color de fondo.
div {
padding: 20px; /* 20px en todos los lados */
}
div {
padding-top: 10px;
padding-right: 20px;
padding-bottom: 10px;
padding-left: 20px;
}
/* Forma corta: arriba, derecha, abajo, izquierda */
div {
padding: 10px 20px 10px 20px;
}
/* Aún más corta: vertical, horizontal */
div {
padding: 10px 20px;
}
Crea espacio fuera del elemento. Es transparente y crea distancia entre elementos.
div {
margin: 20px; /* 20px en todos los lados */
}
div {
margin-top: 10px;
margin-right: 20px;
margin-bottom: 10px;
margin-left: 20px;
}
/* Forma corta */
div {
margin: 10px 20px;
}
/* Centrar horizontalmente */
div {
margin: 0 auto; /* 0 arriba/abajo, auto izquierda/derecha */
}
¡Diferencia clave!
padding: Espacio DENTRO. Respeta el fondo.margin: Espacio FUERA. Es transparente.Una línea alrededor del elemento. Puedes personalizar su estilo, grosor y color.
/* Borde simple */
div {
border: 2px solid black;
}
/* Desglosado */
div {
border-width: 2px;
border-style: solid;
border-color: black;
}
/* Bordes individuales */
div {
border-top: 2px solid red;
border-right: 2px dashed blue;
border-bottom: 2px dotted green;
border-left: 2px double yellow;
}
Estilos de borde:
solid: Línea continua.dashed: Línea punteada.dotted: Puntos.double: Línea doble.none: Sin borde.Redondea las esquinas del elemento.
/* Todas las esquinas */
div {
border-radius: 10px;
}
/* Esquinas individuales */
div {
border-top-left-radius: 10px;
border-top-right-radius: 20px;
border-bottom-right-radius: 10px;
border-bottom-left-radius: 20px;
}
/* Hacer un círculo */
div {
width: 100px;
height: 100px;
border-radius: 50%;
}
Define el tamaño del contenido del elemento.
div {
width: 300px; /* Ancho fijo */
height: 200px; /* Alto fijo */
}
div {
width: 100%; /* 100% del padre */
height: auto; /* Automático según contenido */
}
div {
max-width: 500px; /* Ancho máximo */
min-width: 200px; /* Ancho mínimo */
}
Controla si el padding y border se incluyen en el ancho y alto total.
/* Por defecto: content-box */
div {
width: 300px;
padding: 20px;
/* Ancho total: 300px + 40px (padding) = 340px */
}
/* Mejor: border-box */
div {
box-sizing: border-box;
width: 300px;
padding: 20px;
/* Ancho total: 300px (padding incluido) */
}
/* Aplicar a todos los elementos */
* {
box-sizing: border-box;
}
¡Consejo profesional! Usa box-sizing: border-box en todos tus proyectos. Hace que los cálculos de tamaño sean mucho más predecibles.
<div> con padding: 20px y un color de fondo. Observa cómo el padding crea espacio dentro.margin: 30px al mismo <div>. Observa cómo crea espacio fuera.border: 2px solid black.border-radius: 15px.width: 100px, height: 100px, y border-radius: 50%.<div> lado a lado y usa margin: 0 auto para centrar uno de ellos.box-sizing: border-box globalmente y observa la diferencia en los cálculos de tamaño.