Modelo de caja en CSS
El modelo de caja es uno de los conceptos fundamentales que todo desarrollador web debe dominar para crear diseños precisos y profesionales. Este concepto define cómo el navegador calcula el espacio que ocupa cada elemento HTML en la página, estableciendo las reglas que determinan el tamaño final y la posición de todos los componentes visuales.
Cada elemento HTML se comporta como una caja rectangular que contiene diferentes capas de espacio. Estas capas se organizan desde el contenido hacia el exterior, creando una estructura predecible que permite controlar con precisión la apariencia y el espaciado de los elementos.
Anatomía del modelo de caja
El modelo de caja está compuesto por cuatro áreas principales que se superponen desde el centro hacia el exterior:
- Content (contenido): El área donde se muestra el texto, imágenes u otros elementos
- Padding (relleno): El espacio transparente entre el contenido y el borde
- Border (borde): La línea que rodea el padding y el contenido
- Margin (margen): El espacio transparente exterior que separa el elemento de otros elementos
.example-box {
width: 200px;
height: 100px;
padding: 20px;
border: 2px solid blue;
margin: 15px;
}
En este ejemplo, el ancho total que ocupará el elemento será de 254px (200px de contenido + 40px de padding + 4px de borde + 30px de margen), mientras que la altura total será de 169px.
Propiedades de contenido
Las propiedades width
y height
definen las dimensiones del área de contenido. Estas medidas no incluyen el padding, border ni margin por defecto:
.content-area {
width: 300px;
height: 150px;
background-color: lightblue;
}
Es importante entender que estas dimensiones se refieren únicamente al espacio disponible para el contenido real del elemento.
Trabajando con padding
El padding crea espacio interno entre el contenido y el borde del elemento. Se puede definir de forma individual para cada lado o aplicar valores uniformes:
/* Padding uniforme en todos los lados */
.uniform-padding {
padding: 20px;
}
/* Padding específico para cada lado */
.specific-padding {
padding-top: 10px;
padding-right: 15px;
padding-bottom: 10px;
padding-left: 15px;
}
/* Notación abreviada */
.shorthand-padding {
padding: 10px 15px; /* vertical horizontal */
}
El padding siempre hereda el color de fondo del elemento, lo que lo convierte en una herramienta útil para crear espacios visuales coherentes.
Configuración de bordes
Los bordes proporcionan una línea visible alrededor del elemento y su padding. Se pueden personalizar en grosor, estilo y color:
.styled-border {
border-width: 3px;
border-style: solid;
border-color: #333;
}
/* Notación abreviada */
.shorthand-border {
border: 2px dashed red;
}
/* Bordes individuales */
.individual-borders {
border-top: 1px solid black;
border-bottom: 3px double blue;
}
Los bordes afectan directamente al tamaño total del elemento, sumándose a las dimensiones del contenido y el padding.
Gestión de márgenes
Los márgenes crean espacio exterior alrededor del elemento, separándolo de otros elementos adyacentes:
.margin-example {
margin: 20px;
background-color: yellow;
}
/* Márgenes específicos */
.custom-margins {
margin-top: 30px;
margin-bottom: 10px;
margin-left: auto;
margin-right: auto; /* Centrado horizontal */
}
Una característica importante de los márgenes es el colapso de márgenes verticales, donde los márgenes superior e inferior de elementos adyacentes se combinan, tomando el valor del margen mayor.
Box-sizing: controlando el cálculo
La propiedad box-sizing
determina cómo se calculan las dimensiones totales del elemento:
/* Comportamiento por defecto */
.content-box {
box-sizing: content-box;
width: 200px;
padding: 20px;
border: 2px solid black;
/* Ancho total: 244px */
}
/* Cálculo alternativo */
.border-box {
box-sizing: border-box;
width: 200px;
padding: 20px;
border: 2px solid black;
/* Ancho total: 200px */
}
El valor border-box
es especialmente útil porque hace que el ancho y alto especificados incluyan el padding y el border, facilitando los cálculos de diseño.
Aplicación práctica del modelo
Para crear diseños consistentes, es común aplicar border-box
a todos los elementos:
* {
box-sizing: border-box;
}
.card {
width: 300px;
padding: 20px;
border: 1px solid #ddd;
margin: 10px;
background-color: white;
}
Esta configuración garantiza que todos los elementos mantengan las dimensiones especificadas, independientemente del padding y border aplicados.
El dominio del modelo de caja permite crear interfaces más predecibles y facilita la resolución de problemas de espaciado y alineación que son comunes en el desarrollo web.
Lecciones de este módulo
Explora todas las lecciones disponibles en Modelo caja
Explora más sobre CSS
Descubre más recursos de CSS

Alan Sastre
Ingeniero de Software y formador, CEO en CertiDevs
Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, CSS es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.