Saltar al contenido
Curso de CSS
Todos los cursos Ir al ejercicio →

La caja y el flujo del documento

  • ⏱ 40 minutos
  • 📶 Nivel: principiante
  • 🧩 Incluye ejercicio

💡 🎯 Al terminar esta lección podrás…

  • Predecir el tamaño real de una caja y usar box-sizing: border-box.
  • Manejar margin y padding, incluido el colapso de márgenes.
  • Elegir display y entender cómo fluye el contenido.
  • Controlar el desbordamiento y dimensionar con max-width, aspect-ratio y object-fit.

1.Todo es una caja

Para el navegador, cada elemento es una caja rectangular, sin excepción: un párrafo, una imagen, un enlace, incluso un círculo es una caja con las esquinas redondeadas. Entender las cajas es entender el 80% del diseño con CSS.

margin (margen)
border (borde)
padding (relleno)
contenido
CapaPropiedadQué haceSe ve el fondo
Contenidowidth, heightEl espacio para el texto o la imagenSí
RellenopaddingEspacio dentro de la cajaSí (con el color de fondo del elemento)
BordeborderLa línea alrededor del rellenoEs visible
MargenmarginEspacio fuera: separa de otros elementosNo (siempre transparente)

💡 Consejo · Mira tus cajas

En las herramientas del navegador (F12), al pasar el cursor sobre un elemento se colorean sus capas: azul = contenido, verde = relleno, amarillo = borde, naranja = margen. Es la mejor forma de entender por qué algo está donde está.

2.box-sizing: la propiedad que te ahorra dolores de cabeza

Por defecto, width mide solo el contenido. Si pones width: 300px y padding: 20px y border: 5px, la caja real mide 300 + 40 + 10 = 350 px. Eso complica todos los cálculos.

Con box-sizing: border-box, width incluye el relleno y el borde: la caja mide exactamente 300px.

✏️ Compara content-box y border-box
La primera regla de casi todo proyecto
*, *::before, *::after {
  box-sizing: border-box;
}

Con esa regla, width: 50% significa la mitad del contenedor, incluidos relleno y borde. Es lo que esperas.

3.Margin y padding en detalle

EscrituraSignifica
padding: 16pxLos cuatro lados
padding: 8px 16pxArriba y abajo 8px · izquierda y derecha 16px
padding: 8px 16px 4pxArriba 8 · laterales 16 · abajo 4
padding: 1px 2px 3px 4pxArriba, derecha, abajo, izquierda (sentido del reloj)
padding-top, padding-left…Un solo lado
padding-inline, padding-blockLados horizontales / verticales (según el idioma). Igual con margin

Márgenes: tres comportamientos que sorprenden

  1. margin: 0 auto centra horizontalmente un bloque que tenga ancho (width o max-width).
  2. Los márgenes verticales se «colapsan»: dos bloques con margin-bottom: 30px y margin-top: 20px no se separan 50px, sino 30px (se queda el mayor).
  3. Los márgenes pueden ser negativos (margin-left: -10px) para acercar o superponer elementos. Úsalo con cuidado.
✏️ Colapso de márgenes

📌 Nota · ¿Margin o padding?

Una regla práctica: padding para el espacio interior de un componente; margin para separar un componente de otros; y para separar los hijos de un contenedor flex/grid, mejor gap (lo verás en las lecciones 6 y 7).

4.Bordes, esquinas y contornos

Bordes
.caja {
  border: 2px solid #4f46e5;            /* ancho, estilo, color */
  border-bottom: 4px dashed crimson;    /* un solo lado */
  border-radius: 12px;                  /* esquinas redondeadas */
}
.circulo { width: 80px; height: 80px; border-radius: 50%; }
.pildora { border-radius: 999px; }
✏️ Formas con border-radius

5.display: bloque, en línea y los demás

ValorComportamientoEjemplos
blockOcupa todo el ancho y empieza en línea nueva. Acepta width, height, márgenesdiv, p, h1, section
inlineFluye dentro del texto. Ignora width/height y los márgenes verticalesspan, a, strong, em
inline-blockFluye como texto pero acepta ancho, alto y márgenesBotones, etiquetas
noneEl elemento desaparece (no ocupa espacio)—
flex / gridConvierten el elemento en un contenedor de layoutLecciones 6 y 7
✏️ block, inline e inline-block

Ocultar un elemento: tres maneras distintas

PropiedadSe veOcupa espacioLector de pantalla
display: noneNoNoNo lo lee
visibility: hiddenNoSíNo lo lee
opacity: 0NoSíSí lo lee (y se puede pulsar)

6.Cuando el contenido no cabe: overflow

ValorEfecto
visibleEl contenido se sale de la caja (valor por defecto)
hiddenRecorta lo que sobra
autoMuestra barras de desplazamiento solo si hacen falta
scrollSiempre muestra barras
clipRecorta sin crear un contenedor de scroll
Texto que se corta con puntos suspensivos
.titulo-largo {
  white-space: nowrap;       /* no saltar de línea */
  overflow: hidden;          /* recortar lo que sobra */
  text-overflow: ellipsis;   /* terminar con … */
}

.cuadro-scroll { max-height: 160px; overflow-y: auto; }
✏️ Overflow

7.Tamaños: width, height y proporciones

PropiedadPara qué
width / heightTamaño fijo o relativo
min-width / min-heightMínimo: la caja no se encoge por debajo
max-width / max-heightMáximo: la caja no crece por encima
aspect-ratioMantiene una proporción (16 / 9, 1)
object-fitCómo se ajusta una imagen a su caja: cover (recorta), contain (entera)
object-positionQué parte de la imagen se ve cuando se recorta
Imagen que llena su caja sin deformarse
.foto {
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
}

💡 Consejo · max-width en lugar de width

Un bloque con width: 800px se desborda en un celular. Con max-width: 800px; width: 100%; (o simplemente max-width), se adapta: llega a 800px en pantallas grandes y se encoge en las pequeñas.

8.Errores frecuentes

📒 Apuntes para llevar

  • Cada elemento es una caja: contenido, padding, border y margin.
  • box-sizing: border-box hace que width incluya relleno y borde: ponlo en todo el proyecto.
  • padding es interior y tiene el color de fondo; margin es exterior y siempre transparente.
  • Los márgenes verticales se colapsan y margin: 0 auto centra bloques con ancho.
  • border-radius redondea (50% = círculo); outline no ocupa espacio.
  • block, inline, inline-block y none cambian cómo fluye una caja; visibility y opacity ocultan de otras formas.
  • overflow controla lo que no cabe; text-overflow: ellipsis recorta texto con «…».
  • max-width, min-height, aspect-ratio y object-fit hacen cajas flexibles.

9.Glosario

TérminoSignificado
Modelo de cajaIdea de que todo elemento es un rectángulo con contenido, relleno, borde y margen.
box-sizingDefine si width mide solo el contenido o también el relleno y el borde.
Colapso de márgenesFusión de márgenes verticales adyacentes: se aplica el mayor.
Bloque / en líneaDos formas básicas de fluir: ocupar la línea completa o fluir con el texto.
overflowQué hacer con el contenido que excede su caja.
aspect-ratioProporción ancho/alto que mantiene una caja.
object-fitCómo se ajusta una imagen al tamaño de su caja.
outlineContorno que no ocupa espacio, usado en el foco.

🧠 Comprueba lo aprendido

Elige una respuesta en cada pregunta. Verás al instante si acertaste y por qué.

Una caja tiene width: 300px; padding: 20px; border: 5px solid; y box-sizing: content-box. ¿Cuánto mide en total?

Dos bloques consecutivos: el primero con margin-bottom: 30px, el segundo con margin-top: 20px. ¿Cuánta separación hay?

margin: 0 auto no centra mi div. ¿Qué falta casi seguro?

¿Qué diferencia a visibility: hidden de display: none?

¿Qué hace object-fit: cover en una imagen?

Tu progreso se guarda en este navegador y se refleja en el índice del curso.

💡 🚀 ¡Ahora te toca!

La práctica fija lo aprendido. Pasa al ejercicio de esta lección.

Ir al ejercicio