
CSS Box Model
El Box Model es fundamental en CSS. Aprende cómo el navegador maneja cada elemento como una caja, el cálculo de dimensiones con padding y bordes, y evita errores comunes en tus layouts.
Display y PositionAprende cómo el navegador renderiza el layout. Domina display block vs inline, posicionamiento con relative, absolute y fixed, y controla la superposición con z-index para diseños web profesionales.
HTMLHTML clasifica sus elementos según cómo ocupan el espacio en pantalla. Los elementos de bloque generan estructura vertical, mientras que los elementos en línea se integran dentro del texto sin romper el flujo visual.
<!-- Elemento de bloque: ocupa todo el ancho disponible -->
<div>Este es un div</div>
<!-- Elementos en línea: fluyen dentro del texto, uno al lado del otro -->
<span>Span uno</span>
<span>Span dos</span>CSS Trata a Bloques e InlineCSS aplica reglas distintas según el tipo de elemento. Los elementos inline tienen limitaciones importantes en tamaño y espaciado, mientras que los bloques permiten un control completo de la caja y el layout.
/* Los elementos inline NO respetan width ni height */
span {
width: 200px; /* Ignorado por ser inline */
height: 100px; /* Ignorado por ser inline */
margin-top: 40px; /* Solo afecta horizontalmente */
}
Display Block: Elementos que Ocupan Toda la LíneaLos elementos con comportamiento block siempre comienzan en una nueva línea y se expanden horizontalmente. Son la base para construir la estructura vertical de cualquier página web
<!-- Cada div comienza en una nueva línea -->
<div>Bloque 1</div>
<div>Bloque 2</div>
<div>Bloque 3</div>
<!-- Aunque el contenido sea corto, el ancho es completo -->Display BlockLos elementos block aceptan ancho, alto, márgenes y padding en todas las direcciones. Este control total sobre la caja los convierte en el pilar del diseño de layouts en CSS.
.caja {
display: block; /* Comportamiento de bloque */
width: 300px; /* Se puede controlar el ancho */
height: 120px; /* Se puede controlar el alto */
margin: 20px auto; /* Margen vertical + centrado horizontal */
padding: 16px; /* Espacio interno en todas direcciones */
}
DisplayLa propiedad display permite cambiar el comportamiento visual de un elemento sin modificar su etiqueta HTML. Esto brinda flexibilidad para adaptar el layout sin perder semántica.
<!-- Un párrafo normalmente es block -->
<p class="texto-inline">Párrafo convertido a inline</p>
<!-- Un span normalmente es inline -->
<span class="caja-bloque">Span convertido a bloque</span>Inline-Block: Flujo y ControlInline-block combina el flujo horizontal de los elementos en línea con el control de tamaño de los bloques, siendo ideal para tarjetas, botones o listas alineadas.
.tarjeta {
display: inline-block; /* Se alinea en línea pero acepta tamaño */
width: 160px; /* Ancho respetado */
height: 80px; /* Alto respetado */
margin: 10px; /* Espaciado completo */
}
CSS permite ocultar elementos de distintas maneras. La diferencia clave está en si el elemento sigue ocupando espacio en el layout o desaparece por completo del flujo.
<!-- Este elemento será eliminado del layout -->
<div class="oculto-none">No renderizado</div>
<!-- Este elemento es invisible pero ocupa espacio -->
<div class="oculto-hidden">Invisible pero presente</div>Display None vs Visibility HiddenAunque ambas propiedades ocultan elementos visualmente, solo display:none los elimina del layout. Elegir incorrectamente puede romper la estructura del diseño.
.oculto-none {
display: none; /* El elemento desaparece del layout */
}
.oculto-hidden {
visibility: hidden; /* El elemento sigue ocupando espacio */
}
Position Static: El Punto de PartidaTodos los elementos HTML son static por defecto. Esto significa que respetan el flujo natural del documento y no responden a coordenadas como top o left.
<!-- Todos los elementos son static por defecto -->
<div class="caja-estatica">Caja estática</div>
Top y Left No FuncionanLas propiedades top y left solo funcionan cuando el elemento tiene una posición distinta de static. Entender esto evita uno de los errores más comunes en CSS.
.caja {
position: relative; /* Habilita el uso de top y left */
top: 50px; /* Mueve el elemento hacia abajo */
left: 50px; /* Mueve el elemento hacia la derecha */
}
Position Relative: Movimiento LocalRelative permite desplazar un elemento respecto a su posición original sin sacarlo del flujo del documento, conservando el espacio que ocupaba inicialmente.
<!-- Elemento que será movido respecto a su lugar original -->
<div class="caja-relativa">Caja relativa</div>
Position RelativeAl usar position: relative se habilitan las coordenadas sin afectar a los demás elementos. Es la base para posicionar hijos con absolute de forma controlada.
.caja-relativa {
position: relative; /* Permite mover sin salir del flujo */
top: 20px; /* Desplazamiento visual */
}HTML, estilos modernos con CSS y diseño rápido con Tailwind para lanzar tus primeros sitios responsivos y profesionales.10 clases en vivo con profesores expertosVer próximas fechasAbsolute: Fuera del FlujoPosition absolute saca al elemento del flujo normal y lo posiciona respecto a su contenedor más cercano con posición definida, permitiendo superposición controlada.
<!-- Contenedor principal -->
<div class="tarjeta">
<!-- Elemento superpuesto -->
<span class="badge">Nuevo</span>
<p>Producto</p>
</div>
Position AbsoluteUn elemento absolute se referencia siempre a su ancestro posicionado más cercano. Sin un padre con position, el navegador usará el viewport como referencia.
.tarjeta {
position: relative; /* Define el contexto de posicionamiento */
}
.badge {
position: absolute; /* Sale del flujo */
top: 0; /* Se ancla arriba */
right: 0; /* Se ancla a la derecha */
}
Position Fixed: Relativo al ViewportFixed posiciona un elemento respecto a la ventana del navegador. Permanece visible aunque el usuario haga scroll, ideal para menús o barras persistentes.
<!-- Barra que permanecerá visible al hacer scroll -->
<header class="barra-fija">Menú fijo</header>Position FixedLos elementos fixed ignoran completamente el contenedor padre y se anclan al viewport. Su posición no se ve afectada por el scroll del documento.
.barra-fija {
position: fixed; /* Se fija al viewport */
top: 0; /* Pegada arriba de la pantalla */
}
Position Sticky: Flujo + FijaciónSticky combina comportamientos de relative y fixed. El elemento fluye normalmente hasta que alcanza un umbral, momento en el que se fija temporalmente.
<!-- Título que se fijará al hacer scroll -->
<h2 class="titulo-sticky">Sección</h2>HTML, estilos modernos con CSS y diseño rápido con Tailwind para lanzar tus primeros sitios responsivos y profesionales.10 clases en vivo con profesores expertosVer próximas fechasPosition StickyPara que sticky funcione correctamente, el elemento necesita un valor top definido y un contenedor con altura suficiente que delimite su comportamiento.
.titulo-sticky {
position: sticky; /* Comportamiento híbrido */
top: 10px; /* Umbral de fijación */
}
Z-Index y SuperposiciónCuando los elementos se superponen, z-index define cuál se renderiza por encima. Solo funciona en elementos posicionados y dentro del mismo contexto de apilamiento.
<!-- Capa base -->
<div class="capa base"></div>
<!-- Capa que se superpone -->
<div class="capa superior"></div>
Stacking Context y Modelo Mental FinalEl stacking context crea jerarquías independientes que el z-index no puede romper. Comprender este modelo mental es clave para evitar bugs complejos de superposición.
.padre {
position: relative; /* Crea un nuevo stacking context */
z-index: 1;
}
.hijo {
position: absolute; /* Está limitado al contexto del padre */
z-index: 999; /* No puede salir del contexto */
}

El Box Model es fundamental en CSS. Aprende cómo el navegador maneja cada elemento como una caja, el cálculo de dimensiones con padding y bordes, y evita errores comunes en tus layouts.

Display y PositionAprende cómo el navegador renderiza el layout. Domina display block vs inline, posicionamiento con relative, absolute y fixed, y controla la superposición con z-index para diseños web profesionales.

Flexbox es clave para layouts modernos. Aprende a usar su sistema de ejes, distribuye el espacio y alinea elementos para crear interfaces responsive, limpias y profesionales con total control.