Parte 3: CSS: el estilo · Lección 13 de 18

#13 El modelo de caja

Todo en una web es una caja: contenido, relleno, borde y margen. Entiéndelo y controlarás el espacio de tus páginas. 40 min

Todo es una caja

Esta es la idea más importante de CSS: cada elemento de la página es una caja rectangular. Los títulos, los párrafos, las imágenes, los enlaces… todo. Incluso un círculo es, por dentro, una caja con las esquinas muy redondeadas.

Y cada caja tiene cuatro capas, de dentro afuera:

text
┌─────────────────────────────────────┐
│ margin (margen): espacio exterior   │
│  ┌───────────────────────────────┐  │
│  │ border (borde)                │  │
│  │  ┌─────────────────────────┐  │  │
│  │  │ padding (relleno)       │  │  │
│  │  │  ┌───────────────────┐  │  │  │
│  │  │  │     CONTENIDO     │  │  │  │
│  │  │  └───────────────────┘  │  │  │
│  │  └─────────────────────────┘  │  │
│  └───────────────────────────────┘  │
└─────────────────────────────────────┘
CapaQué esComparación
ContenidoEl texto o la imagenEl cuadro
padding (relleno)Espacio entre el contenido y el bordeEl paspartú blanco alrededor del cuadro
border (borde)La línea que rodea la cajaEl marco
margin (margen)Espacio entre esta caja y las demásLa distancia en la pared hasta el siguiente cuadro
Las capas de una caja

Tab añade una sangría. Pulsa Escape y luego Tab para salir del editor.

Resultado

padding y margin

Las dos funcionan igual. Puedes dar un valor a cada lado:

css
.caja {
  padding-top: 10px;
  padding-right: 20px;
  padding-bottom: 10px;
  padding-left: 20px;
}

O, mucho más habitual, usar la forma corta, con uno a cuatro valores:

EscribesSignifica
padding: 20px;20px en los cuatro lados
padding: 10px 20px;10px arriba y abajo, 20px a los lados
padding: 10px 20px 30px;10px arriba, 20px a los lados, 30px abajo
padding: 10px 20px 30px 40px;Arriba, derecha, abajo, izquierda

Cuándo usar cada uno

  • padding cuando quieres que el contenido respire dentro de su caja (un botón, una tarjeta con fondo).
  • margin cuando quieres separar una caja de las demás.

Bordes

La forma corta de border lleva tres cosas: grosor, estilo y color.

Bordes y esquinas

Tab añade una sangría. Pulsa Escape y luego Tab para salir del editor.

Resultado
  • border-radius redondea las esquinas. Con 50% en una caja cuadrada, sale un círculo (perfecto para fotos de perfil).
  • También puedes poner un borde solo en un lado: border-bottom: 2px solid gray;.

Ancho y alto

  • width: ancho del contenido.
  • height: alto. Mejor no fijarlo en cajas con texto: si el texto crece, se sale de la caja. Deja que el alto se adapte solo.
  • max-width: ancho máximo. La caja puede encoger si no cabe (en un móvil), pero nunca pasará de ahí.
css
.articulo {
  max-width: 700px; /* Mejor que width: en pantallas pequeñas se adapta */
}

box-sizing: border-box

Aquí viene una sorpresa. Mira estas dos cajas con width: 200px:

¿Cuánto mide una caja?

Tab añade una sangría. Pulsa Escape y luego Tab para salir del editor.

Resultado

Por defecto, width mide solo el contenido: el padding y el borde se suman por fuera. La primera caja ocupa 200 + 40 + 10 = 250px. Con box-sizing: border-box, width incluye el padding y el borde: la caja mide exactamente los 200px que has pedido.

Como esto es mucho más fácil de manejar, casi todas las webs empiezan su CSS con esta regla, que lo aplica a todos los elementos:

css
*,
*::before,
*::after {
  box-sizing: border-box;
}

El asterisco * es el selector universal: selecciona todos los elementos. Ponlo al principio de tus hojas de estilo y olvídate del problema.

Centrar una caja

Para centrar horizontalmente un bloque, dale un ancho máximo y márgenes laterales automáticos:

Centrar con margin auto

Tab añade una sangría. Pulsa Escape y luego Tab para salir del editor.

Resultado

margin: 0 auto significa «0 arriba y abajo, y automático a los lados»: el navegador reparte el espacio sobrante a partes iguales. Es el patrón que usan casi todas las webs para su contenido principal.

Los márgenes que ya existían

¿Te has fijado en que los títulos y párrafos ya tienen espacio entre ellos y en que la página no empieza pegada al borde de la ventana? Son los estilos por defecto del navegador: el <body> trae un margin de 8px y los títulos y párrafos traen márgenes arriba y abajo. Muchas webs empiezan con body { margin: 0; } para controlar ellas todo el espacio.

Errores típicos

  • Confundir padding y margin: si quieres que el fondo se extienda, es padding; si quieres separar, es margin.
  • No usar box-sizing: border-box y que las cajas «no cuadren» al sumarles padding.
  • Fijar height en cajas con texto: el texto se sale cuando crece o en pantallas pequeñas.
  • Usar width en lugar de max-width y que la caja no quepa en el móvil.
  • Querer centrar texto con margin: 0 auto o una caja con text-align: center.
  • Escribir el borde incompleto: border: 2px black; no se ve porque le falta el estilo (solid).

Ejercicios

Ejercicio 1: el botón (fácil)

Convierte este enlace en un botón: fondo royalblue, texto blanco, sin subrayado, 12px de relleno arriba y abajo y 24px a los lados, y esquinas redondeadas de 8px.

Ejercicio 1

Tab añade una sangría. Pulsa Escape y luego Tab para salir del editor.

Resultado
Pista

Usa la forma corta de padding con dos valores: primero el vertical, luego el horizontal.

Solución
css
.boton {
  background: royalblue;
  color: white;
  text-decoration: none;
  padding: 12px 24px;
  border-radius: 8px;
}

Ejercicio 2: la tarjeta (medio)

Crea una tarjeta centrada en la página: ancho máximo de 320px, relleno de 24px, borde de 1px sólido #ddd, esquinas de 16px, fondo blanco y 40px de margen arriba. La imagen debe ser redonda. Usa border-box.

Ejercicio 2

Tab añade una sangría. Pulsa Escape y luego Tab para salir del editor.

Resultado
Pista 1

Para centrarla, max-width y margin con auto a los lados. Como además quieres 40px arriba: margin: 40px auto 0;.

Pista 2

La imagen redonda: border-radius: 50%.

Solución
css
* {
  box-sizing: border-box;
}

body {
  background: #f3f3f3;
  font-family: sans-serif;
}

.tarjeta {
  max-width: 320px;
  margin: 40px auto 0;
  padding: 24px;
  border: 1px solid #ddd;
  border-radius: 16px;
  background: white;
}

.foto {
  border-radius: 50%;
}

Ejercicio 3: calcula (reto)

Sin box-sizing: border-box, ¿cuánto ocupa de ancho total (contando el margen) esta caja? ¿Y con border-box?

css
.caja {
  width: 300px;
  padding: 10px 30px;
  border: 2px solid black;
  margin: 0 20px;
}
Pista

Solo cuentan los valores horizontales: el padding de izquierda y derecha es el segundo valor.

Solución
  • Sin border-box: 300 + 30 + 30 (padding) + 2 + 2 (borde) = 364px de caja, más 20 + 20 de margen = 404px.
  • Con border-box: la caja mide 300px, más 40 de margen = 340px.

Ficha resumen

  • Cada elemento es una caja: contenido → padding → border → margin.
  • padding = espacio interior (con fondo) · margin = espacio exterior (transparente).
  • Forma corta: 1 valor (todo), 2 (vertical, horizontal), 4 (arriba, derecha, abajo, izquierda).
  • border: 2px solid color; y border-radius para redondear (50% = círculo).
  • Usa max-width mejor que width, y evita fijar height en cajas con texto.
  • Empieza tu CSS con * { box-sizing: border-box; }.
  • Centrar un bloque: max-width + margin: 0 auto.

Glosario

TérminoDefinición
Modelo de cajaForma en que CSS trata cada elemento: una caja con contenido, relleno, borde y margen.
paddingRelleno: espacio entre el contenido y el borde de una caja. Tiene el fondo de la caja.
marginMargen: espacio transparente entre una caja y las de alrededor.
borderBorde que rodea una caja. Se define con grosor, estilo y color.
border-radiusPropiedad que redondea las esquinas de una caja.
box-sizingPropiedad que decide si width y height incluyen el padding y el borde (border-box) o no.
max-widthAncho máximo de una caja: puede encoger, pero no crecer más.
Selector universalEl selector *, que selecciona todos los elementos.
Colapso de márgenesCuando dos márgenes verticales se tocan, se queda solo el mayor en lugar de sumarse.

Comprueba lo que has aprendido

Responde sin mirar arriba. Si fallas alguna, la explicación te dice por qué.

Pregunta 1 de 5

¿Qué es el padding?

¿Lo tienes claro?

Si has hecho los ejercicios y aciertas el test, márcala como estudiada y pasa a la siguiente.