Todo lo que hay que saber sobre el modelo caja (Box Model) y como estilizar cada parte con CSS.
Al diseñar la estructura de una página web, el motor de renderizado del navegador interpreta cada componente como un bloque rectangular, siguiendo las normas del modelo de caja de CSS (CSS Box Model en inglés). Con CSS, se puede definir la ubicación, las dimensiones y las características de estos bloques, como el color, el fondo y el grosor del borde, entre otros.
El modelo de caja es esencial para comprender cómo se distribuyen los elementos en una página y cómo interactúan entre sí. Cada elemento HTML representado visualmente en la web es una caja compuesta por diferentes áreas.
Cada caja en CSS se divide en cuatro partes o áreas básicas que debes conocer para poder maquetar correctamente los elementos HTML y conseguir el efecto visual deseado:
El margen es el espacio exterior que rodea la caja. Se utiliza para separar un elemento de otros elementos adyacentes en la página. No tiene color de fondo y su tamaño puede ser positivo o incluso negativo.
.elemento { margin: 20px; /* Aplica un margen de 20px en los cuatro lados */}
Propiedades como outline
o box-shadow
ocupan el mismo espacio que el margen sin afectar al tamaño de la caja.
outline
: Similar al borde, pero no afecta el tamaño del elemento ni influye en el box model.box-shadow
: Permite agregar sombras al contenedor sin modificar su estructura..elemento { outline: 2px dashed red; /* Contorno rojo de línea discontinua */ box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.5); /* Sombra negra */}
El borde es la línea que rodea el contenido y el relleno (padding). Puede tener distintos colores, estilos y grosores.
.elemento { border: 2px solid black; /* Borde negro de 2 píxeles */}
El relleno es el espacio interno entre el contenido del elemento y su borde. A diferencia del margen, el padding sí afecta el tamaño total del elemento si no se usa la propiedad box-sizing: border-box
.
.elemento { padding: 10px; /* Espacio interno de 10px en cada lado */}
El contenido es el área donde se muestra el texto, imagen u otro elemento dentro de la caja. Su tamaño dependerá de los valores definidos en width
y height
.
.elemento { width: 200px; height: 100px;}
Aquí tienes un ejemplo práctico de cómo se aplica el modelo de caja en HTML y CSS:
<!DOCTYPE html><html lang="en">
<head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Ejemplo Box Model</title> <style> body { min-height: 100vh; display: flex; align-items: center; justify-content: center; flex-direction: column; font-size: min(2vmax, 2rem); gap: 0 5vmin; }
article { background: repeating-linear-gradient(45deg, hsl(0 0% 70%), hsl(0 0% 70%) 1px, white 1px, white 10px); box-shadow: 0 2.8px 2.2px rgba(0, 0, 0, 0.02), 0 6.7px 5.3px hsl(0 0% 0% / .028), 0 12.5px 10px hsl(0 0% 0% / .035), 0 22.3px 17.9px hsl(0 0% 0% / .042), 0 41.8px 33.4px hsl(0 0% 0% / .05), 0 100px 80px hsl(0 0% 0% / .07); position: relative; }
article::before { content: "Margin"; position: absolute; top: 1ex; left: 50%; transform: translateX(-50%); height: 3ex; display: flex; align-items: center; justify-content: center; font-size: .5em; background: white; padding: .25rem 1rem; border-radius: 3rem; }
article::after { content: "Outline & Box Shadow"; position: absolute; top: 6ex; left: 0; width: 100%; height: 6ex; display: flex; align-items: center; justify-content: center; font-size: .5em; color: white; }
figure { width: 25vmin; height: 25vmin; display: flex; align-items: center; justify-content: center; margin: 6ex; border: 3ex solid #e0c48a; outline: 3ex solid hsla(109, 54%, 41%, 0.8); padding: 3ex; background: linear-gradient(white, white) content-box, linear-gradient(#aa855c, #aa855c) padding-box; position: relative; }
figure::after { content: "Padding"; position: absolute; top: 0; left: 0; width: 100%; height: 6ex; display: flex; align-items: center; justify-content: center; font-size: .5em; }
figure::before { content: "Border"; color: black; position: absolute; top: 0; left: 0; transform: translateY(-100%); width: 100%; height: 6ex; display: flex; align-items: center; justify-content: center; font-size: .5em; } </style></head>
<body> <article dir="ltr"> <figure> texto </figure> </article></body>
</html>
El Modelo de Caja de CSS es un concepto indispensable para entender el diseño web en HTML y CSS, ya que define cómo se organizan y espaciamos los elementos en la página. Comprender sus partes (margen, borde, relleno y contenido) es básico para lograr una estructura coherente y visualmente atractiva. ¡Dominarlo te ayudará a mejorar la maquetación y el diseño de tus proyectos web!