Maquetación Web

CSS Display y Position

Cómo funciona el flujo del documento y cómo romperlo correctamente

En este módulo aprendés a pensar el layout como lo hace el navegador. Entenderás la diferencia entre block, inline e inline-block, cuándo usar display para controlar el flujo y cómo posicionar elementos con relative, absolute, fixed y sticky sin romper la estructura. Cerramos con z-index y stacking context para resolver superposiciones complejas de forma profesional.

Capas de elementos web mostrando flujo, superposición y posicionamiento en CSS
Dominar display y position es entender cómo el navegador piensa el layout.
1

Elementos de Bloque y en Línea en HTML

HTML 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.

Copiar con comentariosCopiado
Copiar sin comentariosCopiado
<!-- 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>
Bloques y elementos en línea en HTML
Block crea filas completas; inline fluye como texto.
2

Cómo CSS Trata a Bloques e Inline

CSS 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.

Copiar con comentariosCopiado
Copiar sin comentariosCopiado
/* 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 */
}
Limitaciones CSS en elementos inline
Los inline no responden como bloques.
3

Display Block: Elementos que Ocupan Toda la Línea

Los 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

Copiar con comentariosCopiado
Copiar sin comentariosCopiado
<!-- 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 -->
Elementos block ocupando filas completas
Los elementos block crean la estructura vertical del documento.
4

Propiedades Clave de Display Block

Los 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.

Copiar con comentariosCopiado
Copiar sin comentariosCopiado
.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 */
}
Caja con display block y propiedades de tamaño
Block permite controlar completamente la caja del elemento.
5

Modificar el Flujo con Display

La 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.

Copiar con comentariosCopiado
Copiar sin comentariosCopiado
<!-- 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>
Cambio de comportamiento con display
Display controla el flujo del layout.
6

Inline-Block: Flujo y Control

Inline-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.

Copiar con comentariosCopiado
Copiar sin comentariosCopiado
.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 */
}
Elementos inline-block alineados
Combina lo mejor de inline y block.
7

Ocultar Elementos en el Flujo

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.

Copiar con comentariosCopiado
Copiar sin comentariosCopiado
<!-- 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>
Diferencia entre none y hidden
Uno elimina el espacio; el otro no.
8

Display None vs Visibility Hidden

Aunque ambas propiedades ocultan elementos visualmente, solo display:none los elimina del layout. Elegir incorrectamente puede romper la estructura del diseño.

Copiar con comentariosCopiado
Copiar sin comentariosCopiado
.oculto-none {
  display: none;        /* El elemento desaparece del layout */
}

.oculto-hidden {
  visibility: hidden;  /* El elemento sigue ocupando espacio */
}
Efecto visual de ocultar elementos
Elegir mal rompe el layout.
9

Position Static: El Punto de Partida

Todos 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.

Copiar con comentariosCopiado
Copiar sin comentariosCopiado
<!-- Todos los elementos son static por defecto -->
<div class="caja-estatica">Caja estática</div>
Elemento static
Static ignora coordenadas.
10

Por Qué Top y Left No Funcionan

Las 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.

Copiar con comentariosCopiado
Copiar sin comentariosCopiado
.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 */
}
Top y left sin position
Sin position no hay coordenadas.
11

Position Relative: Movimiento Local

Relative permite desplazar un elemento respecto a su posición original sin sacarlo del flujo del documento, conservando el espacio que ocupaba inicialmente.

Copiar con comentariosCopiado
Copiar sin comentariosCopiado
<!-- Elemento que será movido respecto a su lugar original -->
<div class="caja-relativa">Caja relativa</div>
Elemento relative
El espacio original se conserva.
12

Cómo Funciona Position Relative

Al 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.

Copiar con comentariosCopiado
Copiar sin comentariosCopiado
.caja-relativa {
  position: relative; /* Permite mover sin salir del flujo */
  top: 20px;          /* Desplazamiento visual */
}
Publicidad
htmlCssOnlineCourseResponsiveWebDesignFromScratch
Aprendé desde cero con clases 100% en vivo, grupos súper reducidos y acompañamiento real. Todo el contenido está diseñado y dictado por el creador de la plataforma, para que aprendas de verdad, sin videos fríos ni cursos masivos.

Curso de HTML y CSS para Frontend

Dominá las bases de la programación frontend: estructura con 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 expertos
Precio $150000 ARG Oferta especialDisponible por 0 Días y 00:00:00 Hs
Ver próximas fechas
13

Absolute: Fuera del Flujo

Position 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.

Copiar con comentariosCopiado
Copiar sin comentariosCopiado
<!-- Contenedor principal -->
<div class="tarjeta">
  <!-- Elemento superpuesto -->
  <span class="badge">Nuevo</span>
  <p>Producto</p>
</div>
Elemento absolute en tarjeta
Padre relativo, hijo absoluto.
14

Cómo Funciona Position Absolute

Un elemento absolute se referencia siempre a su ancestro posicionado más cercano. Sin un padre con position, el navegador usará el viewport como referencia.

Copiar con comentariosCopiado
Copiar sin comentariosCopiado
.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 */
}
Absolute con padre relativo
Regla base del posicionamiento.
15

Position Fixed: Relativo al Viewport

Fixed posiciona un elemento respecto a la ventana del navegador. Permanece visible aunque el usuario haga scroll, ideal para menús o barras persistentes.

Copiar con comentariosCopiado
Copiar sin comentariosCopiado
<!-- Barra que permanecerá visible al hacer scroll -->
<header class="barra-fija">Menú fijo</header>
16

Cómo Funciona Position Fixed

Los elementos fixed ignoran completamente el contenedor padre y se anclan al viewport. Su posición no se ve afectada por el scroll del documento.

Copiar con comentariosCopiado
Copiar sin comentariosCopiado
.barra-fija {
  position: fixed; /* Se fija al viewport */
  top: 0;          /* Pegada arriba de la pantalla */
}
Fixed en CSS
Se ancla a la ventana.
17

Position Sticky: Flujo + Fijación

Sticky combina comportamientos de relative y fixed. El elemento fluye normalmente hasta que alcanza un umbral, momento en el que se fija temporalmente.

Copiar con comentariosCopiado
Copiar sin comentariosCopiado
<!-- Título que se fijará al hacer scroll -->
<h2 class="titulo-sticky">Sección</h2>
Publicidad
htmlCssOnlineCourseResponsiveWebDesignFromScratch
Aprendé desde cero con clases 100% en vivo, grupos súper reducidos y acompañamiento real. Todo el contenido está diseñado y dictado por el creador de la plataforma, para que aprendas de verdad, sin videos fríos ni cursos masivos.

Curso de HTML y CSS para Frontend

Dominá las bases de la programación frontend: estructura con 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 expertos
Precio $150000 ARG Oferta especialDisponible por 0 Días y 00:00:00 Hs
Ver próximas fechas
18

Cómo Funciona Position Sticky

Para que sticky funcione correctamente, el elemento necesita un valor top definido y un contenedor con altura suficiente que delimite su comportamiento.

Copiar con comentariosCopiado
Copiar sin comentariosCopiado
.titulo-sticky {
  position: sticky; /* Comportamiento híbrido */
  top: 10px;        /* Umbral de fijación */
}
Sticky en CSS
Respeta los límites del padre.
19

Z-Index y Superposición

Cuando 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.

Copiar con comentariosCopiado
Copiar sin comentariosCopiado
<!-- Capa base -->
<div class="capa base"></div>

<!-- Capa que se superpone -->
<div class="capa superior"></div>
Capas superpuestas
Mayor z-index, mayor prioridad.
20

Stacking Context y Modelo Mental Final

El 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.

Copiar con comentariosCopiado
Copiar sin comentariosCopiado
.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 */
}
Stacking context
Pensar jerárquicamente evita bugs.

Leccion Anterior

Diagrama del CSS Box Model mostrando content, padding, border y margin
El Box Model explica cómo el navegador mide, separa y renderiza cada elemento en pantalla.

CSS Box Model

El Box Model es la base real del diseño web en CSS. En este módulo aprenderás cómo el navegador interpreta cada elemento como una caja, cómo se calculan sus dimensiones, cómo influyen el padding, los bordes y los márgenes, y cómo evitar errores clásicos que rompen layouts y grillas.

Comenzar Lección

Leccion Actual

Capas de elementos web mostrando flujo, superposición y posicionamiento en CSS
Dominar display y position es entender cómo el navegador piensa el layout.

CSS Display y Position

En este módulo aprendés a pensar el layout como lo hace el navegador. Entenderás la diferencia entre block, inline e inline-block, cuándo usar display para controlar el flujo y cómo posicionar elementos con relative, absolute, fixed y sticky sin romper la estructura. Cerramos con z-index y stacking context para resolver superposiciones complejas de forma profesional.

Comenzar Lección

Lecciones Siguiente

Representación visual de ejes principales y transversales organizando elementos con CSS Flexbox
Flexbox permite al navegador distribuir y alinear elementos de forma inteligente según el espacio disponible.

CSS Flexbox: Arquitectura del Layout Flexible

Flexbox es el estándar moderno para organizar interfaces web. En esta guía completa vas a entender cómo funciona el sistema de ejes, cómo el navegador calcula el espacio disponible y cómo aplicar Flexbox para resolver layouts reales como navbars, tarjetas, grillas flexibles y estructuras responsive con menos CSS y más control.

Comenzar Lección
¿Cuál es la diferencia principal entre `display: block` y `display: inline`?Los elementos de bloque (`block`) ocupan todo el ancho disponible y comienzan en una nueva línea (como un `div` o `p`). Los elementos en línea (`inline`) solo ocupan el ancho de su contenido y se sitúan uno al lado del otro (como un `span` o `a`).
¿Por qué el `width` y `height` no funcionan en mi elemento `span`?Porque los elementos `inline` (como `span`) ignoran las propiedades de dimensiones. Para que acepten ancho y alto, debes cambiar su propiedad a `display: block` o `display: inline-block`.
¿Para qué sirve `display: inline-block`?Es un híbrido que permite que el elemento fluya horizontalmente con otros elementos (como texto), pero conservando la capacidad de definirle ancho, alto, márgenes y rellenos verticales (como una caja).
¿Qué diferencia hay entre `display: none` y `visibility: hidden`?`display: none` elimina el elemento del renderizado, por lo que no ocupa espacio y el diseño se reajusta. `visibility: hidden` lo hace invisible, pero el elemento sigue ocupando su espacio físico en la página (queda un hueco vacío).
¿Cómo interactúa `opacity: 0` comparado con `visibility: hidden`?Ambos hacen el elemento invisible. La diferencia clave es que con `opacity: 0` el elemento sigue siendo interactivo (se puede hacer clic en él), mientras que con `visibility: hidden` se desactiva la interactividad.
¿Qué hace `position: static`?Es el valor por defecto de todos los elementos HTML. Indica que el elemento sigue el flujo natural del documento. Las propiedades `top`, `left`, `right`, `bottom` y `z-index` no tienen ningún efecto sobre él.
¿Qué ocurre si aplico `position: relative` sin definir coordenadas?Visualmente, nada cambia; el elemento se queda en su lugar original. Sin embargo, ahora el elemento se convierte en un 'punto de referencia' para sus hijos que tengan `position: absolute`, y también habilita el uso de `z-index`.
¿Cómo funciona exactamente `position: absolute`?Saca al elemento del flujo normal (ya no reserva espacio). Se posiciona en relación a su ancestro posicionado más cercano (cualquiera que no sea `static`). Si no encuentra ninguno, se posiciona relativo al documento (`html`).
¿Cuál es la regla 'Padre Relativo, Hijo Absoluto'?Es una técnica estándar de diseño: al padre se le da `position: relative` (para que sea la referencia) y al hijo `position: absolute` para moverlo libremente dentro de los límites del padre.
¿Cómo centro vertical y horizontalmente un elemento absoluto?Una técnica clásica es: `top: 50%`, `left: 50%` y `transform: translate(-50%, -50%)`. Esto mueve el elemento al centro del padre y luego corrige su propia posición basándose en su tamaño.
¿Qué diferencia a `position: fixed` de `absolute`?`Fixed` posiciona el elemento en relación a la ventana del navegador (viewport), no a un padre. Esto hace que el elemento se quede 'pegado' en la pantalla incluso cuando el usuario hace scroll.
¿Por qué mi `position: sticky` no funciona?Suele fallar por dos razones: 1) No has definido una coordenada de anclaje (ej. `top: 0px`). 2) Uno de los contenedores padres tiene `overflow: hidden`, `scroll` o `auto`, lo cual rompe el contexto de scroll necesario.
¿Hasta dónde llega el efecto 'pegajoso' de `position: sticky`?El elemento solo será pegajoso dentro de los límites de su contenedor padre directo. Cuando el scroll pasa el final del contenedor padre, el elemento sticky deja de flotar y se va con él.
¿Qué es el eje Z en CSS?Es la profundidad tridimensional. Mientras X es horizontal e Y es vertical, el eje Z determina qué elemento está 'más cerca' del usuario cuando se superponen.
¿Por qué mi `z-index` no tiene efecto?`z-index` solo funciona en elementos que tienen un `position` definido (`relative`, `absolute`, `fixed`, o `sticky`). Si el elemento es `static` (por defecto), la propiedad se ignora.
¿Puedo usar valores negativos en `z-index`?Sí. Un `z-index` negativo (ej. `-1`) suele utilizarse para enviar un elemento detrás de su contenedor padre o detrás del flujo normal de contenido.
¿Qué es un 'Contexto de Apilamiento' (Stacking Context)?Es como una capa o grupo aislado. Si un elemento crea un contexto de apilamiento, sus hijos no pueden salir de ese grupo. Un hijo con `z-index: 9999` dentro de un padre con `z-index: 1` nunca estará por encima de otro elemento externo con `z-index: 2`.
¿Qué propiedades crean un nuevo Contexto de Apilamiento además de `z-index`?Propiedades como `opacity` menor a 1, `transform`, `filter`, `clip-path` o `will-change` crean automáticamente un nuevo contexto de apilamiento, lo que puede afectar el orden de capas inesperadamente.
¿Los márgenes verticales colapsan en `display: inline-block`?No. El colapso de márgenes (donde dos márgenes se fusionan en uno solo) solo ocurre en elementos de bloque (`block`). En `inline-block`, los márgenes se suman.
¿Es recomendable usar `float` para maquetar hoy en día?No para la estructura principal. `float` es propenso a errores y requiere 'hacks' (clearfix). Para layouts, es mejor usar estándares modernos como Flexbox o CSS Grid.
¿Puede un elemento absoluto desbordar (salirse de) su padre?Sí, si las coordenadas lo empujan fuera. Si el padre tiene `overflow: hidden`, la parte que sobresale se cortará; si no, será visible sobre otros elementos.
¿Qué pasa si cambio un elemento `<a>` a `display: block`?El enlace ocupará todo el ancho disponible del contenedor. Esto es muy útil para menús de navegación, permitiendo que el usuario pueda hacer clic en toda la franja del botón, no solo sobre el texto.
¿Cómo afecta `box-sizing: border-box` a las dimensiones?Es vital para el posicionamiento preciso. Hace que el `padding` y el `border` se incluyan dentro del ancho total definido, evitando que un elemento de `width: 100%` se desborde al añadirle relleno.
¿Un elemento `fixed` en móvil se ve afectado por el teclado virtual?A menudo sí. Cuando aparece el teclado en pantalla, el viewport visible cambia de tamaño, lo que puede causar que elementos `fixed` en la parte inferior (como botones de chat) salten o tapen el contenido.
¿Qué es el 'flujo normal' del documento?Es la forma en que los navegadores colocan los elementos por defecto: de arriba a abajo para los bloques y de izquierda a derecha para los elementos en línea, antes de aplicar cualquier posicionamiento especial.
¿Puedo superponer elementos sin usar `position`?Es posible usando márgenes negativos (ej: `margin-top: -20px`) o `transform`, pero usar `position` y `z-index` ofrece un control mucho más preciso y predecible sobre las capas.
¿Qué valor de `display` tienen las imágenes (`<img>`) por defecto?Se comportan como `inline`, pero son elementos 'reemplazados', lo que significa que, curiosamente, aceptan dimensiones (width/height) como un `inline-block` aunque técnicamente no lo sean.
¿Cómo evito que un elemento `inline-block` tenga un pequeño espacio extra debajo?Ese espacio es reservado para la 'descendente' de las letras (como la cola de la 'g'). Se soluciona aplicando `vertical-align: top` (o `middle/bottom`) al elemento, o `display: block`.
¿Qué sucede con `position: absolute` dentro de un contenedor `flex`?El elemento absoluto se ignora en el cálculo del layout flexible (no ocupa espacio flex), pero si el contenedor flex tiene `position: relative`, el elemento absoluto se posicionará respecto a él.
¿Existe alguna forma de ocultar un elemento de la vista pero no de los lectores de pantalla?Sí, usando una clase utilitaria 'sr-only' (screen reader only). Se suele usar `position: absolute`, `width: 1px`, `height: 1px`, `overflow: hidden` y `clip: rect(0,0,0,0)`. Ni `display: none` ni `visibility: hidden` logran esto.

Información de cursos

Completá el formulario y recibí detalles sobre contenidos, fechas, niveles y promociones disponibles.

Completá el formulario para mantenerte informado. 👉