Maquetación CSS con flexbox y cuadrículas

Aprende cómo organizan los navegadores las cajas de una página y cómo controlar esa disposición. Empieza con el flujo normal, la propiedad display y los elementos flotantes; después, posiciona elementos de forma relativa, absoluta, fija y adhesiva y controla las capas superpuestas con z-index. Crea filas y columnas de elementos con flexbox y disposiciones bidimensionales con cuadrículas CSS, incluidos el tamaño, la separación y la alineación. Para terminar, elige el método adecuado para cada parte de una página, crea disposiciones habituales de páginas y componentes, y detecta y corrige problemas de disposición con las herramientas de desarrollo del navegador.

PrincipianteUnidad 5 de 8 del curso Curso de Fundamentos de desarrollo web

Lo que aprenderás

  1. Describe cómo coloca un navegador las cajas cuando no se aplica CSS de maquetación, cambia ese comportamiento con la propiedad display y usa elementos flotantes para que el texto rodee un elemento.
    • Sigue el flujo normal: cajas de bloque y cajas en línea
      Predice dónde aparecen las cajas de bloque y en línea en el flujo normal, cómo se comportan sus tamaños y cuándo colapsan los márgenes verticales.
    • Cambia la disposición con la propiedad display
      Usa display para cambiar cómo participa un elemento en la disposición de su padre y cómo se disponen sus propios hijos, y oculta elementos correctamente.
    • Haz que el texto rodee un elemento con float
      Haz flotar una imagen o cita para que el texto la rodee, coloca contenido debajo de los elementos flotantes y haz que un padre los contenga.
  2. Desplaza elementos de su posición normal, fíjalos a un contenedor o al área de visualización, mantenlos a la vista durante el desplazamiento y controla qué elemento superpuesto aparece por encima.
    • Desplaza elementos con posicionamiento relativo y absoluto
      Usa el posicionamiento relativo y absoluto para desplazar ligeramente elementos y colocar con precisión capas superpuestas, como distintivos, dentro de un contenedor elegido.
    • Mantén elementos a la vista con posicionamiento fijo y adhesivo
      Fija elementos al área de visualización con posicionamiento fijo, mantén cabeceras y encabezados adheridos durante el desplazamiento con posicionamiento adhesivo y evita los problemas que causa cada uno.
    • Controla qué elementos aparecen por encima con z-index
      Predice el orden de apilamiento de los elementos superpuestos, usa z-index dentro de contextos de apilamiento y corrige los problemas clásicos en los que «z-index no funciona».
  3. Dispón una fila o columna de elementos con flexbox: establece su dirección y ajuste en varias líneas, controla cómo crecen y se reducen los elementos, y alinéalos y sepáralos.
    • Configura un contenedor flex y sus ejes
      Convierte un elemento en un contenedor flex, explica los ejes principal y transversal y controla la dirección, el ajuste en varias líneas y el orden visual sin alterar el orden de lectura.
    • Dimensiona los elementos flex con grow, shrink y basis
      Calcula cómo reparte flexbox el espacio libre y el desbordamiento entre elementos con flex-basis, flex-grow y flex-shrink, y usa con seguridad la propiedad abreviada flex.
    • Alinea y separa los elementos flex
      Distribuye el espacio a lo largo del eje principal, alinea los elementos en el eje transversal, sepáralos con márgenes automáticos y añade espacio entre ellos con gap.
  4. Define filas y columnas con cuadrículas CSS, coloca elementos mediante líneas y áreas con nombre, deja que la cuadrícula coloque elementos automáticamente y alinea elementos y pistas.
    • Define pistas de cuadrícula con fr, repeat y minmax
      Crea las filas y columnas de una cuadrícula, calcula el tamaño de las pistas con la unidad fr y usa repeat(), minmax() y gap.
    • Coloca elementos mediante números de línea, extensiones y áreas con nombre
      Coloca elementos de cuadrícula con números de línea, span y áreas de plantilla con nombre, y mantén el orden visual y el de lectura en consonancia.
    • Deja que la cuadrícula coloque los elementos automáticamente
      Usa la colocación automática y la cuadrícula implícita para colocar cualquier número de elementos, y crea cuadrículas de tarjetas que ajusten su número de columnas con auto-fill y auto-fit.
    • Alinea elementos y pistas en una cuadrícula
      Alinea cada elemento dentro de su área de cuadrícula, alinea todo el conjunto de pistas dentro del contenedor y centra contenido con las propiedades abreviadas place-.
  5. Elige el método de maquetación adecuado para cada parte de una página, crea disposiciones habituales de páginas y componentes, y detecta y corrige problemas de disposición.
    • Elige el método de maquetación adecuado
      Decide entre flujo normal, flexbox, cuadrículas, posicionamiento, elementos flotantes y varias columnas para una disposición determinada, y combínalos en una página.
    • Crea la disposición general de las páginas
      Crea una columna de contenido legible, una página con cabecera, barra lateral, región principal y pie de página, un pie que permanezca al fondo y una barra lateral adhesiva.
    • Crea disposiciones habituales de componentes
      Dispón componentes recurrentes de la interfaz: contenido centrado, barras de navegación, bloques de imagen junto a texto, cuadrículas de tarjetas con partes alineadas, capas superpuestas, formularios y grupos de entrada.
    • Detecta y corrige problemas de disposición
      Usa las herramientas de desarrollo del navegador y una lista de causas comunes para averiguar por qué falla una disposición o una propiedad no tiene efecto, y prueba las disposiciones con contenido real.

Guía de estudio de Maquetación CSS

5 capítulos

1

Cómo fluyen las cajas

Los navegadores organizan páginas legibles antes de añadir ninguna regla especial de maquetación. Las cajas de bloque y en línea explican esa disposición inicial, incluido por qué un párrafo estrecho sigue ocupando su propia línea y por qué algunos márgenes se combinan. Aprende cómo display cambia el exterior y el interior de una caja y después usa elementos flotantes para la tarea concreta de hacer que el texto rodee una imagen. Estas reglas te ayudan a predecir qué cambiará cuando introduzcas flexbox o cuadrículas más adelante.

1.1 Cómo comparten una página las cajas de bloque y en línea

Una página ya tiene una disposición antes de que añadas flexbox o cuadrículas. El flujo normal coloca las cajas en el orden del HTML. En texto horizontal en español, los bloques se apilan hacia abajo y el contenido en línea va de izquierda a derecha y pasa a la siguiente línea cuando esta se llena.

Los bloques ocupan una línea

Los párrafos, encabezados, divisiones y secciones son cajas de bloque de forma predeterminada. Un bloque con width: auto llena el ancho disponible de su contenedor y crece en altura con su contenido. Establecer su ancho no hace que el siguiente bloque se coloque en la misma línea.

<p>Read the <a href="/guide">setup guide</a> first.</p>
<p>Then install it.</p>

Los párrafos empiezan en líneas separadas. El enlace es una caja en línea dentro del primer párrafo. Incluso si el primer párrafo solo tiene 300px de ancho, el segundo sigue empezando debajo.

Las cajas en línea siguen el texto

Un <span>, <a>, <strong> o <em> normalmente ocupa solo el ancho de su texto. Una caja en línea no reemplazada ignora width y height. Por tanto, añadir a { width: 200px; } no hace que el enlace mida 200px de ancho.

El relleno, los bordes y los márgenes horizontales apartan el texto adyacente. El relleno y los bordes verticales se pintan, pero no separan más las líneas circundantes; un fondo grande puede superponerse a la línea de arriba o de abajo. Los márgenes verticales no tienen efecto. Una imagen es un elemento reemplazado: está en línea de forma predeterminada, pero width y height sí se le aplican.

Los márgenes verticales pueden combinarse

En el flujo normal, los márgenes verticales de cajas de bloque que se tocan pueden colapsar en una sola separación. Un párrafo con margin-bottom: 24px seguido de un encabezado con margin-top: 32px deja 32px entre ellos. Prevalece el margen positivo mayor; la separación no es de 56px. Con un margen positivo de 24px y uno de −10px, el resultado es 14px. Los márgenes horizontales permanecen separados.

El margen superior de un primer hijo también puede colapsar con el margen superior de su padre cuando no los separa ningún borde, relleno o contenido en línea. Un margen superior de 20px de un encabezado puede desplazar hacia abajo toda una cabecera sin relleno, sin dejar espacio dentro de ella. Usa relleno superior para crear espacio interior, añade un borde o asigna al padre display: flow-root. El margen inferior de un último hijo también puede colapsar con el margen inferior de su padre.

Los elementos flex y de cuadrícula no colapsan sus márgenes entre sí. Si cambias un padre del flujo normal a flexbox, ahora los mismos dos márgenes positivos pueden sumarse. Las cajas flotantes y con posicionamiento absoluto también mantienen sus márgenes separados.

Las direcciones siguen el modo de escritura

La dirección de bloque indica hacia dónde van los bloques sucesivos; la dirección en línea indica hacia dónde avanza el texto. El árabe y el hebreo también usan líneas horizontales, pero su dirección en línea va de derecha a izquierda. Las propiedades lógicas siguen estas direcciones: margin-inline-start: 16px da un margen izquierdo en español y uno derecho en árabe. padding-block establece el relleno a lo largo de la dirección de bloque.

Puntos clave

  • Los bloques empiezan en líneas nuevas incluso cuando se les asigna un ancho estrecho.
  • Las cajas en línea no reemplazadas ignoran width y height; las imágenes son una excepción.
  • Los márgenes verticales de bloques que se tocan pueden colapsar; los horizontales no.
  • Las propiedades lógicas siguen las direcciones de bloque y en línea.
  • El relleno o flow-root pueden impedir que el margen de un hijo colapse con el de su padre.

1.2 Qué cambia display

La propiedad display controla la relación de una caja con su padre y la disposición de sus hijos. Son elecciones independientes. Un contenedor flex puede ocupar una línea completa mientras dispone sus propios hijos uno al lado de otro.

Interpreta display de fuera hacia dentro

El tipo de visualización exterior es de bloque o en línea. El tipo de visualización interior describe la disposición dentro de la caja, como flujo, flex o cuadrícula.

ValorExteriorInterior
blockBloqueFlujo normal
inline-blockEn líneaRegión de flujo independiente
flexBloqueDisposición flex
inline-flexEn líneaDisposición flex
gridBloqueDisposición de cuadrícula
inline-gridEn líneaDisposición de cuadrícula

La sintaxis moderna de dos palabras clave hace visible la distinción: display: inline flex significa lo mismo que inline-flex. display: block flow-root significa lo mismo que flow-root. Un solo valor como grid proporciona un tipo exterior de bloque de forma predeterminada.

Haz que una caja en línea acepte un tamaño
nav a {
  display: inline-block;
  padding: 12px 16px;
}

Cada enlace sigue situado en una línea de texto, pero ahora acepta ancho, alto y márgenes verticales. Su relleno vertical crea espacio en la disposición de la línea en lugar de limitarse a pintarse sobre las líneas cercanas. Esto da al enlace un área de activación más grande.

Los espacios en blanco entre elementos de bloque en línea en el HTML aparecen como un pequeño espacio entre las cajas. Si necesitas una fila controlada con una separación exacta, flexbox la proporciona directamente.

Cambiar display no cambia el significado del elemento HTML. Una división con estilo en línea sigue siendo un contenedor genérico. Elige una lista, enlace o botón según su finalidad y después aplica estilo a su caja.

Oculta una caja con el efecto adecuado
ReglaEfecto en la disposición
display: noneEl elemento y sus descendientes no generan cajas.
visibility: hiddenLa caja conserva su espacio en la disposición mientras está oculta.

Un mensaje de error oculto con display: none no deja ningún espacio. Al mostrarlo, desplaza el contenido posterior hacia abajo. Usar visibility: hidden reserva el espacio, por lo que mostrar el mensaje no tiene por qué mover nada. display: none también impide el foco del teclado y elimina el contenido oculto de lo que anuncian los lectores de pantalla. Una clase de ocultación visual cumple otra función: mantener el texto disponible para los lectores de pantalla mientras lo oculta visualmente.

Hijos y regiones independientes

Con ul { display: grid; }, los elementos de lista se convierten en elementos de cuadrícula. Los enlaces dentro de esos elementos de lista permanecen en la disposición de su propio padre. Para disponer esos enlaces, da al elemento de lista su propia disposición o usa una subcuadrícula cuando se necesiten pistas compartidas.

display: contents elimina la caja del propio contenedor para que sus hijos participen en la disposición circundante. El comportamiento de accesibilidad de los navegadores también puede eliminar el rol del contenedor, así que evita usarlo en controles, listas y tablas con significado.

display: flow-root crea un contexto de formato de bloque, una región de flujo independiente. Contiene a los hijos flotantes e impide que los márgenes del padre colapsen con los de sus hijos. Consigue esos efectos sin añadir recortes ni barras de desplazamiento.

Puntos clave

  • Display tiene un tipo exterior y otro interior.
  • Flex y cuadrícula afectan a los hijos directos.
  • inline-block mantiene la colocación en línea y acepta dimensiones de caja.
  • display: none elimina el espacio de la disposición; visibility: hidden lo conserva.
  • flow-root contiene los elementos flotantes y separa los márgenes de padre e hijo.
  • Usa display: contents con cuidado, porque el comportamiento del navegador puede eliminar el rol accesible del contenedor.

1.3 Texto que rodea elementos flotantes

Un retrato en un artículo suele necesitar texto a su lado durante unas líneas y después texto a todo el ancho debajo. Un elemento flotante crea esa forma de flujo del texto. Su función es distinta de la de una barra lateral que permanece en una columna separada.

Coloca una imagen junto al texto que fluye
img.portrait {
  float: left;
  width: 160px;
  margin: 0 16px 8px 0;
}

Coloca la imagen antes de los párrafos que deben rodearla. La imagen se mueve al borde izquierdo de su contenedor. El texto posterior usa el espacio a su derecha, manteniéndose a 16px de distancia horizontalmente y a 8px por debajo de su borde inferior. Una vez que el texto pasa la imagen, las líneas vuelven a ocupar todo el ancho del contenedor. Usa float: right para el borde opuesto y float: none para eliminar la flotación.

Un elemento flotante se retira del flujo normal, pero el contenido en línea cercano sigue rodeándolo. Las propias cajas de bloque posteriores ignoran el elemento flotante: sus fondos y bordes pueden extenderse detrás de él. Ver el fondo de un párrafo debajo de la imagen no significa que su texto no la esté rodeando.

Un elemento flotante se convierte en una caja de nivel de bloque. Por tanto, un <span> flotante puede aceptar ancho y alto. Sin un ancho establecido, una caja de texto flotante se reduce para ajustarse a su contenido; una imagen tiene sus propias dimensiones.

Empieza la siguiente sección debajo de la imagen

Supón que el texto es más corto que el retrato y que el encabezado de una nueva sección empieza a su lado. La propiedad clear controla esa relación:

.next-section {
  clear: both;
}

El encabezado se mueve por debajo de los elementos flotantes anteriores de ambos lados. clear: left lo sitúa solo debajo de los flotantes de la izquierda; clear: right, solo debajo de los de la derecha. Aplicar clear a un encabezado posterior no convierte por sí mismo la imagen anterior de nuevo en un bloque normal.

Haz que el padre contenga sus elementos flotantes

Un padre que solo tiene hijos flotantes no obtiene altura de ellos en el flujo normal. Su fondo y borde pueden parecer colapsados y el contenido siguiente puede subir hasta quedar junto a los elementos flotantes. Haz que el padre los contenga:

.profile {
  display: flow-root;
}

La altura del padre ahora abarca la imagen flotante. Esto es distinto de clear: flow-root cambia la región de flujo del padre, mientras que clear mueve un elemento posterior hacia abajo, por debajo de los flotantes.

Las hojas de estilo antiguas suelen contener una técnica de contención de flotantes: un pseudoelemento ::after con content: "", display: block y clear: both. También puedes encontrar overflow: auto para contener elementos flotantes. Esto puede añadir desplazamiento cuando el contenido es demasiado grande; flow-root expresa directamente la función de contención.

Reconoce disposiciones antiguas de columnas

Antes de flexbox y las cuadrículas, las columnas de página solían hacerse flotantes con anchos porcentuales y reglas de clear. Mantén esas reglas comprendiendo cómo funcionan los elementos flotantes, pero elige flexbox o cuadrículas para columnas nuevas que necesiten tamaño y alineación.

Un hijo directo de un contenedor flex o de cuadrícula sigue esa disposición, por lo que float no tiene efecto en ese elemento. Si una imagen flotante deja de hacer que el texto la rodee después de añadir display: flex a su padre, inspecciona primero la disposición del padre.

Puntos clave

  • Un elemento flotante permite que el contenido en línea posterior lo rodee.
  • clear mueve una caja posterior por debajo de los elementos flotantes anteriores.
  • flow-root hace que un padre contenga a sus hijos flotantes.
  • Los elementos flotantes no tienen efecto en los elementos flex o de cuadrícula.
2

Posicionamiento y capas superpuestas

El posicionamiento controla los desplazamientos, las capas superpuestas y los elementos que permanecen visibles durante el desplazamiento. La clave es saber qué espacio conserva una caja y qué antepasado proporciona su referencia. Parte de un distintivo dentro de una tarjeta para llegar a controles fijos y encabezados adhesivos, y después examina las capas superpuestas. Los contextos de apilamiento explican por qué un menú desplegable puede permanecer oculto aunque su propio z-index sea muy grande y muestran qué antepasado necesita cambiar realmente.

2.1 Desplazamientos y la caja desde la que se miden

El posicionamiento permite que una caja se superponga a otra o se aleje de su ubicación normal. Antes de establecer un desplazamiento, decide si la caja debe conservar su espacio original y qué antepasado debe servirle de referencia.

Estático, relativo y absoluto
PosiciónEspacio en el flujo normalReferencia del desplazamiento
staticSe conservaLos desplazamientos no tienen efecto
relativeSe conservaLa posición original de la caja
absoluteSe eliminaSu bloque contenedor

Con position: relative; top: 10px; left: 20px, una caja se dibuja 10px hacia abajo y 20px hacia la derecha de su ubicación original. Sus vecinos permanecen donde estaban. El espacio original se conserva, por lo que un desplazamiento grande puede hacer que la caja se superponga a sus vecinos.

Un padre relativo no necesita desplazamientos para servir de referencia a un hijo absoluto. Este es un uso habitual del posicionamiento relativo.

Ancla un distintivo a una tarjeta
.card {
  position: relative;
}
.badge {
  position: absolute;
  top: 8px;
  right: 8px;
}

El distintivo está fuera del flujo normal, por lo que la tarjeta no reserva espacio para él. Sus bordes superior y derecho quedan 8px hacia dentro desde los bordes del relleno de la tarjeta. Deja suficiente espacio en el contenido de la tarjeta para que un título largo no pase por debajo del distintivo.

El bloque contenedor de una caja absoluta suele ser la caja de relleno de su antepasado posicionado más cercano. Un elemento posicionado tiene cualquier valor de position salvo static. Si la tarjeta sigue siendo estática, el distintivo busca más arriba en la cadena de antepasados. Si no hay ningún antepasado que cumpla el requisito, usa el bloque contenedor inicial: un rectángulo del tamaño del área de visualización situado al principio del documento que se desplaza con la página. Un valor de transform, filter o perspective distinto de none en un antepasado también puede establecer esta referencia.

Estira o centra una capa superpuesta

Una caja absoluta con tamaño automático y desplazamientos que no la estiran se reduce para ajustarse a su contenido. Establecer los desplazamientos izquierdo y derecho con un ancho automático hace que llene el espacio entre ellos; el par superior e inferior funciona de forma similar para una altura automática.

.overlay {
  position: absolute;
  inset: 0;
}

inset establece a la vez los desplazamientos superior, derecho, inferior e izquierdo. Con dimensiones automáticas y sin márgenes, esta capa superpuesta llena el bloque contenedor. Un ancho o una altura establecidos cambian el tamaño, así que elimina esos límites cuando la capa deba cubrir toda la caja.

Para centrar un distintivo de tamaño desconocido, usa top: 50%; left: 50%; transform: translate(-50%, -50%). Los desplazamientos mueven su esquina superior izquierda al centro del bloque contenedor. La traslación lo mueve de vuelta la mitad de su propio ancho y altura. Con un ancho y una altura conocidos, inset: 0; margin: auto es otro método de centrado.

Comprueba la referencia de los porcentajes

Un padre con content-box, width: 400px y un relleno horizontal de 20px tiene una caja de relleno de 440px. Por tanto, un hijo absoluto con width: 50% tiene un ancho de contenido de 220px. Medir solo la caja de contenido de 400px del padre da un resultado incorrecto.

Usa posicionamiento absoluto para un distintivo, información emergente o una capa superpuesta. Las columnas de una página necesitan cajas que respondan al tamaño de las demás; flexbox, las cuadrículas y el flujo normal proporcionan esa relación.

Puntos clave

  • El posicionamiento relativo conserva el espacio original; el absoluto lo elimina.
  • Una caja absoluta suele medir los desplazamientos desde la caja de relleno de su antepasado posicionado más cercano.
  • inset: 0 estira una capa superpuesta absoluta de tamaño automático hasta llenar su bloque contenedor.
  • Los porcentajes de desplazamiento y los de traslación usan cajas de referencia distintas.
  • Usa flujo normal, flexbox o cuadrículas para la estructura principal de la página.

2.2 Elementos que permanecen visibles al desplazarse

Un control para volver arriba y un encabezado de tabla deben permanecer visibles, pero tienen relaciones distintas con la página. El posicionamiento fijo liga un control a una ventana de referencia. El posicionamiento adhesivo mantiene una caja en el flujo y limita su movimiento a su sección.

Fija un control al área de visualización
.back-to-top {
  position: fixed;
  right: 16px;
  bottom: 16px;
}

El botón permanece en la esquina inferior derecha de la ventana mientras se desplaza el documento. No ocupa espacio en el flujo normal. Una cabecera fija tampoco reserva espacio y puede cubrir el primer párrafo.

Para una cabecera fija de 64px, body { padding-top: 64px; } deja espacio para el contenido inicial. Establece también html { scroll-padding-top: 64px; } para que los enlaces a secciones no coloquen sus encabezados de destino debajo de la cabecera. Asigna un fondo a la cabecera para que no se vea el texto que se desplaza detrás de ella.

Un valor de transform, filter o perspective distinto de none en un antepasado puede convertirlo en el bloque contenedor del elemento fijo. Entonces el elemento permanece dentro de ese antepasado y puede desplazarse con él hasta salir de la vista. Inspecciona los antepasados cuando un control fijo se mueva inesperadamente con la página.

Haz que un encabezado se adhiera dentro de una sección
thead th {
  position: sticky;
  top: 0;
  background: white;
}

Un encabezado adhesivo ocupa primero su lugar normal. Cuando el desplazamiento lo llevaría por encima del umbral top: 0, permanece en él. No puede ir más allá de su bloque contenedor: el final de su sección acaba empujándolo fuera de la vista. Esto resulta útil para tablas largas y navegación por secciones.

ComportamientoFijoAdhesivo
Espacio en el flujo normalEliminadoReservado
Empieza en su ubicación habitualNoSí
Se detiene al final de su secciónNoSí

El área de visualización es la referencia habitual de un elemento fijo. El adhesivo usa el antepasado de desplazamiento pertinente más cercano; la página es la referencia cuando no interviene una caja de desplazamiento más cercana.

Diagnostica una caja adhesiva que no se adhiere

Comprueba estas causas en orden:

  1. Establece un desplazamiento distinto de auto en el eje en el que debe adherirse, como top: 0 para el desplazamiento vertical. La palabra clave sticky por sí sola no establece ningún umbral.
  2. Inspecciona los antepasados en busca de overflow: hidden, auto o scroll. Pueden convertirse en la referencia del elemento adhesivo aunque otra caja sea la que realmente se desplaza.
  3. Compara la altura de la caja adhesiva con la de su bloque contenedor. Un contenedor que solo tiene la altura de su encabezado no deja espacio para que este se mueva.

Una barra lateral adhesiva en una cuadrícula también puede estirarse hasta ocupar toda la altura de la fila. align-self: start le permite conservar la altura de su contenido y deja espacio para su recorrido.

Mantén visibles el contenido y el foco

Las barras fijas y adhesivas ocupan parte de la pantalla visible. Al ampliar el texto al 200 %, una barra de navegación puede hacerse mucho más alta. Prueba tanto la navegación con teclado como el desplazamiento. El criterio 2.4.11 de WCAG 2.2, Foco no oculto (mínimo), exige que el contenido añadido por el autor no oculte por completo un elemento con foco. Mantén bajas las barras y proporciona espacio de desplazamiento adecuado alrededor de los destinos.

Puntos clave

  • El posicionamiento fijo saca la caja del flujo; el adhesivo conserva su lugar.
  • El posicionamiento adhesivo necesita un desplazamiento y espacio para moverse dentro de su bloque contenedor.
  • El desbordamiento en un antepasado puede cambiar la referencia del elemento adhesivo.
  • Reserva espacio para las cabeceras fijas y comprueba que el contenido con foco siga visible.

2.3 Niveles y contextos de apilamiento

Cuando las cajas se superponen, el orden de apilamiento determina cuál ves delante. Un z-index mayor puede traer una caja hacia delante, pero solo dentro del grupo en el que se compara ese valor.

Haz que z-index se aplique

z-index funciona en elementos posicionados y en elementos flex o de cuadrícula. Un párrafo estático en el flujo normal lo ignora. Un elemento de cuadrícula estático puede usarlo sin añadir position: relative.

Sin niveles explícitos, las cajas posicionadas se pintan por encima de las cajas normales no posicionadas. Entre cajas comparables del mismo nivel, la que aparece más tarde en el HTML se pinta encima. Los valores positivos, cero y negativos de z-index te dan más control sobre ese orden.

Un contexto se apila como una sola unidad

Un contexto de apilamiento contiene un grupo que el navegador apila como un todo. El nivel de un hijo no puede elevar el grupo por encima de un contexto hermano situado más arriba.

.site-header {
  position: relative;
  z-index: 1;
}
.menu {
  position: absolute;
  z-index: 9999;
}
main {
  position: relative;
  z-index: 2;
}

Aquí .menu está dentro de .site-header, mientras que main es su hermano. Compara primero los grupos exteriores: la cabecera está en el nivel 1 y main en el 2. Main se pinta por encima de toda la cabecera, incluido el menú. Aumentar 9999 solo cambia la posición del menú dentro de la cabecera.

Eleva la propia cabecera, por ejemplo a z-index: 3, o elimina el nivel innecesario de main. Elige el cambio que corresponda al orden previsto de toda la página.

Encuentra qué crea el grupo

El elemento raíz crea un contexto de apilamiento. Otras causas comunes son:

  • Una caja relativa o absoluta con un z-index distinto de auto.
  • Un elemento flex o de cuadrícula con un z-index distinto de auto.
  • Cualquier caja fija o adhesiva.
  • Un valor de opacity inferior a 1, o un transform o filter distinto de none.
  • isolation: isolate.

Por tanto, un padre con opacity: 0.9 puede atrapar un menú desplegable aunque nadie haya establecido un nivel en ese padre. Recorre los antepasados en las herramientas de desarrollo cuando un número mayor no produzca ninguna diferencia visible. Busca el primer par de grupos hermanos cuyo orden sea incorrecto.

Mantén las decoraciones dentro de un componente
.panel {
  position: relative;
  isolation: isolate;
}
.panel-decoration {
  position: absolute;
  inset: 0;
  z-index: -1;
}

isolation: isolate crea un contexto sin cambiar la apariencia del panel. El hijo con nivel negativo se pinta detrás del texto del panel, pero por encima de su fondo. Sin el contexto local, puede quedar detrás del fondo del padre y desaparecer.

Usa una escala compartida pequeña para las capas previstas de la página: por ejemplo, 1 para tarjetas elevadas, 10 para una cabecera adhesiva, 100 para menús desplegables y 1000 para un cuadro de diálogo modal. Las propiedades personalizadas de CSS como --z-dropdown: 100 facilitan el mantenimiento de estas elecciones.

Puntos clave

  • z-index se aplica a cajas posicionadas y a elementos flex o de cuadrícula.
  • Un contexto de apilamiento se compara con los contextos vecinos como una sola unidad.
  • Un nivel alto de un hijo no puede escapar de un contexto antepasado situado más abajo.
  • La opacidad y las transformaciones pueden crear contextos inesperados.
  • isolation: isolate contiene los niveles de apilamiento de un componente.
  • Usa una escala compartida pequeña después de comprobar los contextos de los antepasados.
3

Filas y columnas con flexbox

Flexbox convierte un grupo de hijos en una fila o columna que puede compartir el espacio disponible. Sus ejes explican la dirección y la alineación, mientras que basis, grow y shrink explican los tamaños finales. Sigue una fila que pasa a varias líneas y realiza los cálculos antes de elegir separaciones, márgenes automáticos y alineación. También verás por qué cambiar el orden visual puede dificultar la navegación con teclado y por qué una línea de código larga puede impedir que una columna flexible se reduzca.

3.1 Filas, columnas y ajuste en varias líneas con flex

Flexbox organiza un grupo a lo largo de una dirección principal. Es adecuado para enlaces de navegación, barras de herramientas y otros elementos cuyos tamaños proceden de su contenido. Una disposición flex con ajuste puede tener varias líneas, pero cada una comparte su espacio de forma independiente.

Crea el contenedor
.nav {
  display: flex;
}

Los hijos directos de la navegación se convierten en elementos flex. Un enlace dentro de un elemento de lista no es un elemento flex de la navegación salvo que también sea un hijo directo. El texto situado directamente dentro del contenedor forma un elemento flex anónimo.

Los valores predeterminados son una fila, sin ajuste en varias líneas, sin crecimiento y con reducción permitida. Los elementos empiezan en el borde inicial del eje principal. En una fila horizontal, los elementos de altura automática se estiran hasta la altura de la línea, por lo que suelen parecer igual de altos.

Identifica los ejes antes de alinear

El eje principal sigue flex-direction. El eje transversal es perpendicular a él. En texto horizontal en español:

DirecciónEje principalEl primer elemento empieza en
rowHorizontalLa izquierda
row-reverseHorizontalLa derecha
columnVerticalLa parte superior
column-reverseVerticalLa parte inferior

Una fila sigue la dirección en línea, por lo que empieza a la derecha en texto de derecha a izquierda. Una columna sigue la dirección de bloque. Principal y transversal describen funciones, no direcciones horizontal y vertical permanentes.

justify-content actúa en el eje principal. align-items actúa en el eje transversal. Después de cambiar de fila a columna, justify-content: center centra verticalmente, siempre que haya altura libre.

Calcula qué elementos caben
.cards {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
}
.card {
  flex: 1 1 200px;
}

Considera cinco tarjetas en un ancho de contenido de 700px. Cada una empieza con 200px y puede crecer o reducirse. Tres tarjetas más dos separaciones necesitan 632px; cuatro más tres separaciones necesitan 848px. Tres caben en la primera línea.

La primera línea comparte 700px menos 32px de separaciones: cada tarjeta pasa a medir unos 222,7px de ancho. Las dos restantes comparten 700px menos una separación de 16px: cada una pasa a medir 342px de ancho. Los elementos de la segunda línea no heredan los anchos de la primera. Usa una cuadrícula cuando las columnas deban alinearse entre filas.

flex-flow: row wrap es una forma abreviada de establecer la dirección y el ajuste en varias líneas. Sin ajuste, flexbox mantiene todos los elementos en una línea y los reduce cuando sus límites de tamaño lo permiten.

Mantén un orden de lectura significativo

order tiene el valor predeterminado 0. Los valores más bajos aparecen primero; order: -1 sitúa un elemento antes que los elementos normales. Las direcciones inversas y order cambian el orden de dibujado, mientras que los lectores de pantalla y el foco normal del teclado siguen el HTML.

Mantén las secuencias importantes en un orden coherente en el HTML. Cambiar el orden visual puede hacer que una persona que use el teclado salte por la pantalla y puede incumplir WCAG 1.3.2, Secuencia significativa, o 2.4.3, Orden del foco, cuando perjudica el significado o la posibilidad de uso.

Un elemento también puede ser un contenedor. Una tarjeta en una fila flex puede usar su propio display: flex; flex-direction: column para apilar su contenido. Usa inline-flex cuando el contenedor exterior deba situarse dentro de una línea de texto, como un botón con un icono y una etiqueta.

Puntos clave

  • Flexbox cambia la disposición de los hijos directos.
  • La dirección establece el eje principal; el eje transversal es perpendicular.
  • Las líneas flex ajustadas se dimensionan de forma independiente.
  • Los cambios de orden visual no cambian el orden de lectura ni el orden del foco del HTML.
  • Un elemento flex puede contener su propia disposición flex.

3.2 Cómo crecen y se reducen los elementos flex

Flexbox empieza con un tamaño para cada elemento y después ajusta esos tamaños para que encajen en el contenedor. Las tres partes de flex controlan ese ajuste: grow, shrink y basis, en ese orden.

Empieza por la base

flex-basis proporciona el tamaño inicial a lo largo del eje principal. Con auto, usa el ancho del elemento en una fila o su altura en una columna; si ese tamaño también es automático, lo determina el contenido. Una base explícita tiene prioridad sobre el ancho, mientras que los tamaños mínimo y máximo siguen limitando el resultado final.

Resta todas las bases y separaciones del tamaño de contenido del contenedor. Un resultado positivo es espacio libre para crecer. Un resultado negativo es espacio al que los elementos deben renunciar.

Reparte el espacio positivo

Tres elementos en una fila de 600px tienen bases de 100px y factores de crecimiento 1, 1 y 2. Sin separaciones, las bases ocupan 300px y quedan 300px. Cuatro partes de crecimiento dividen ese resto en 75px cada una. Los tamaños finales son 175px, 175px y 250px.

Ahora añade gap: 20px. Dos separaciones consumen 40px y quedan 260px después de las bases. Cada parte pasa a ser de 65px; los anchos finales pasan a ser 165px, 165px y 230px. Un factor de 2 duplica el espacio añadido, no todo el ancho final.

Cede espacio mediante una reducción ponderada

Dos elementos con bases de 300px y 400px ocupan un contenedor de 500px sin separación. Deben perder 200px. Si ambos tienen flex-shrink: 1, sus pesos de reducción son 300 y 400: cada factor se multiplica por su tamaño base.

El primero pierde unos 85,7px y termina con unos 214,3px. El segundo pierde unos 114,3px y termina con unos 285,7px. Factores de reducción iguales no significan pérdidas iguales en píxeles. flex-shrink: 0 protege el tamaño base de un elemento, lo que es útil para un avatar o logotipo.

Estos cálculos describen elementos sin relleno, bordes, márgenes ni límites de tamaño que alteren el resultado. Comprueba esas restricciones cuando una disposición real dé un resultado distinto.

Interpreta valores abreviados habituales
DeclaraciónValor desarrolladoPunto de partida
flex: initial0 1 autoAncho o contenido; puede reducirse
flex: auto1 1 autoAncho o contenido; puede crecer o reducirse
flex: none0 0 autoAncho o contenido; mantiene ese tamaño
flex: 11 1 0%Base cero en una fila de ancho definido

Dos elementos con anchos de contenido de 80px y 200px en una fila de 600px pasan a medir 240px y 360px con flex: auto: ambos reciben la mitad de los 320px restantes. Con flex: 1 y sin mínimos limitantes, ambos parten de cero y pasan a medir 300px de ancho.

Permite que una columna flexible se estreche

El mínimo automático de un elemento flex puede mantenerlo tan ancho como una URL o una línea de código indivisible. Permite que el elemento se reduzca y gestiona el contenido en su interior:

.sidebar { flex: 0 0 240px; }
.main { flex: 1; min-width: 0; }
.main pre { overflow-x: auto; }

La barra lateral conserva 240px de ancho. La región principal ocupa el resto. El código se desplaza dentro de ella en lugar de obligar a toda la página a ensancharse. Para texto largo normal, overflow-wrap: anywhere permite los saltos. Un mínimo de cero deja espacio disponible; por sí solo no ajusta el contenido ni permite desplazarlo.

Puntos clave

  • El orden de la propiedad abreviada es grow, shrink, basis.
  • Los factores de crecimiento reparten el espacio añadido, no los anchos finales.
  • Las pérdidas por reducción dependen de cada factor multiplicado por su tamaño base.
  • Una base distinta de auto tiene prioridad sobre el ancho.
  • flex: 1 y flex: auto usan tamaños iniciales distintos.
  • min-width: 0 permite la reducción; el contenido interior sigue necesitando una gestión adecuada del desbordamiento.

3.3 Espacio y alineación en flexbox

La alineación empieza después de definir los tamaños. Identifica el eje principal, el eje transversal y el espacio que queda en cada uno. Una propiedad puede ser válida y, aun así, no producir ninguna diferencia visible cuando no queda espacio para distribuir.

Reparte el espacio en el eje principal

justify-content coloca el grupo a lo largo del eje principal. Para tres elementos de 100px en una fila de 600px sin separaciones, quedan 300px:

ValorResultado
center150px antes y después del grupo
space-between150px entre elementos vecinos; nada en los extremos
space-around50px en cada extremo exterior; 100px entre elementos vecinos
space-evenlyCuatro espacios iguales de 75px

flex-start agrupa los elementos al principio del eje principal; flex-end los agrupa al final. En cambio, start y end siguen la dirección de escritura. En un row-reverse en español, flex-start agrupa contra el borde derecho, pero start agrupa contra el izquierdo.

Si los elementos con flex: 1 consumen todo el espacio de la línea, justify-content no tiene nada que distribuir. Reducir o eliminar el crecimiento cambia esa situación.

Alinea dentro de cada línea

align-items coloca los elementos en el eje transversal dentro de su línea. El valor predeterminado habitual, stretch, hace que los elementos de altura automática de una fila llenen la altura de la línea. Un elemento con una altura establecida no se estira de esta forma. Usa center, start o end para otras posiciones, o baseline para alinear textos de distintos tamaños por su línea base.

align-self sustituye esta elección para un elemento. Flexbox no tiene justify-self: los elementos comparten el eje principal como grupo. justify-items tampoco alinea los elementos flex.

Para centrar un único hijo en ambas direcciones, establece justify-content: center; align-items: center en su padre flex. Un padre más alto, como uno con min-height: 100vh, da espacio para que se vea el centrado vertical. Si el único elemento ya llena el tamaño transversal de la línea, centrarlo ahí no produce ningún movimiento.

Separa grupos con márgenes automáticos
nav {
  display: flex;
  align-items: center;
  gap: 16px;
}
.logo {
  margin-inline-end: auto;
}

En texto horizontal en español, el logotipo permanece a la izquierda mientras los enlaces se mueven a la derecha. Su margen final automático absorbe el espacio restante. En cambio, un margen inicial automático en un elemento empuja ese elemento y los que lo siguen hacia el final. Los márgenes lógicos se adaptan cuando cambia la dirección del texto.

Un único elemento con margin: auto puede centrarse en ambos ejes. Cuando un elemento es demasiado grande, los márgenes automáticos evitan colocar su desbordamiento más allá del borde inicial inaccesible, algo que puede ocurrir con el centrado normal.

Distingue las líneas de los elementos

align-content mueve las líneas como grupo en el eje transversal en un contenedor con ajuste y espacio libre. No tiene efecto con flex-wrap: nowrap. Con wrap, puede colocar una línea incluso si los elementos actuales caben en una sola. align-items gestiona los elementos dentro de cada línea.

gap: 16px 24px establece una separación de 16px entre filas y de 24px entre columnas. Gap crea espacio entre elementos y líneas, nunca alrededor del exterior del contenedor. Añade relleno para crear espacio exterior. Cualquier espacio distribuido mediante la alineación se añade a la separación.

Puntos clave

  • justify-content distribuye el espacio restante del eje principal.
  • flex-start sigue la dirección flex; start sigue la dirección de escritura.
  • align-items alinea elementos dentro de las líneas; align-content distribuye las líneas con ajuste.
  • Los márgenes automáticos absorben espacio libre y pueden separar grupos.
  • Gap añade separación interior; el relleno añade separación exterior.
  • Usa align-self para alinear un elemento en el eje transversal.
  • Flexbox no admite justify-self para colocar elementos individuales en el eje principal.
4

Pistas compartidas con cuadrículas

Una cuadrícula da a varias filas un conjunto compartido de columnas y permite que cajas individuales abarquen esas pistas o se superpongan en ellas. Define tamaños, calcula partes fraccionarias y coloca elementos mediante límites o áreas con nombre. Después deja que la colocación automática gestione una colección que crece y compara auto-fill con auto-fit. Para terminar, distingue la alineación de elementos dentro de áreas de la alineación de pistas dentro de todo el contenedor, para que cada propiedad mueva la parte que deseas.

4.1 Pistas de cuadrícula y el espacio que comparten

Una cuadrícula define filas y columnas conjuntamente. Establece las pistas en un contenedor y deja que sus hijos directos las ocupen. A diferencia de las líneas flex con ajuste, las filas de una cuadrícula comparten la misma estructura de columnas.

Identifica las partes

Una pista es una fila o columna entre dos líneas de cuadrícula. Una celda es la intersección de una fila y una columna. Un área de cuadrícula es un rectángulo de una o más celdas. Las separaciones distinguen unas pistas de otras.

.dashboard {
  display: grid;
  grid-template-columns: 200px 1fr 2fr;
  gap: 20px;
}

grid-template-columns define las columnas explícitas; grid-template-rows define las filas explícitas. Sin columnas explícitas, una cuadrícula tiene una columna y sus elementos se apilan en filas.

Calcula una parte en fr

La unidad fr reparte el espacio que queda después de las pistas fijas y las separaciones. En un contenedor de 900px, el ejemplo tiene una columna fija de 200px y dos separaciones de 20px. Réstalas primero: quedan 660px. Las dos columnas flexibles solicitan tres partes en total, por lo que una parte es de 220px. Los anchos son 200px, 220px y 440px.

Las fracciones dividen el espacio restante de las pistas, no los 900px completos. Una pista 2fr recibe el doble de espacio flexible que una pista 1fr cuando los tamaños mínimos no las limitan.

Repite pistas y establece límites

repeat(4, 1fr) es una forma abreviada de escribir cuatro pistas flexibles iguales. También es posible repetir un patrón: repeat(2, 100px 1fr) crea 100px 1fr 100px 1fr.

Los tamaños de pista también pueden usar longitudes, porcentajes, auto, min-content y max-content. Las palabras clave de contenido solicitan tamaños basados en las necesidades intrínsecas del contenido.

minmax(150px, 1fr) da a una pista un mínimo de 150px y un máximo flexible. Para las filas creadas automáticamente, usa grid-auto-rows: minmax(100px, auto) para obtener un mínimo de 100px y permitir que el contenido más alto amplíe una fila.

Una pista 1fr sin más tiene un mínimo automático, como minmax(auto, 1fr). Una URL larga e indivisible puede hacer que una columna sea más ancha que las demás. Usa repeat(3, minmax(0, 1fr)) cuando las columnas deban compartir el ancho disponible por igual y permite que el contenido demasiado grande de su interior se ajuste o se desplace.

Mantén las separaciones dentro del ancho disponible

gap: 16px 32px significa 16px entre filas y 32px entre columnas. No crea relleno alrededor de la cuadrícula.

Tres columnas de 33.33% ya usan casi todo un contenedor de 900px. Dos separaciones de 20px añaden entonces unos 40px más allá de su ancho. Las pistas fraccionarias tienen en cuenta esas separaciones antes de repartir el espacio, por lo que repeat(3, 1fr) evita este desbordamiento de porcentajes más separaciones cuando caben los mínimos del contenido.

Deja que las filas respondan al contenido

grid-template-rows: auto 1fr auto es adecuado para una cabecera, una región principal y un pie de página. Las filas exteriores se ajustan a su contenido. Si el contenedor tiene una altura o altura mínima que llenar, la fila central ocupa la altura restante. Deja espacio para que el contenido crezca; una altura mínima de página permite que una página más larga se amplíe.

Puntos clave

  • Las filas y columnas son pistas delimitadas por líneas de cuadrícula.
  • fr reparte el espacio después de las pistas fijas y las separaciones.
  • repeat() puede repetir un tamaño o un patrón de pistas.
  • minmax() establece un tamaño mínimo y máximo de pista.
  • minmax(0, 1fr) elimina el mínimo automático de una pista flexible.
  • Las pistas porcentuales pueden desbordarse al añadir separaciones.

4.2 Colocación de elementos mediante líneas y áreas con nombre

La colocación en cuadrícula describe los límites de un elemento. Cuenta las líneas que rodean las columnas y filas, o asigna un nombre a una región rectangular y coloca el elemento allí. Ambos métodos disponen las cajas sin cambiar su orden en el HTML.

Cuenta límites, no columnas

Una cuadrícula de tres columnas tiene cuatro líneas de columna. En texto horizontal en español, la línea de columna 1 está a la izquierda y la línea de fila 1 está arriba. Los números negativos cuentan hacia atrás desde el final de la cuadrícula explícita: -1 es su última línea.

DeclaraciónColocación
grid-column: 1 / 3Cubre las dos primeras columnas
grid-column: 1 / -1Abarca todo el ancho de la cuadrícula explícita
grid-column: 2 / span 2Empieza en la línea 2 y cubre dos columnas
grid-column: span 2Cubre dos columnas en una ubicación automática

Para cubrir tres columnas empezando en la línea 1, termina en la línea 4. Terminar en la línea 3 cubre solo dos pistas.

En un panel con cuatro columnas y tres filas, coloca un gráfico con grid-column: 1 / 4; grid-row: 1 / 3. Ocupa tres columnas y dos filas: seis celdas. Un panel de estadísticas en grid-column: 4; grid-row: 1 / 3 ocupa la última columna a su lado. Una tabla en grid-column: 1 / -1; grid-row: 3 llena la tercera fila.

Dibuja la página usando nombres de área
.page {
  display: grid;
  grid-template-columns: 220px minmax(0, 1fr);
  grid-template-rows: auto 1fr auto;
  grid-template-areas:
    "header header"
    "nav    main"
    "footer footer";
}
header { grid-area: header; }
nav    { grid-area: nav; }
main   { grid-area: main; }
footer { grid-area: footer; }

Cada cadena describe una fila y cada palabra describe una celda. Repetir header a lo largo de la primera fila permite que la cabecera abarque ambas columnas. Un punto marca una celda vacía. Todas las filas deben contener el mismo número de celdas y cada nombre repetido debe formar un rectángulo. Un área con nombre en forma de L invalida toda la declaración grid-template-areas.

Un área llamada main también crea líneas llamadas main-start y main-end. Puedes usar esos nombres para los límites de otro elemento. Define nombres de línea personalizados entre corchetes en la lista de pistas, como [content-start] 600px [content-end].

Superpón elementos dentro de un área de cuadrícula

Una imagen y su leyenda pueden usar ambas grid-area: 1 / 1. Comparten la primera celda; la leyenda, que aparece más tarde en el HTML, se pinta sobre la imagen. align-self: end mueve la leyenda a la parte inferior de esa área. Los elementos de cuadrícula aceptan z-index sin necesitar una posición distinta de static, por lo que puedes cambiar explícitamente su orden de capas.

Conserva la secuencia de lectura

La colocación manual afecta a la apariencia, no al orden del HTML que siguen los lectores de pantalla y el foco del teclado. Mantén las instrucciones, los encabezados y los enlaces en un orden significativo en el código fuente. Una disposición puede parecer coherente mientras la navegación con tabulador salta entre celdas distantes; esto puede incumplir WCAG 1.3.2 o 2.4.3 cuando perjudica el significado o la posibilidad de uso.

Puntos clave

  • La colocación usa líneas de cuadrícula; tres pistas tienen cuatro límites.
  • -1 se refiere a la última línea de la cuadrícula explícita.
  • Cada área con nombre debe ser rectangular y todas las filas de la plantilla deben tener el mismo número de celdas.
  • Los elementos pueden superponerse en un área y usar z-index sin posicionamiento.
  • La colocación en cuadrícula no cambia el orden de lectura ni el del foco.

4.3 Cuadrículas automáticas que se ajustan a su contenido

Una lista de productos puede crecer de unas pocas tarjetas a muchas sin cambiar su CSS. Define las columnas, deja que la colocación automática cree las filas y elige si las columnas sin usar deben conservar su espacio.

Deja que los elementos encuentren la siguiente celda

El valor predeterminado grid-auto-flow: row coloca los elementos sin posición en el orden del código fuente, avanzando por una fila y después bajando a la siguiente. Salta las celdas ocupadas. Las pistas adicionales forman la cuadrícula implícita.

.products {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-auto-rows: minmax(150px, auto);
}

Siete elementos crean tres filas. La última fila contiene un elemento. Cada fila tiene al menos 150px de alto y puede crecer con su contenido. Las pistas explícitas proceden de la plantilla; las implícitas se añaden según las necesidades de colocación.

Los números de línea negativos cuentan solo dentro de la cuadrícula explícita. Si defines columnas pero no filas, grid-row: 1 / -1 no puede significar todas las filas creadas automáticamente. Define filas explícitas cuando un elemento deba abarcar toda su altura.

grid-auto-flow: column llena columnas y crea columnas adicionales cuyo tamaño se establece con grid-auto-columns. Añadir dense permite que elementos posteriores más pequeños llenen huecos dejados por elementos que abarcan más pistas. Esto puede cambiar la secuencia visual, así que evítalo para instrucciones ordenadas u otro contenido cuya secuencia importe.

Calcula el número de columnas a partir de un mínimo
.products {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 16px;
}

En un ancho de contenido de 1000px, cuatro columnas de 200px más tres separaciones de 16px necesitan 848px. Cinco columnas más cuatro separaciones necesitan 1064px, por lo que solo caben cuatro. Sus anchos finales flexibles son de 238px: resta 48px de separaciones y divide los 952px restantes entre cuatro.

Con 500px, dos columnas mínimas más una separación necesitan 416px; tres necesitan 632px. Caben dos y cada una pasa a medir 242px. El número de columnas cambia con el espacio disponible sin un punto de ruptura.

Elige qué ocurre con las columnas sin usar

Con suficientes elementos, auto-fill y auto-fit tienen el mismo aspecto. Con solo tres elementos en esa cuadrícula de 1000px, auto-fill conserva una cuarta columna vacía, por lo que cada columna ocupada mantiene 238px de ancho. auto-fit colapsa esa pista vacía y su separación. Las tres columnas ocupadas comparten entonces 968px y pasan a medir unos 322,7px cada una.

Una columna con un elemento en cualquier parte está ocupada, aunque una celda de su última fila esté vacía. Auto-fit colapsa las pistas vacías, no cada celda vacía.

Protege el contenedor más estrecho

La repetición automática necesita un tamaño mínimo o máximo de pista definido. repeat(auto-fill, 1fr) no es válido. Un mínimo fijo de 400px también puede desbordarse en un contenedor de 320px. Usa:

grid-template-columns:
  repeat(auto-fit, minmax(min(100%, 400px), 1fr));

min(100%, 400px) elige el mínimo menor, por lo que un contenedor estrecho puede contener una pista sin verse obligado a medir 400px. Sigue gestionando el texto o las imágenes demasiado grandes dentro de las tarjetas.

Puntos clave

  • La colocación automática llena las celdas disponibles y crea pistas implícitas según sea necesario.
  • grid-auto-rows dimensiona las filas creadas automáticamente.
  • Auto-fill conserva las pistas vacías; auto-fit las colapsa.
  • Al calcular el número de columnas se deben incluir las separaciones entre ellas.
  • Usa un mínimo o máximo definido para la repetición automática.
  • min(100%, …) mantiene el mínimo de una pista dentro de un contenedor estrecho.
  • La colocación densa puede cambiar el orden visual.

4.4 Alinea cajas dentro de áreas o pistas dentro de un contenedor

La alineación en cuadrícula tiene dos escalas distintas. Puedes mover un elemento dentro de su área o mover todo el conjunto de pistas dentro del contenedor. Primero identifica qué espacio quieres distribuir.

Alinea elementos dentro de sus áreas

En texto horizontal en español, las propiedades justify- actúan en el eje en línea, horizontal. Las propiedades align- actúan en el eje de bloque, vertical. La cuadrícula permite alinear elementos en ambos ejes.

Establecida en el contenedorSustitución en un elementoEfecto
justify-itemsjustify-selfPosición en línea dentro del área
align-itemsalign-selfPosición de bloque dentro del área

Entre los valores están start, end, center y stretch. align-items: baseline alinea las líneas base del texto. La mayoría de los elementos de tamaño automático se estiran de forma predeterminada. Una imagen con su propia relación de aspecto normalmente se coloca en el borde inicial del área en lugar de estirarse en ambas direcciones.

En una fila de tarjetas, el estiramiento hace que todas llenen la altura de la fila. Cambia a align-items: start y cada tarjeta conservará la altura de su contenido; sus bordes inferiores pueden diferir. align-self: end en una leyenda la coloca en la parte inferior de su área de cuadrícula.

Centra una caja en ambas direcciones
.hero {
  display: grid;
  place-items: center;
  min-height: 60vh;
}

place-items combina align-items seguido de justify-items. Con un solo valor, lo aplica a ambos. La altura mínima crea espacio vertical alrededor de un elemento bajo. place-self es la propiedad abreviada correspondiente para un elemento individual.

El elemento sigue siendo una caja con texto dentro. Para centrar las palabras dentro de esa caja, establece text-align: center en el elemento. Mover una caja al centro de una celda no cambia la alineación de su texto.

Mueve las pistas como grupo

justify-content coloca todo el conjunto de columnas a lo largo del eje en línea. align-content coloca las filas a lo largo del eje de bloque. Estas propiedades necesitan espacio adicional fuera de las pistas para mostrar su efecto.

Para tres columnas fijas de 200px en un contenedor de 900px sin separaciones, quedan 300px. justify-content: center deja 150px antes de la primera columna y después de la última. justify-content: space-between coloca las columnas exteriores en los bordes del contenedor y distribuye 150px entre columnas vecinas. Los elementos permanecen dentro de sus propias pistas mientras estas se mueven.

Si las columnas usan fr y llenan todo el ancho disponible, no queda espacio horizontal para que justify-content lo distribuya. Establecer justify-items: center aún puede centrar visiblemente un hijo estrecho dentro de su pista ancha. La primera propiedad coloca pistas; la segunda coloca elementos.

Puntos clave

  • justify- sigue el eje en línea; align- sigue el eje de bloque.
  • La alineación de elementos mueve cajas dentro de sus áreas.
  • La alineación del contenido mueve pistas dentro del contenedor.
  • place-items combina las dos propiedades de alineación de elementos.
  • Usa text-align para alinear el texto dentro de un elemento.
5

Crea y depura disposiciones reales

Las páginas reales combinan varias disposiciones: una cuadrícula de página puede contener una barra de herramientas flexible, tarjetas y un distintivo posicionado. Elige el método adecuado para cada relación y después crea patrones que sigan funcionando cuando el texto crezca o el espacio se estreche. Trabaja con columnas de contenido, pies de página, barras laterales y controles de formulario antes de usar las herramientas de desarrollo para localizar propiedades inactivas y desbordamientos. El texto más largo, la ampliación y las comprobaciones con teclado revelan problemas que el contenido de ejemplo puede ocultar.

5.1 Elige un método para la relación que necesitas

Una página puede usar varios métodos de maquetación a la vez. Elige cada método según la relación entre las cajas de esa parte de la página: una secuencia de texto, un grupo flexible, columnas compartidas o una capa superpuesta.

Empieza por el contenido

El flujo normal ya se ocupa de artículos, encabezados y párrafos. Ajusta el texto y desplaza los bloques posteriores hacia abajo cuando crece el contenido anterior. Añade más estructura cuando el diseño requiera una relación diferente.

NecesidadMétodo útilMotivo
Una fila o columna de controlesFlexboxReparte el espacio entre elementos dimensionados según su contenido
Columnas alineadas entre varias filasCuadrículaDefine pistas compartidas de filas y columnas
Un distintivo sobre una imagenPosicionamiento absolutoColoca una capa respecto a un contenedor elegido
Un control visible en toda la páginaPosicionamiento fijoLo mantiene ligado al área de visualización
Un encabezado visible dentro de su secciónPosicionamiento adhesivoConserva su espacio en el flujo y se detiene al final de la sección
Texto que rodea una fotoElemento flotanteAcorta las líneas de texto cercanas alrededor de la imagen
Texto distribuido en columnas periodísticasDisposición en varias columnasContinúa el texto de una columna a la siguiente

Flexbox es unidimensional: reparte el espacio a lo largo de una fila o columna y cada línea ajustada es independiente. La cuadrícula es bidimensional: define columnas y filas conjuntamente. Son elecciones sobre las restricciones de la disposición, no una prohibición de usar cualquiera de las dos herramientas para una fila sencilla.

Compara una fila ajustada con columnas compartidas

Siete tarjetas ocupan un ancho de contenido de 1000px con separaciones de 16px. En flexbox, asigna a cada tarjeta flex: 1 1 200px y permite el ajuste en varias líneas. Cuatro tarjetas caben en la primera línea y crecen hasta 238px cada una. Las tres tarjetas de la segunda línea crecen hasta unos 322,7px cada una. Cada línea reparte su propio espacio libre.

Ahora usa repeat(auto-fill, minmax(200px, 1fr)) en una cuadrícula. Caben cuatro columnas. Las siete tarjetas usan esos mismos anchos de columna de 238px; la última fila deja una celda vacía. La cuadrícula mantiene la alineación entre las filas.

Usa la versión flex cuando los elementos más anchos de la última línea se adapten al diseño. Usa la versión de cuadrícula cuando importe una estructura de columnas uniforme.

Combina métodos en distintos niveles

Una página puede usar cuadrícula para una barra lateral y una región principal, flexbox para la barra de herramientas de la región principal y un distintivo absoluto dentro de una tarjeta. Una tarjeta puede ser un elemento de cuadrícula por fuera y un contenedor flex por dentro. Establece la relación exterior en su padre y la disposición interior en la propia tarjeta.

Para una lista larga de texto, columns: 3 o column-width: 250px crea un flujo en varias columnas. El texto continúa hacia abajo por una columna y después pasa a la siguiente; no es una cuadrícula de tarjetas independientes. Comprueba que este recorrido de lectura sea adecuado para el contenido.

Interpreta con cuidado las disposiciones antiguas

Las columnas flotantes, las cuadrículas de bloques en línea y las tablas HTML usadas para maquetar páginas siguen apareciendo en código antiguo. Sus reglas de separación y contención son distintas de las de flexbox y las cuadrículas. Al crear una estructura de página nueva, usa herramientas de maquetación modernas. Reserva <table> para datos cuyas filas y columnas expresen relaciones tabulares.

Puntos clave

  • Elige cuadrícula para filas y columnas compartidas, y flexbox para una fila o columna independiente.
  • Usa elementos flotantes cuando el texto deba rodear una imagen.
  • Usa posicionamiento para superposiciones o colocación relacionada con el desplazamiento.
  • La disposición en varias columnas continúa el texto de una columna a otra.
  • Una caja puede ser un elemento de una disposición y un contenedor para otra.

5.2 Patrones de página que crecen con el contenido

Una disposición de página útil tiene un ancho de contenido legible, espacio en los bordes y capacidad para contenido más largo. Construye sus regiones principales dentro del flujo para que un artículo que crece desplace el pie de página hacia abajo de forma natural.

Centra una columna de contenido
.container {
  max-width: 1100px;
  margin-inline: auto;
  padding-inline: 16px;
}

El máximo limita el crecimiento en pantallas anchas. Los márgenes automáticos en línea reparten el espacio restante a ambos lados. El relleno mantiene el texto alejado de los bordes en pantallas estrechas. Para texto continuo, max-width: 65ch proporciona una medida aproximada de 65 caracteres; un ch es el ancho del dígito 0 en la fuente actual. Una longitud de línea de unos 45–75 caracteres es un intervalo útil para la lectura, aunque el ancho real de las letras varía.

Coloca las regiones de la página en una cuadrícula
.page {
  display: grid;
  grid-template-columns: 240px minmax(0, 1fr);
  grid-template-rows: auto 1fr auto;
  grid-template-areas:
    "header  header"
    "sidebar main"
    "footer  footer";
}
header { grid-area: header; }
aside  { grid-area: sidebar; }
main   { grid-area: main; }
footer { grid-area: footer; }

La cabecera y el pie de página abarcan ambas columnas. La barra lateral conserva 240px y la región principal recibe el resto. El mínimo de cero en la pista flexible impide que el contenido ancho la fuerce a superar el espacio disponible que le corresponde. Gestiona ese contenido mediante ajuste o desplazamiento dentro de la región principal.

El patrón de tres columnas, a menudo llamado disposición del santo grial, usa 200px 1fr 200px y las áreas de la fila central "nav main aside", con la cabecera y el pie abarcando las tres columnas. Las columnas laterales fijas siguen necesitando suficiente ancho disponible; prueba la disposición con anchos estrechos.

Mantén el pie de una página corta en la parte inferior
body {
  margin: 0;
  min-height: 100dvh;
  display: grid;
  grid-template-rows: auto 1fr auto;
}

Con cabecera, región principal y pie de página como hijos directos, la fila central llena la altura sin usar. El pie de una página corta llega a la parte inferior de la ventana; el de una página larga sigue al contenido. Este patrón se llama pie de página al fondo, pero el pie no necesita position: sticky.

La unidad tradicional relativa al área de visualización es vh. En teléfonos, 100vh puede extenderse detrás de los controles visibles del navegador. La altura dinámica del área de visualización, dvh, sigue la altura visible cuando cambian esos controles; todos los navegadores principales la admiten desde 2022. Usa min-height para que el contenido más largo pueda ampliar la página. Un height fijo puede hacer que el contenido se desborde sobre lo que sigue.

Una alternativa flex usa un body en columna con min-height: 100dvh y después main { flex: 1; }. Para una fila con barra lateral, usa .sidebar { flex: 0 0 240px; } y .main { flex: 1; min-width: 0; }.

Haz que una barra lateral se adhiera y una imagen ocupe todo el ancho

Una barra lateral de cuadrícula puede usar position: sticky; top: 16px; align-self: start. Conservar la altura de su propio contenido deja espacio para moverse dentro de su fila.

Para contenido de artículo a todo el ancho, define las columnas como 1fr min(65ch, 100% - 32px) 1fr. Coloca los hijos normales en la columna 2 y una imagen ancha en grid-column: 1 / -1. La pista central sigue siendo legible mientras la imagen abarca todo el ancho del contenedor.

Puntos clave

  • Los márgenes automáticos en línea centran una columna de contenido de ancho limitado.
  • Usa min-height para páginas de altura completa que deban crecer.
  • El patrón de pie de página al fondo mantiene el pie en el flujo normal.
  • dvh sigue los cambios de altura visible del área de visualización.
  • Un mínimo de cero en una pista flexible ayuda a evitar el desbordamiento de la página.
  • Una barra lateral adhesiva de cuadrícula necesita espacio para desplazarse; align-self: start evita que se estire.
  • Un elemento a todo el ancho se extiende fuera de la columna de texto del artículo.

5.3 Disposiciones reutilizables para componentes de interfaz

Los componentes pequeños de una interfaz combinan unas pocas relaciones: una imagen conserva su tamaño, el texto llena lo que queda, los controles relacionados comparten una fila o varias tarjetas alinean sus partes internas. Da a cada contenedor la disposición que exprese su función.

Elige el tipo de centrado adecuado
Contenido que se va a centrarRegla
Una caja en ambos ejesPadre: display: grid; place-items: center
Un bloque de ancho limitadoBloque: margin-inline: auto
Texto o contenido en líneaPadre: text-align: center

Flexbox también puede centrar un hijo con justify-content: center; align-items: center. Asegúrate de que el contenedor tenga espacio libre en el eje correspondiente.

Una fila de navegación y una fila de imagen y texto
nav { display: flex; align-items: center; gap: 16px; }
.logo { margin-inline-end: auto; }
.media { display: flex; align-items: flex-start; gap: 16px; }
.media img { flex: none; width: 64px; }
.media-body { flex: 1; min-width: 0; }

En español, el logotipo permanece a la izquierda y los enlaces se agrupan a la derecha. Cuando la navegación tiene exactamente dos hijos, un logotipo y una lista de enlaces, justify-content: space-between puede separarlos; la lista necesita su propia disposición flex para organizar sus enlaces.

En la fila de imagen y texto, la imagen conserva su ancho. El texto recibe el resto y puede reducirse. La alineación al inicio del eje transversal evita que una imagen de altura automática se estire para igualar un bloque de texto largo. Esto es adecuado para un comentario, un perfil o una línea de producto.

Tarjetas con botones alineados
.cards {
  display: grid;
  grid-template-columns:
    repeat(auto-fill, minmax(min(100%, 240px), 1fr));
  gap: 24px;
}
.card { display: flex; flex-direction: column; }
.card .button { margin-top: auto; }

La cuadrícula padre estira las tarjetas de cada fila hasta que tienen la misma altura. Dentro de cada tarjeta, el margen superior automático ocupa el espacio vertical sin usar antes del botón y lo coloca en la parte inferior. Los títulos aún pueden tener alturas distintas.

Para alinear títulos, texto y pies entre tarjetas, usa una subcuadrícula. Haz que cada tarjeta sea un elemento de cuadrícula que abarque tres filas del padre y después establece display: grid; grid-template-rows: subgrid. Cada tarjeta adopta esas filas del padre para sus tres partes. La subcuadrícula funciona en los navegadores principales desde septiembre de 2023.

Capas superpuestas, formularios y grupos de entrada

Para colocar texto sobre una imagen, convierte el contenedor en una cuadrícula y coloca ambos hijos en grid-area: 1 / 1. Una leyenda posterior se pinta por encima de la imagen. Otra opción es un contenedor relativo con una capa de leyenda absoluta que use inset: 0.

Un formulario con etiquetas y campos alternados puede usar grid-template-columns: max-content 1fr; gap: 12px 16px; align-items: center. La etiqueta más ancha establece una columna compartida de etiquetas. Los campos se alinean en la segunda columna; las filas flex separadas no pueden compartir automáticamente ese ancho de etiqueta.

Un grupo de búsqueda usa display: flex; gap: 8px, con input { flex: 1; min-width: 0; } y button { flex: none; }. El campo de entrada puede reducirse mientras el botón conserva su ancho natural. Para etiquetas o controles de barra de herramientas que deban pasar a otra línea con sus anchos naturales, usa display: flex; flex-wrap: wrap; gap: 8px.

Puntos clave

  • Centra una caja, un bloque y texto en línea con el tipo de alineación adecuado.
  • Usa una imagen de tamaño fijo y un elemento de texto flexible para una fila de imagen y texto.
  • Flexbox en columna y un margen superior automático alinean los botones de las tarjetas.
  • La subcuadrícula comparte pistas del padre entre las partes anidadas de las tarjetas.
  • La cuadrícula puede alinear etiquetas entre filas de un formulario.
  • Un campo de entrada flexible suele necesitar min-width: 0.

5.4 Encuentra la caja que causa el problema de disposición

Un problema de disposición es más fácil de corregir cuando inspeccionas las cajas reales del navegador. Empieza por el elemento que se desplazó o se desbordó y después comprueba la disposición en la que participa antes de cambiar valores.

Inspecciona en un orden útil
  1. Encuentra el elemento en las herramientas de desarrollo.
  2. Inspecciona el display calculado de su padre: el flujo normal, flex y cuadrícula asignan funciones distintas a las propiedades.
  3. Comprueba si tu propiedad se aplica a ese elemento en esa disposición.
  4. Compara los tamaños, márgenes y posición calculados con los valores que esperabas.
  5. Activa o desactiva una declaración cada vez para ver qué restricción causa el problema.

El panel del modelo de caja muestra contenido, relleno, borde y margen. Las guías superpuestas de cuadrícula muestran líneas, números, pistas y separaciones; las de flex muestran elementos y el espacio asignado. Úsalas para comprobar lo que ha construido el navegador, no solo lo que pretendía la hoja de estilo.

Comprueba las propiedades inactivas

Los desplazamientos no hacen nada en un elemento estático. El ancho y el alto no hacen nada en un <span> en línea normal, aunque sí dimensionan una imagen en línea. z-index necesita una caja posicionada o un elemento flex o de cuadrícula. float no tiene efecto en elementos flex o de cuadrícula y justify-self no puede alinear un elemento flex.

Una declaración de alineación válida puede no tener efecto visible porque los elementos ya usan todo el espacio. align-content tampoco tiene efecto en un contenedor flex nowrap. El posicionamiento adhesivo necesita un desplazamiento y espacio para moverse.

Localiza el desbordamiento horizontal

El desbordamiento puede deberse a una caja demasiado grande o a una caja más pequeña desplazada más allá de un borde por márgenes, desplazamientos o anchos vecinos. Las causas comunes incluyen:

  • Un ancho fijo, como 1200px, mayor que el área de visualización.
  • width: 100% más relleno con el cálculo de tamaño content-box.
  • width: 100vw, que puede incluir el ancho de una barra de desplazamiento vertical visible.
  • Una palabra larga indivisible, una URL o una línea de código.
  • El mínimo automático de un elemento flex o de una pista 1fr.
  • Un mínimo de repetición automática más ancho que su contenedor.

Añade temporalmente * { outline: 1px solid red; } para revelar los bordes. Los contornos no ocupan espacio en la disposición, por lo que muestran los límites sin cambiar los tamaños de las cajas como harían los bordes.

Examina un bloque de código ancho

Una página flex tiene una barra lateral de 240px y una columna principal que contiene un ejemplo de código de 1400px de ancho. Toda la página se desplaza lateralmente. La guía superpuesta de flex muestra que la región principal es más ancha que el espacio que le corresponde y que su ancho mínimo calculado es auto.

.main { min-width: 0; }
.main pre { overflow-x: auto; }

La primera regla permite que el elemento flex se reduzca. La segunda mantiene accesible el código ancho mediante desplazamiento horizontal local. Ocultar todo el desbordamiento de la página escondería el síntoma sin hacer accesible el código.

Ante otros resultados inesperados, inspecciona los márgenes que colapsan, una cabecera fija que cubre contenido, un hijo absoluto cuyo padre previsto es estático o una capa atrapada dentro de un contexto de apilamiento creado por opacidad o transformación.

Prueba contenido real y espacios estrechos

Cambia el tamaño de la ventana, usa un nombre o una URL largos y amplía el texto al 200 %. Comprueba el foco del teclado cerca de las barras fijas. El criterio 1.4.4 de WCAG 2.2 exige que el texto pueda ampliarse al 200 % sin pérdida de contenido ni funcionalidad. El criterio 1.4.10 exige generalmente la redistribución del contenido a 320 píxeles CSS sin desplazamiento en dos direcciones; el contenido que necesita una disposición bidimensional, como una tabla de datos, tiene excepciones. Prueba más que el texto breve de ejemplo que hizo que la página pareciera correcta al principio.

Puntos clave

  • Inspecciona la disposición del padre y los valores calculados antes de cambiar declaraciones.
  • Usa guías superpuestas y contornos para localizar los límites reales de las cajas.
  • Comprueba si una propiedad se aplica y si tiene espacio libre que utilizar.
  • Gestiona tanto el mínimo de un elemento flexible como su contenido desbordado.
  • Prueba anchos estrechos, ampliación del texto al 200 %, texto más largo y foco del teclado.

Ejemplos de Maquetación CSS

5 Lecciones Interactivas

1

Interpreta la disposición natural de la página

13 pasos
Sigue las cajas de un artículo, cambia el display de un enlace y haz que el texto rodee una foto.
  1. 1
    IntroducciónEmpieza con un artículo normal

    Imagina un artículo con un encabezado, dos párrafos, un enlace y un retrato. El navegador ya sabe cómo organizar estos elementos antes de que añadas CSS de maquetación: los encabezados y los párrafos son cajas de bloque, los enlaces se sitúan en línea dentro del texto y display puede cambiar ese comportamiento.

    Seguirás las cajas predeterminadas, harás que el enlace tenga un área de activación mayor y después colocarás el retrato con un elemento flotante para que el texto lo rodee. Observa tanto el texto como los fondos de los padres: responden a distintas partes de la disposición.

  2. 2
    ExplicaciónSigue las líneas de bloque

    El encabezado y los párrafos son cajas de bloque de forma predeterminada. Cada uno empieza una nueva línea y crece en altura cuando su contenido se ajusta.

    Establece el primer párrafo en width: 260px. Se vuelve estrecho, pero el siguiente párrafo sigue empezando debajo. Un bloque no se convierte en línea solo porque haya espacio horizontal libre a su lado. Deja el ancho automático cuando deba llenar la línea disponible.

  3. 3
    EjemploSigue el enlace dentro de una frase

    En <p>Open the <a href="/notes">reading notes</a> before class.</p>, el enlace forma parte de la línea de texto. Ocupa el espacio que necesitan sus palabras y puede pasar a otra línea junto con la frase.

    Añadir width: 190px no cambia el tamaño de este enlace en línea normal. El relleno vertical puede pintar un fondo más grande sin separar más las líneas de texto adyacentes. Una imagen en línea es diferente: su ancho y alto sí se aplican.

  4. 4
    EjemploMide una separación con márgenes colapsados

    El párrafo del artículo tiene un margen inferior de 14px. El encabezado siguiente tiene un margen superior de 26px. Cuando esos márgenes verticales positivos se tocan en el flujo normal, colapsan a 26px.

    No se suman hasta 40px. Si el padre se convierte después en flex o cuadrícula, los márgenes entre sus elementos permanecen separados, por lo que las mismas declaraciones pueden producir más espacio.

  5. 5
    DesafíoColoca la separación dentro de la cabecera

    Una cabecera sin relleno contiene solo un encabezado con margen superior. El margen colapsa con el de la cabecera y la separación aparece por encima de su fondo. ¿Cómo puedes crear espacio superior en el interior?

    ---reveal---

    Elimina el margen superior del encabezado y añade relleno superior a la cabecera. El relleno pertenece al interior de la caja de la cabecera. Un borde o flow-root también impedirían el colapso entre padre e hijo, pero el relleno crea directamente la separación interior deseada.

  6. 6
    ExplicaciónDa al enlace su propia caja dimensionada

    Usa display: inline-block en el enlace del artículo cuando necesite un ancho y un área de activación más alta con relleno, pero deba permanecer en la línea de texto.

    .article-link {
      display: inline-block;
      padding: 10px 14px;
    }
    

    La caja ahora participa con toda su altura. Display cambia su comportamiento de disposición; sigue siendo un enlace HTML. Los espacios en blanco entre bloques en línea vecinos siguen apareciendo como un espacio de texto.

  7. 7
    Idea claveDistingue el exterior del interior

    Una caja puede participar en una disposición y usar otra en su interior. display: flex significa bloque por fuera y flex por dentro. inline-flex conserva la misma disposición flex interior, pero usa una colocación exterior en línea.

    La regla afecta a los hijos directos. Una navegación flex convierte su lista en un elemento flex; no convierte automáticamente cada enlace anidado en un elemento de esa fila exterior. Aplica una disposición independiente a la lista cuando sus enlaces necesiten su propia fila.

  8. 8
    DesafíoReserva espacio para un mensaje

    Un mensaje sobre el estado de lectura debe estar oculto inicialmente, con su espacio reservado para que el artículo no se desplace cuando aparezca. ¿Debe usar display: none o visibility: hidden?

    ---reveal---

    Usa visibility: hidden para conservar su espacio en la disposición. display: none elimina su caja y el espacio, por lo que mostrarlo movería el contenido posterior. Si el texto debe seguir disponible para los lectores de pantalla mientras está oculto visualmente, una clase de ocultación visual cumple esa otra función.

  9. 9
    EjemploHaz flotar el retrato

    Coloca el retrato antes del párrafo y hazlo flotar:

    .portrait {
      float: left;
      width: 130px;
      margin: 0 18px 10px 0;
    }
    

    Las líneas de texto rodean la foto con una separación horizontal de 18px. Una vez que pasan su margen inferior, vuelven a ocupar todo el ancho. El fondo del párrafo puede extenderse detrás del elemento flotante aunque el propio texto permanezca a su lado.

  10. 10
    EjemploContén la altura de la imagen

    Si el texto del artículo es muy corto, el elemento flotante puede extenderse por debajo del fondo de su padre. Los hijos flotantes no aportan altura al flujo normal.

    Añade display: flow-root al contenedor. Su región de flujo independiente ahora contiene el retrato, por lo que el borde y el fondo del contenedor lo abarcan. Esto también separa los márgenes del padre y del hijo; no añade recorte ni un área de desplazamiento.

  11. 11
    DesafíoEmpieza una sección nueva debajo del retrato

    El retrato sigue llegando por debajo del primer párrafo del artículo. El encabezado de la sección siguiente debe empezar debajo de él, mientras que el párrafo puede seguir rodeándolo. ¿Qué regla corresponde al encabezado?

    ---reveal---

    Usa clear: left, o clear: both si debe situarse debajo de los elementos flotantes de ambos lados. Esto mueve el encabezado por debajo de los flotantes anteriores. Es una función distinta de la de flow-root, que hace que un padre incluya la altura de sus hijos flotantes.

  12. 12
    DesafíoUn cambio en el padre elimina el ajuste del texto

    Cambias el contenedor de la foto y el texto a display: flex. Su retrato flotante ya no hace que las líneas de texto continúen debajo de la imagen. ¿Por qué y cómo se recupera el flujo previsto del artículo?

    ---reveal---

    El retrato es ahora un elemento flex, por lo que su flotación no tiene efecto. El párrafo ocupa un elemento flex separado. Devuelve este contenedor al flujo normal, mantén el retrato flotante y usa flow-root si el contenedor debe contener la imagen.

  13. 13
    RepasoExamina el padre antes de cambiar el hijo

    El comportamiento de bloque y en línea explica la disposición inicial del artículo. Display puede cambiar la participación exterior, la disposición interior o incluso si una caja existe.

    Para que el texto rodee un retrato, mantén el texto en el flujo normal con un elemento flotante, contén el flotante cuando sea necesario y sitúa debajo las secciones posteriores que deban empezar tras él. Cuando el resultado cambie inesperadamente, inspecciona el display del padre además de las reglas del hijo.

2

Coloca distintivos y mantén visible la navegación

14 pasos
Crea una capa superpuesta local, compara el comportamiento fijo y adhesivo y después corrige un menú oculto.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónDecide qué debe moverse junto a qué
  2. 2
    ExplicaciónConserva o elimina el espacio original
  3. 3
    EjemploHaz que la tarjeta sea la referencia del distintivo
  4. 4
    EjemploColoca el distintivo dentro de la esquina
  5. 5
    DesafíoElige la referencia del porcentaje
  6. 6
    EjemploFija la ayuda a la ventana
  7. 7
    EjemploMantén un encabezado dentro de su sección
  8. 8
    DesafíoUn encabezado no tiene espacio para desplazarse
  9. 9
    ConsejoDeja espacio debajo de una cabecera fija
  10. 10
    ExplicaciónCompara primero los grupos exteriores
  11. 11
    EjemploCorrige el nivel del antepasado
  12. 12
    Desafío¿Necesita position una leyenda estática de cuadrícula?
  13. 13
    DesafíoUna barra de herramientas fija sigue quedando debajo
  14. 14
    RepasoComprueba la referencia, el espacio en el flujo y el grupo
3

Crea una barra de herramientas flexible y una fila de tarjetas

17 pasos
Sigue la dirección, calcula el crecimiento y la reducción y usa la alineación solo después de dimensionar.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónCrea una fila que comparta su espacio
  2. 2
    ExplicaciónConvierte solo los hijos directos en elementos flex
  3. 3
    ExplicaciónGira los ejes mediante la dirección
  4. 4
    DesafíoCentra un grupo vertical
  5. 5
    EjemploEmpieza el cálculo del crecimiento
  6. 6
    EjemploAñade el crecimiento a las bases
  7. 7
    EjemploPondera la reducción según el tamaño base
  8. 8
    DesafíoElige anchos iguales o conserva las diferencias de tamaño
  9. 9
    ConsejoMantén local el desplazamiento de una línea de código larga
  10. 10
    EjemploDeja que las tarjetas pasen a líneas independientes
  11. 11
    ExplicaciónDistribuye solo el espacio restante
  12. 12
    EjemploAlinea el texto dentro de la línea
  13. 13
    DesafíoEmpuja un grupo hasta el extremo opuesto
  14. 14
    Idea claveLas líneas y los elementos se alinean de forma diferente
  15. 15
    ConsejoMantén accesible el contenido centrado demasiado grande
  16. 16
    DesafíoUna fila centrada no se mueve
  17. 17
    RepasoInterpreta flexbox en tres etapas
4

Crea un panel y una cuadrícula automática de tarjetas

18 pasos
Calcula pistas, coloca un panel, adapta el número de columnas y elige la escala de alineación correcta.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónDa límites compartidos a varias filas
  2. 2
    ExplicaciónLas pistas son los espacios entre líneas
  3. 3
    EjemploResta las pistas fijas y las separaciones
  4. 4
    EjemploConvierte las partes en anchos de columna
  5. 5
    DesafíoLas columnas porcentuales superan la fila
  6. 6
    EjemploCuenta el límite final del panel
  7. 7
    ExplicaciónUsa nombres para las regiones de la página
  8. 8
    DesafíoUna forma que las áreas no pueden expresar
  9. 9
    ConexiónComparte una celda para crear una capa sobre una imagen
  10. 10
    ExplicaciónDeja que aparezcan filas nuevas
  11. 11
    EjemploAverigua cuántas columnas mínimas caben
  12. 12
    EjemploColapsa las pistas sin usar con auto-fit
  13. 13
    DesafíoMantén un mínimo dentro de una caja estrecha
  14. 14
    ExplicaciónMueve un elemento dentro de su área
  15. 15
    EjemploMueve las columnas como un solo grupo
  16. 16
    Desafío¿Por qué dejan de alinearse los bordes inferiores de las tarjetas?
  17. 17
    DesafíoUn banner a todo el ancho sobre tarjetas automáticas
  18. 18
    RepasoDistingue tamaño, colocación y alineación
5

Monta una página de lectura y corrige sus puntos débiles

19 pasos
Elige métodos para la página y sus componentes y después prueba la disposición con contenido difícil.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónConstruye desde la página hasta sus partes
  2. 2
    ExplicaciónDa a cada método una tarea concreta
  3. 3
    DesafíoElige columnas para una colección de recursos
  4. 4
    EjemploLimita el ancho de lectura
  5. 5
    EjemploReserva una columna fija y otra flexible
  6. 6
    EjemploDeja espacio para el pie de página sin fijarlo
  7. 7
    ConsejoPermite que cambien la altura y el área de visualización
  8. 8
    DesafíoPermite que una foto sea más ancha que el artículo
  9. 9
    EjemploAnida una barra de herramientas flex en la cuadrícula de página
  10. 10
    EjemploMantén el equilibrio entre la imagen y el texto
  11. 11
    EjemploAlinea las partes de las tarjetas en el nivel necesario
  12. 12
    EjemploHaz que un campo comparta una fila con un botón
  13. 13
    Desafío¿Centrar la caja o sus palabras?
  14. 14
    ExplicaciónInspecciona la disposición que construyó el navegador
  15. 15
    EjemploSigue el efecto de un bloque de código ancho hacia fuera
  16. 16
    ConsejoMuestra los bordes sin moverlos
  17. 17
    DesafíoRestablecer el ancho no basta
  18. 18
    DesafíoPrueba la página más allá del ejemplo
  19. 19
    RepasoUsa contenido real para comprobar cada relación

Ejercicios de Maquetación CSS

50 Preguntas de Práctica en 5 sets

Set 1: Cajas, espacio y elección de disposición10 Preguntas de Práctica

Pregunta 1 de 10

Un encabezado de sección tiene position: sticky, pero los cuatro desplazamientos siguen en auto. ¿Qué declaración permite que se adhiera arriba durante el desplazamiento vertical?
  1. z-index: 1
  2. margin-top: 0
  3. top: 0
  4. height: auto
Mostrar respuestaOcultar respuesta
Respuesta: C
Una caja adhesiva necesita un desplazamiento distinto de auto en el eje en el que debe adherirse. Establecer top: 0 proporciona el umbral superior. Un z-index puede cambiar qué capa superpuesta es visible, pero no puede proporcionar el umbral de desplazamiento que falta para activar el comportamiento adhesivo.

Pregunta 2 de 10

Tres elementos flex tienen bases de 60px y factores de crecimiento 1, 2 y 1 en una fila de 460px con dos separaciones de 20px. No interfieren márgenes, relleno, bordes ni límites de tamaño. ¿Cuáles son sus anchos finales, en orden?
  1. 130px, 200px, 130px
  2. 120px, 180px, 120px
  3. 105px, 210px, 105px
  4. 140px, 140px, 140px
Mostrar respuestaOcultar respuesta
Respuesta: B
Las bases ocupan 180px y las separaciones ocupan 40px, por lo que quedan 240px para cuatro partes de crecimiento. Cada parte es de 60px, lo que da 120px, 180px y 120px. Hacer que el ancho final del elemento central sea el doble que los demás confunde su parte del espacio añadido con todo su ancho.

Pregunta 3 de 10

Dos bloques adyacentes en el flujo normal tienen márgenes verticales positivos de 18px y 30px que se tocan. ¿Cuánto mide la separación tras el colapso?
  1. 18px
  2. 30px
  3. 48px
  4. 12px
Mostrar respuestaOcultar respuesta
Respuesta: B
Los márgenes verticales positivos de bloques que se tocan colapsan al margen mayor, por lo que la separación es de 30px. Sumarlos para obtener 48px supone tratarlos como espacios separados. Esa suma se aplicaría entre elementos flex o de cuadrícula, cuyos márgenes no colapsan, pero estas cajas están en el flujo normal.

Pregunta 4 de 10

Un enlace de texto normal necesita un ancho establecido mientras permanece dentro de una línea de texto. ¿Qué valor de display da ese comportamiento a su caja?
  1. inline
  2. block
  3. contents
  4. inline-block
Mostrar respuestaOcultar respuesta
Respuesta: D
Un bloque en línea acepta ancho y alto mientras participa en una línea de texto. Un enlace en línea normal ignora su declaración de ancho. La visualización de bloque también acepta el ancho, pero inicia una línea de bloque, por lo que no cumple el requisito de mantener la caja dentro de la línea de texto.

Pregunta 5 de 10

Un distintivo tiene posicionamiento absoluto dentro de una tarjeta. La tarjeta tiene position: relative y ninguna otra regla crea un bloque contenedor entre ambos. ¿Qué caja proporciona la referencia para los desplazamientos del distintivo?
  1. La caja de relleno de la tarjeta.
  2. La caja de contenido de la tarjeta.
  3. La caja de borde del distintivo.
  4. La caja de contenido del área de visualización.
Mostrar respuestaOcultar respuesta
Respuesta: A
La tarjeta posicionada establece el bloque contenedor del distintivo en sus bordes de relleno. Medir solo la caja de contenido de la tarjeta deja fuera su relleno y da una referencia distinta. El área de visualización se usa solo cuando ningún antepasado más cercano que cumpla los requisitos proporciona la referencia del posicionamiento absoluto.

Pregunta 6 de 10

En la propiedad abreviada flex de tres valores, ¿qué parte establece el tamaño inicial del elemento a lo largo del eje principal?
  1. La tercera parte, flex-basis.
  2. La primera parte, flex-grow.
  3. La segunda parte, flex-shrink.
  4. El valor align-items del padre.
Mostrar respuestaOcultar respuesta
Respuesta: A
El orden de los tres valores es grow, shrink, basis, por lo que la tercera parte proporciona el tamaño inicial. Grow controla una parte del espacio libre positivo una vez conocidas las bases. No establece un ancho inicial, aunque cambiarlo puede cambiar el ancho final del elemento.

Pregunta 7 de 10

Una cuadrícula de 760px tiene columnas 160px 1fr 2fr y una separación de columna de 15px. Los mínimos de contenido no limitan las pistas. ¿Qué ancho tiene la columna 2fr?
  1. 400px
  2. 300px
  3. 190px
  4. 380px
Mostrar respuestaOcultar respuesta
Respuesta: D
Dos separaciones ocupan 30px; después de restarlas junto con la columna fija de 160px, quedan 570px. Tres partes hacen que cada una sea de 190px, por lo que la columna 2fr mide 380px. Un resultado de 400px resta la columna fija, pero olvida que las separaciones también consumen ancho disponible.

Pregunta 8 de 10

Un elemento de cuadrícula debe cubrir las tres primeras columnas de una cuadrícula de cinco columnas. ¿Qué colocación por líneas proporciona esa extensión?
  1. grid-column: 1 / 3
  2. grid-column: 2 / 4
  3. grid-column: 1 / 4
  4. grid-column: 1 / 5
Mostrar respuestaOcultar respuesta
Respuesta: C
Tres pistas que empiezan en la línea 1 terminan en la línea 4, porque las líneas marcan los límites de las pistas. La colocación 1 / 3 termina al principio de la tercera columna y cubre solo dos pistas. Cuenta los espacios entre las líneas de límite, no solo los números escritos en la declaración.

Pregunta 9 de 10

Un directorio tiene muchas tarjetas. Las tarjetas de las filas posteriores deben usar los mismos límites de columna que las de las filas anteriores, aunque la última fila esté incompleta. ¿Qué método de maquetación expresa mejor ese requisito?
  1. Cuadrícula con pistas de columna compartidas.
  2. Flexbox con líneas flex ajustadas.
  3. Elementos flotantes con anchos individuales.
  4. Bloques en línea con anchos naturales.
Mostrar respuestaOcultar respuesta
Respuesta: A
La cuadrícula define una estructura de columnas que comparten todas las filas, por lo que una última fila incompleta conserva los mismos límites. Las líneas flex ajustadas distribuyen su espacio de forma independiente y pueden ensanchar los elementos de la última fila. El requisito se refiere a la alineación entre filas, por lo que las pistas compartidas son la restricción útil.

Pregunta 10 de 10

Unas tarjetas con textos de distintas longitudes forman una fila de cuadrícula. Sus botones deben alinearse en la parte inferior sin alturas fijas para las tarjetas, y estas deben crecer si crece el texto. ¿Cómo deben trabajar juntas la cuadrícula exterior y las tarjetas interiores?
  1. Alinear las tarjetas al inicio; usar columnas flex y márgenes superiores automáticos en los botones.
  2. Estirar las tarjetas; usar columnas flex y márgenes superiores automáticos en los botones.
  3. Estirar las tarjetas; usar filas flex y márgenes superiores automáticos en los botones.
  4. Estirar las tarjetas; usar columnas flex y márgenes inferiores automáticos en los botones.
Mostrar respuestaOcultar respuesta
Respuesta: B
El estiramiento de la cuadrícula da a las tarjetas una altura de fila compartida determinada por el contenido más alto. Una columna flex dentro de cada tarjeta permite que el margen superior automático del botón absorba el espacio vertical sin usar. Los botones absolutos no reservan su propio espacio, por lo que el texto que crece puede pasar por debajo de ellos aunque sus bordes inferiores se alineen.
Set 2: Flujo, capas y contenedores flexibles10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

Una caja de perfil contiene solo una foto flotante y su fondo no se extiende alrededor de ella. ¿Qué valor de display en la caja de perfil contiene el elemento flotante?
  1. inline
  2. contents
  3. flow-root
  4. none
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

Un <span> en línea normal tiene width: 180px y 10px de relleno vertical. ¿Por qué puede superponerse su fondo a las líneas de texto vecinas mientras su ancho sigue siendo el de su contenido?
  1. Se ignora el ancho en línea; el relleno vertical se pinta sin ampliar el espacio entre líneas.
  2. Se hereda el ancho en línea; el relleno vertical colapsa con los márgenes vecinos.
  3. El ancho en línea establece un mínimo; el relleno vertical saca la caja del flujo normal.
  4. El ancho en línea reserva espacio vacío; el relleno vertical cambia solo la línea base.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

Una cabecera relativa con z-index: 4 contiene un menú absoluto con z-index: 800. Una región principal relativa hermana tiene z-index: 5. Ambas cajas exteriores están en el mismo contexto de apilamiento padre. ¿Qué cambio coloca toda la cabecera por encima de la región principal?
  1. Elevar el menú a z-index: 900.
  2. Bajar el menú a z-index: 6.
  3. Asignar al menú position: relative.
  4. Elevar la cabecera a z-index: 6.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

Un párrafo tiene position: relative; top: 9px. ¿Qué ocurre con la posición en el flujo normal del párrafo siguiente?
  1. También se desplaza 9px hacia abajo.
  2. Permanece donde se había dispuesto.
  3. Sube hasta ocupar el espacio original.
  4. Adquiere posicionamiento absoluto.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

Una fila flex horizontal en español necesita que su último control se desplace hasta el extremo final mientras los controles anteriores permanecen al principio. ¿Qué margen en el último control absorbe el espacio libre anterior a él?
  1. margin-inline-start: auto
  2. margin-inline-end: auto
  3. margin-block-start: auto
  4. margin-block-end: auto
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

Una fila flex de 540px tiene dos elementos con bases de 240px y 480px y factores de reducción de 2 y 1. No hay separaciones, márgenes, bordes, relleno ni mínimos limitantes. ¿Qué anchos finales resultan?
  1. 180px y 360px
  2. 120px y 420px
  3. 150px y 390px
  4. 160px y 380px
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

Una cuadrícula de tres columnas no define filas y coloca automáticamente ocho elementos normales. ¿Cuántas filas implícitas se necesitan?
  1. Dos filas.
  2. Tres filas.
  3. Cuatro filas.
  4. Ocho filas.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Un elemento estrecho debe situarse en el centro del eje en línea de su propia área ancha de cuadrícula, sin mover las columnas. ¿Qué propiedad corresponde a ese elemento?
  1. justify-content: center
  2. align-content: center
  3. text-align: center
  4. justify-self: center
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

El pie de una página corta debe llegar a la parte inferior del área de visualización y después bajar de forma natural cuando crezca el artículo. ¿Qué configuración de cuadrícula del body permite esto con cabecera, región principal y pie como hijos?
  1. height: 100dvh; grid-template-rows: auto 0 auto
  2. max-height: 100dvh; grid-template-rows: 1fr auto 1fr
  3. min-height: 100dvh; grid-template-rows: auto 1fr auto
  4. height: auto; grid-template-rows: auto auto auto
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

El elemento principal de una página flex contiene una línea de código larga e indivisible. Las herramientas de desarrollo muestran que la región principal tiene min-width: auto; toda la página se desplaza lateralmente. El código debe seguir disponible sin ensanchar la página. ¿Qué corrección combinada actúa sobre ambas cajas?
  1. Asignar a la región principal min-width: 0 y al bloque de código overflow-x: auto.
  2. Asignar a la región principal width: 100% y al bloque de código white-space: nowrap.
  3. Asignar a la región principal overflow: visible y al bloque de código min-width: 100%.
  4. Asignar a la región principal flex-shrink: 0 y al bloque de código overflow-x: hidden.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Set 3: Pistas compartidas y contenido cambiante10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

Un mensaje debe estar invisible inicialmente, pero reservar su espacio actual para que el contenido posterior no se mueva cuando aparezca. ¿Qué valor de propiedad proporciona ese comportamiento?
  1. display: none
  2. display: contents
  3. position: absolute
  4. visibility: hidden
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

Un artículo tiene un retrato flotante a la izquierda seguido de un encabezado de sección nueva. El texto puede rodear el retrato, pero el encabezado debe empezar debajo de él. ¿Qué regla debe aplicarse al encabezado?
  1. float: left
  2. clear: left
  3. overflow: visible
  4. position: relative
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

Un encabezado adhesivo tiene top: 0 dentro de un antepasado con overflow: auto. La página se desplaza, pero ese antepasado no. ¿Qué debe inspeccionarse como causa probable de que el encabezado nunca se adhiera al área de visualización?
  1. El antepasado con desbordamiento se ha convertido en su referencia de desplazamiento.
  2. El orden del encabezado en el código fuente se ha convertido en su nivel de apilamiento.
  3. El desplazamiento superior del encabezado se mide desde su propia altura.
  4. La dirección flex de la página ha eliminado el umbral adhesivo.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

Una información emergente está dentro de una tarjeta estática con opacity: 0.8. La tarjeta está dentro de una sección relativa con z-index: 2. Una sección hermana superpuesta es relativa y tiene z-index: 3. Aumentar el z-index de la información emergente no cambia nada. ¿Qué cambio exterior puede traer hacia delante toda la sección que la contiene?
  1. Elevar la opacidad de la tarjeta exactamente a 1.
  2. Elevar el nivel de la información emergente por encima de 3000.
  3. Elevar la sección que la contiene por encima del nivel 3.
  4. Elevar el propio z-index de la tarjeta a 4.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

Una columna flex vertical tiene altura libre y debe centrar su grupo de hijos de arriba abajo. ¿Qué declaración del contenedor actúa en ese eje?
  1. justify-content: center
  2. align-items: center
  3. justify-items: center
  4. align-self: center
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

Una cuadrícula debe tener tres columnas exactamente iguales dentro de 810px, con separaciones de 24px, incluso cuando un elemento contiene una URL larga. La URL puede dividirse en cualquier punto. ¿Qué configuración combinada gestiona el tamaño de las pistas y el contenido?
  1. Usar repeat(3, 33.33%) y overflow-wrap: anywhere en el elemento de la URL.
  2. Usar repeat(3, minmax(0, 1fr)) y overflow-wrap: anywhere en el elemento de la URL.
  3. Usar repeat(3, 1fr) y white-space: nowrap en el elemento de la URL.
  4. Usar repeat(3, minmax(270px, 1fr)) y overflow: visible en el elemento de la URL.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

Una plantilla usa "banner banner" "banner main" como sus dos filas. ¿Por qué no es válida esta declaración de áreas con nombre?
  1. El nombre main necesita al menos dos celdas.
  2. Un área de cuadrícula no puede cruzar un límite de fila.
  3. Cada área debe llenar una fila completa de la cuadrícula.
  4. Las celdas de banner no forman un rectángulo.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Tres tarjetas usan repeat(auto-fit, minmax(180px, 1fr)) en una cuadrícula de 860px con separaciones de 20px. No tienen restricciones de tamaño ni separación adicional. ¿Cuántas columnas ocupadas quedan y qué ancho tiene cada una?
  1. Cuatro columnas, exactamente 200px cada una.
  2. Tres columnas, aproximadamente 286,7px cada una.
  3. Tres columnas, aproximadamente 273,3px cada una.
  4. Cuatro columnas, exactamente 180px cada una.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

Un glosario largo debe continuar hacia abajo por una columna estrecha y después pasar a la siguiente, como en un periódico. ¿Qué función de maquetación CSS proporciona directamente ese flujo de texto?
  1. Disposición de cuadrícula con pistas 1fr repetidas.
  2. Disposición en varias columnas con columns.
  3. Disposición flex con flex-direction: row.
  4. Posicionamiento absoluto con desplazamientos iguales.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

Una imagen y su leyenda comparten grid-area: 1 / 1. La leyenda sigue a la imagen en el HTML y ninguna tiene z-index. ¿Cuál se pinta encima?
  1. La imagen se pinta encima.
  2. El hijo más alto se pinta encima.
  3. El hijo más ancho se pinta encima.
  4. La leyenda se pinta encima.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Set 4: Diagnostica la colocación y la alineación10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

Una cabecera no tiene relleno ni borde. Su primer hijo, un encabezado, tiene un margen superior de 22px que colapsa con el de la cabecera. La separación aparece fuera del fondo de la cabecera. ¿Qué cambio coloca la separación dentro de la cabecera?
  1. Conservar ese margen del hijo y añadir 22px de margen superior a la cabecera.
  2. Eliminar ese margen del hijo y añadir 22px de margen inferior a la cabecera.
  3. Eliminar ese margen del hijo y añadir 22px de relleno superior a la cabecera.
  4. Conservar ese margen del hijo y establecer la posición de la cabecera como relative.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

Un <ul> es un contenedor de cuadrícula. Cada <li> contiene un enlace. ¿Qué elementos se convierten en elementos de cuadrícula del <ul>?
  1. Los elementos de lista que son hijos directos.
  2. Los enlaces dentro de los elementos de lista.
  3. Los elementos de lista y sus enlaces.
  4. Los hermanos del contenedor de lista.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

Una tarjeta posicionada tiene un ancho de contenido de 280px, 18px de relleno a cada lado y un borde de 2px. Usa content-box. Un hijo absoluto tiene width: 50% y right: 12px, sin relleno, borde ni margen propios. ¿Cuál es el ancho del hijo y a qué distancia está su borde izquierdo del borde izquierdo del relleno de la tarjeta?
  1. 140px de ancho; su borde izquierdo está a 128px hacia dentro.
  2. 160px de ancho; su borde izquierdo está a 148px hacia dentro.
  3. 158px de ancho; su borde izquierdo está a 158px hacia dentro.
  4. 158px de ancho; su borde izquierdo está a 146px hacia dentro.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

Siete tarjetas flex tienen flex: 1 1 150px en una fila de 640px con ajuste y separaciones de 10px. No hay márgenes, relleno, bordes ni límites de tamaño. ¿Cómo se dividen las tarjetas en líneas y qué anchos producen las dos líneas?
  1. Tres y después cuatro; unos 206,7px y después 152,5px.
  2. Cuatro y después tres; 152,5px y después unos 206,7px.
  3. Cuatro y después tres; 160px en ambas líneas.
  4. Cuatro y después tres; 150px y después unos 213,3px.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

Un contenedor flex en español usa row-reverse. El grupo debe quedar junto al borde izquierdo, independientemente del inicio invertido de su eje principal. ¿Qué valor de justify-content sigue ese borde inicial de la dirección de escritura?
  1. flex-start
  2. flex-end con row
  3. start
  4. space-between
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

¿Qué lista de pistas desarrollada produce repeat(2, 80px 1fr)?
  1. 80px 80px 1fr 1fr
  2. 80px 1fr 80px 1fr
  3. 160px 2fr
  4. 80px 1fr 1fr
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

Una cuadrícula tiene siete tarjetas, cuatro columnas auto-fit que caben en su ancho y colocación normal fila por fila. La última fila tiene una celda vacía. ¿Colapsa auto-fit la cuarta columna y por qué?
  1. No; su elemento de la primera fila mantiene ocupada esa columna.
  2. Sí; cualquier celda vacía colapsa toda su columna.
  3. No; auto-fit nunca colapsa columnas generadas.
  4. Sí; solo la última fila determina la ocupación de la columna.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Dos columnas fijas de 140px están en una cuadrícula de 500px con una separación de 20px. No se aplica ninguna otra separación. Con justify-content: center, ¿cuánto espacio queda antes de la primera columna?
  1. 110px
  2. 90px
  3. 200px
  4. 100px
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

Una barra lateral adhesiva comparte una fila alta de cuadrícula con un artículo. Tiene top: 12px, ninguna altura fija y el estiramiento predeterminado; llena la fila y no se desplaza visiblemente. Ningún desbordamiento de un antepasado interfiere. ¿Qué cambio crea espacio para que se adhiera mientras permanece en el flujo?
  1. Establecer justify-self: start en la barra lateral.
  2. Establecer align-self: start en la barra lateral.
  3. Establecer position: absolute en la barra lateral.
  4. Establecer z-index: 12 en la barra lateral.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

Una caja usa width: 100%, 14px de relleno a izquierda y derecha y box-sizing: content-box, sin borde. El ancho de contenido de su padre es 390px. ¿Por qué supera esta caja al padre?
  1. A sus 390px de ancho de contenido se añaden 28px de relleno.
  2. Su ancho de contenido se reduce a 362px por el relleno.
  3. Su relleno reemplaza los márgenes exteriores del padre.
  4. Su ancho se mide desde el borde del área de visualización.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Set 5: Combina las reglas en disposiciones nuevas10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

Una imagen y un párrafo son hijos directos de un padre que ha cambiado del flujo normal a display: flex. La imagen sigue teniendo float: left, pero las últimas líneas del párrafo ya no continúan debajo de ella. ¿Cómo puede recuperarse el ajuste normal del texto alrededor de la imagen?
  1. Mantener flex y añadir clear: both al párrafo.
  2. Mantener flex y aumentar el margen izquierdo de la imagen flotante.
  3. Mantener flex y asignar al párrafo flex-grow: 1.
  4. Devolver ese padre al flujo normal y mantener la imagen flotante.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

Un botón fijo de ayuda está dentro de un panel transformado que se desplaza hasta salir de la vista. Ningún otro antepasado cambia la referencia del posicionamiento fijo. Una cabecera fija independiente de 72px también cubre los destinos de los enlaces de la misma página. El botón debe permanecer ligado al área de visualización y los destinos deben seguir visibles debajo de la cabecera. ¿Qué par de cambios resuelve ambas referencias?
  1. Elevar el z-index del botón; añadir 72px de margin-bottom a la cabecera fija.
  2. Hacer adhesivo el botón dentro del panel; añadir 72px de padding-bottom a html.
  3. Sacar el botón del panel transformado; añadir 72px de scroll-padding-top a html.
  4. Asignar top: 0 al botón; añadir 72px de border-bottom a los destinos de los enlaces.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

Dos paneles relativos comparten un contexto de apilamiento padre: A tiene z-index 1 y B tiene z-index 2. A contiene un componente aislado con una decoración negativa y un menú con z-index 100. El menú debe aparecer por encima de B, mientras que la decoración debe permanecer detrás del texto de su componente. ¿Qué cambio cumple ambos objetivos?
  1. Elevar A por encima de 2 y mantener aislado el componente.
  2. Elevar el menú por encima de 200 y quitar el aislamiento del componente.
  3. Mantener A en 1 y elevar el componente aislado por encima de 2.
  4. Quitar la posición del menú y mantener los niveles de ambos paneles.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

Los enlaces de una fila flex siguen una secuencia coherente en el HTML, pero order: -1 mueve visualmente el último enlace al principio. ¿Qué secuencias siguen el foco normal del teclado y la lectura del lector de pantalla?
  1. Solo el foco sigue el orden visual.
  2. Ambos siguen la secuencia del HTML.
  3. Solo la lectura sigue el orden visual.
  4. Ambos siguen la secuencia visual.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

Tres elementos flex de 80px que no crecen están en una fila de 500px en español con separaciones de 20px. El tercero tiene margin-inline-start: auto y el contenedor tiene justify-content: center. No se aplica ninguna otra separación. ¿A qué distancia del borde izquierdo del contenido empieza el tercer elemento?
  1. 420px
  2. 280px
  3. 310px
  4. 400px
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

Una cuadrícula tiene seis columnas explícitas y cuatro filas explícitas. Un panel usa grid-column: 2 / -1; grid-row: 2 / span 2. ¿Cuántas celdas cubre?
  1. 8 celdas
  2. 12 celdas
  3. 15 celdas
  4. 10 celdas
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

¿Qué propiedad abreviada de cuadrícula centra cada elemento en ambos ejes dentro de su área?
  1. place-content: center
  2. place-items: center
  3. text-align: center
  4. justify-content: center
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Una cuadrícula de artículo usa 1fr min(65ch, 100% - 32px) 1fr. En su fuente actual, 1ch equivale a 8px. Para anchos de contenido de 480px y 900px, ¿cuáles son los anchos de la pista central y qué colocación hace que una foto ocupe todo el ancho?
  1. 480px y 520px; grid-column: 1 / -1.
  2. 448px y 868px; grid-column: 2.
  3. 448px y 520px; grid-column: 1 / -1.
  4. 520px y 520px; grid-column: 1 / 3.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

Una colección de tarjetas necesita que los títulos, las descripciones y los pies se alineen entre tarjetas. Cada tarjeta tiene esos tres hijos directos, pero su cuadrícula actual de filas independientes no puede alinear sus límites con los de las tarjetas vecinas. ¿Qué relación debe sustituir ese dimensionamiento independiente de filas?
  1. Cada tarjeta abarca tres columnas del padre y las adopta mediante una subcuadrícula de columnas.
  2. Cada tarjeta ocupa una fila del padre y da a su pie un margen superior automático.
  3. Cada tarjeta ocupa una celda del padre y establece las tres filas hijas en 1fr.
  4. Cada tarjeta abarca tres filas del padre y las adopta mediante una subcuadrícula de filas.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

Una caja de 210px empieza a 150px del borde izquierdo del área de visualización. El área de visualización mide 340px de ancho. ¿Cuánto se extiende el borde derecho de la caja más allá del borde derecho del área de visualización?
  1. 20px
  2. 60px
  3. 130px
  4. 150px
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

¿Te atascas con una pregunta tuya? Ayuda con Tareas

Términos Clave

86 Términos Clave, cada uno con su definición

Á

Área con nombre
Un área con nombre es una región rectangular de cuadrícula descrita en cadenas de áreas de plantilla y asignada a un elemento con grid-area.
En una plantilla de dos columnas, el área con nombre de la cabecera se repite en ambas celdas de la fila superior para que la cabecera abarque la página.
Área de cuadrícula
Un área de cuadrícula es una región rectangular de una o más celdas de cuadrícula que puede contener o delimitar la colocación de un elemento.
En un panel organizado como cuadrícula, el área de cuadrícula de un gráfico abarca tres columnas y dos filas.
Área de visualización
El área de visualización es la zona visible de la ventana a través de la cual se ve un documento y que normalmente se usa como referencia para el posicionamiento fijo.
El control para volver arriba permanece a 18px del borde inferior del área de visualización mientras se desplaza el documento.

A

Aislamiento
El aislamiento es un control CSS cuyo valor isolate crea un contexto de apilamiento local sin cambiar la opacidad ni la posición de la caja.
El aislamiento mantiene la capa decorativa negativa de una tarjeta por encima de su propio fondo y debajo de su texto.
Ajuste de elementos flex en varias líneas
El ajuste de elementos flex en varias líneas permite que los elementos pasen a líneas flex adicionales cuando sus tamaños iniciales no caben en la línea actual.
El ajuste de elementos flex permite que una lista de etiquetas pase a una segunda línea mientras cada línea comparte su propio espacio.
Alineación de elementos
La alineación de elementos coloca cada elemento flex o de cuadrícula dentro del espacio que tiene asignado, como un área de cuadrícula o una línea flex.
La alineación de elementos de cuadrícula puede centrar una tarjeta estrecha dentro de su pista sin mover la propia pista.
Alineación del contenido
La alineación del contenido coloca las pistas de cuadrícula o las líneas flex como grupo dentro de su contenedor cuando hay espacio libre.
La alineación del contenido mueve tres columnas fijas hacia el centro del contenedor de cuadrícula como un solo grupo.
Alineación por la línea base
La alineación por la línea base coloca elementos que contienen texto de modo que sus líneas base se alineen pese a las diferencias de tamaño de fuente o altura de caja.
La alineación por la línea base hace que una etiqueta pequeña de barra de herramientas quede alineada de forma natural junto a un encabezado más grande.
Altura dinámica del área de visualización
La altura dinámica del área de visualización es la altura visible variable del área de visualización representada por dvh cuando los controles del navegador aparecen o desaparecen.
La altura dinámica del área de visualización ayuda a que una sección móvil a pantalla completa se ajuste mientras la barra de direcciones está visible.

B

Bloque contenedor
Un bloque contenedor es el rectángulo de referencia usado para calcular los tamaños o desplazamientos de una caja según las reglas de disposición aplicables.
La tarjeta relativa proporciona el bloque contenedor del distintivo absoluto en los bordes de su relleno.
Bloque en línea
Un bloque en línea es una caja que permanece en una línea de texto mientras acepta ancho, alto y separación vertical de caja.
Un enlace de navegación con estilo de bloque en línea puede tener un área de activación mayor gracias al relleno.

C

Caja de bloque
Una caja de bloque empieza una nueva línea de bloque y normalmente llena el ancho disponible cuando su ancho es automático.
Un párrafo sigue siendo una caja de bloque incluso cuando su ancho se reduce a 280px.
Caja en línea
Una caja en línea participa en una línea de texto y se ajusta junto con el texto en lugar de ocupar una línea de bloque completa.
El enlace es una caja en línea dentro de la frase, por lo que las palabras circundantes comparten su línea.
Capa superpuesta
Una capa superpuesta es una caja pintada sobre otro elemento, creada mediante áreas de cuadrícula superpuestas o capas posicionadas.
La leyenda de la imagen forma una capa superpuesta al compartir la celda de la imagen y aparecer después en el HTML.
Celda de cuadrícula
Una celda de cuadrícula es el espacio donde una fila de cuadrícula cruza una columna, delimitado por las líneas que las rodean.
Una leyenda y una imagen pueden compartir una celda de cuadrícula para crear una capa superpuesta sin posicionamiento absoluto.
Colapso de márgenes
El colapso de márgenes combina ciertos márgenes verticales de bloques que se tocan en un solo margen dentro del flujo normal.
El colapso de márgenes hace que un margen inferior de 20px y uno superior de 36px dejen una separación de 36px.
Colocación automática
La colocación automática asigna los elementos de cuadrícula sin posición a las celdas disponibles, normalmente en el orden del código fuente a lo largo de las filas, y añade pistas según sea necesario.
La colocación automática pone la séptima tarjeta en una tercera fila cuando la cuadrícula tiene tres columnas.
Colocación densa
La colocación densa rellena huecos anteriores de una cuadrícula con elementos posteriores más pequeños, lo que puede cambiar su secuencia visible.
La colocación densa puede mover una imagen pequeña de galería a un hueco situado por encima de una imagen grande anterior.
Columna de contenido
Una columna de contenido es una región de ancho limitado para contenido legible de una página, a menudo centrada con márgenes automáticos en línea y relleno lateral.
La columna de contenido centrada deja de expandirse en pantallas anchas y conserva el relleno en pantallas estrechas.
Contenedor de cuadrícula
Un contenedor de cuadrícula es una caja cuyo tipo de visualización de cuadrícula dispone sus hijos directos mediante pistas compartidas de filas y columnas.
El contenedor de cuadrícula del panel define columnas que permanecen alineadas entre varias filas de paneles.
Contenedor flex
Un contenedor flex es una caja cuyo tipo de visualización flex dispone sus hijos directos como elementos flex a lo largo de un eje principal.
La navegación se convierte en un contenedor flex, mientras que su lista de enlaces anidada puede tener su propia disposición.
Contenido a todo el ancho
El contenido a todo el ancho se extiende más allá de una columna de texto más estrecha para llenar el ancho disponible de la disposición circundante.
Una foto ocupa todo el ancho de la cuadrícula del artículo mientras los párrafos permanecen en su pista central.
Contexto de apilamiento
Un contexto de apilamiento es un grupo de cajas que se pinta como una sola unidad al compararse con otros grupos del contexto circundante.
El contexto de apilamiento de la cabecera permanece debajo de la región principal aunque su menú tenga un nivel interno muy alto.
Contexto de formato de bloque
Un contexto de formato de bloque es una región de flujo independiente que contiene sus elementos flotantes y separa sus márgenes de los márgenes de sus hijos.
Cuando un cuadro de perfil contiene una foto flotante, su contexto de formato de bloque hace que su fondo se extienda alrededor de esa foto.
Cuadrícula de formulario
Una cuadrícula de formulario usa pistas compartidas para el contenido del formulario, como una columna para etiquetas y otra para sus campos.
Una cuadrícula de formulario alinea los campos incluso cuando una etiqueta es mucho más larga que las de las demás filas.
Cuadrícula explícita
La cuadrícula explícita consta de las pistas y los límites definidos por la plantilla de cuadrícula, incluidas sus áreas de plantilla con nombre.
La línea -1 marca el final de la cuadrícula explícita, incluso cuando la colocación crea más pistas después de ella.
Cuadrícula implícita
La cuadrícula implícita consta de las pistas adicionales generadas cuando la colocación necesita espacio más allá de las pistas definidas explícitamente.
La lista de productos añade filas de cuadrícula implícitas a medida que llegan nuevas tarjetas sin cambiar su plantilla de columnas.

D

Desbordamiento
El desbordamiento es el contenido que se extiende más allá del área asignada a una caja y que CSS puede mostrar, recortar o hacer desplazable.
La línea de código larga causa un desbordamiento horizontal que puede mantenerse dentro de un bloque de código con desplazamiento local.
Dirección en línea
La dirección en línea es la dirección en la que avanza el texto dentro de una línea, por ejemplo, de izquierda a derecha en español o de derecha a izquierda en árabe.
Un margen automático al inicio de la dirección en línea pasa al lado derecho cuando el texto está en árabe.
Disposición anidada
Una disposición anidada es una organización interior cuyo contenedor es a su vez un elemento de una disposición exterior, lo que permite combinar métodos.
La cuadrícula de página y la columna flex de cada tarjeta forman una disposición anidada con funciones exteriores e interiores separadas.
Disposición bidimensional
Una disposición bidimensional controla filas y columnas conjuntamente para que los elementos puedan compartir límites en ambas direcciones, como en una cuadrícula.
Un panel necesita una disposición bidimensional para alinear sus secciones tanto entre filas como a lo largo de las columnas.
Disposición en varias columnas
La disposición en varias columnas continúa un flujo de contenido por columnas de texto sucesivas, usando un número de columnas o un ancho de columna preferido.
La disposición en varias columnas permite que un glosario largo continúe hacia abajo por su primera columna antes de pasar a la segunda.
Disposición unidimensional
Una disposición unidimensional organiza elementos principalmente a lo largo de un eje y gestiona las líneas ajustadas de forma independiente, como en flexbox.
Una barra de herramientas con ajuste usa una disposición unidimensional porque cada fila comparte solo su propio ancho libre.

E

Eje principal
El eje principal es la dirección en la que un contenedor flex dispone sus elementos, determinada por flex-direction.
Con una dirección de columna, el eje principal va verticalmente y justify-content reparte la altura libre.
Eje transversal
El eje transversal es la dirección perpendicular al eje principal de un contenedor flex, usada para la alineación transversal de elementos y líneas.
En una fila flex en español, el eje transversal va verticalmente, por lo que align-items puede centrar controles bajos.
Elemento de cuadrícula
Un elemento de cuadrícula es una caja hija directa en el flujo de un contenedor de cuadrícula, colocada automática o explícitamente en pistas de cuadrícula.
Una tarjeta es un elemento de cuadrícula incluso cuando usa su propia disposición flex para organizar su título y botón.
Elemento flex
Un elemento flex es una caja hija directa en el flujo que participa en la disposición flex de su padre, con reglas de tamaño flexible y alineación.
Cada tarjeta es un elemento flex de la fila exterior y también puede disponer su propio contenido en una columna.
Elemento flotante
Un elemento flotante es una caja movida a un lado de un contenedor para que el contenido en línea posterior pueda rodearla.
Un elemento flotante a la izquierda permite que las primeras líneas del artículo avancen junto al retrato antes de volver a ocupar todo el ancho.
Elemento posicionado
Un elemento posicionado tiene un valor calculado de position distinto de static, lo que permite aplicarle desplazamientos de posición.
Un elemento con posicionamiento relativo puede proporcionar la caja de referencia de un distintivo sin moverse.
Espacio libre
El espacio libre es el espacio del eje principal que queda después de restar del contenedor los tamaños iniciales de los elementos flex y las separaciones.
Una barra de herramientas con 120px libres después de contar sus bases y separaciones da ese espacio libre a sus controles que crecen.
Extensión
Una extensión en la colocación de cuadrícula indica cuántas pistas cruza un elemento desde un límite o una ubicación elegida automáticamente.
La declaración grid-column: 2 / span 3 da al panel una extensión de tres pistas de columna.

F

Flujo normal
El flujo normal es la disposición predeterminada de las cajas por el navegador en el orden del código fuente, con bloques que se apilan y contenido en línea que se ajusta en líneas.
En el flujo normal, añadir otro párrafo desplaza los párrafos posteriores hacia abajo a medida que crece su texto.
Función minmax()
La función minmax da a una pista de cuadrícula un tamaño mínimo y uno máximo, combinando un límite inferior con espacio para crecer.
Minmax con un mínimo de cero permite que una columna de igual tamaño permanezca estrecha mientras su texto largo se ajusta dentro.

G

Grupo de entrada
Un grupo de entrada combina un campo con controles relacionados, a menudo mediante un campo flexible y un botón de tamaño natural en una fila.
El grupo de entrada de búsqueda permite que el campo se reduzca mientras mantiene su botón de envío dentro del contenedor.
Guía superpuesta de disposición
Una guía superpuesta de disposición es un dibujo de las herramientas de desarrollo que muestra las pistas y líneas de una cuadrícula o la disposición de los elementos de un contenedor flex.
La guía superpuesta de disposición revela un elemento flex principal que ha crecido más que el espacio que le corresponde junto a una barra lateral.

L

Línea con nombre
Una línea con nombre es un límite de cuadrícula con una etiqueta, declarada en una lista de pistas o generada a partir de un área con nombre.
La línea con nombre main-start permite que otro panel comparta el límite inicial del área de contenido principal.
Línea de cuadrícula
Una línea de cuadrícula es un límite entre pistas de cuadrícula o alrededor de ellas, identificado mediante un número o nombre para colocar elementos.
La línea de cuadrícula 4 es el límite final cuando un elemento abarca las tres primeras columnas desde la línea 1.

M

Margen automático
Un margen automático absorbe el espacio disponible en su lado de un elemento y permite una separación flexible o el centrado en una disposición.
Un margen automático después del logotipo consume el ancho libre y mantiene los enlaces de navegación en el otro extremo.
Modelo de cajas flexibles
El modelo de cajas flexibles es un método de maquetación que reparte espacio entre elementos a lo largo de una fila o columna principal, con cada línea ajustada dimensionada de forma independiente.
Flexbox permite que los controles cortos y largos de una barra de herramientas compartan una fila antes de pasar a otra línea cuando el espacio es limitado.

O

Ocultación mediante display: none
La ocultación mediante display: none es un ajuste de display que elimina un elemento y sus descendientes de la disposición, sin dejar espacio reservado para sus cajas.
Usar display none para un mensaje cerrado elimina el espacio que ocuparía el mensaje visible.
Ocultación mediante visibility: hidden
La ocultación mediante visibility: hidden es un ajuste de visibilidad que oculta una caja mientras conserva el espacio que ocupa en la disposición.
Visibility hidden reserva espacio para el mensaje de estado, por lo que mostrarlo no tiene por qué mover el texto posterior.
Orden de apilamiento
El orden de apilamiento es el orden en que se pintan las cajas superpuestas y determina qué partes visibles aparecen delante.
La leyenda posterior aparece sobre la imagen hasta que una regla z-index cambia su orden de apilamiento.

P

Palabra clave auto-fill
Auto-fill es una palabra clave de repetición automática que crea tantas pistas como caben y conserva las pistas repetidas incluso cuando están vacías.
Auto-fill deja una última columna sin usar junto a una fila corta de tarjetas en lugar de estirar las tarjetas hasta ocuparla.
Palabra clave auto-fit
Auto-fit es una palabra clave de repetición automática que colapsa las pistas repetidas vacías y sus separaciones después de colocar los elementos.
Auto-fit permite que tres columnas flexibles de tarjetas se expandan cuando una cuarta columna generada no tiene ningún elemento en ella.
Patrón de imagen y texto
El patrón de imagen y texto es un patrón de componente con una imagen junto a texto flexible, como en una fila de perfil, comentario o producto.
El patrón de imagen y texto mantiene un avatar de 64px junto a un mensaje mientras el mensaje usa el ancho restante.
Patrón de pie de página al fondo
Un patrón de pie de página al fondo mantiene el pie en la parte inferior de una página corta y permite que siga al contenido más largo en el flujo normal.
El patrón de pie de página al fondo usa una fila principal flexible en lugar de sacar el pie del flujo.
Pista de cuadrícula
Una pista de cuadrícula es una fila o columna delimitada por dos líneas de cuadrícula vecinas, cuyo tamaño controlan las reglas de dimensionamiento de la cuadrícula.
Una pista de cuadrícula fija de 180px contiene la barra lateral mientras la pista fraccionaria adyacente ocupa el resto.
Posicionamiento absoluto
El posicionamiento absoluto saca una caja del flujo normal y la coloca mediante desplazamientos desde su bloque contenedor.
El posicionamiento absoluto coloca el distintivo a 10px de los bordes superior y derecho del relleno de la tarjeta.
Posicionamiento adhesivo
El posicionamiento adhesivo mantiene una caja en el flujo y después la limita en un umbral de desplazamiento mientras se mueve dentro de su bloque contenedor.
El posicionamiento adhesivo mantiene visibles los encabezados de tabla hasta que su tabla llega al final de su región de desplazamiento.
Posicionamiento fijo
El posicionamiento fijo saca una caja del flujo y normalmente la posiciona respecto al área de visualización mientras se desplaza el documento.
El posicionamiento fijo mantiene el botón de ayuda en la esquina de la ventana salvo que un antepasado que cumpla los requisitos cambie su referencia.
Posicionamiento relativo
El posicionamiento relativo desplaza el lugar donde se dibuja una caja mientras conserva su espacio original en el flujo normal.
El posicionamiento relativo mueve la etiqueta hacia abajo sin mover el párrafo que la sigue.
Propiedad abreviada flex
La propiedad abreviada flex combina grow, shrink y basis, en ese orden, para describir el tamaño flexible de un elemento en el eje principal.
La propiedad abreviada flex 0 0 180px da a una barra lateral una base de 180px sin crecer ni reducirse.
Propiedad abreviada inset
La propiedad abreviada inset establece los desplazamientos de posición top, right, bottom y left en una sola declaración.
Una capa superpuesta absoluta de tamaño automático con inset establecido en cero llena su bloque contenedor.
Propiedad abreviada place-items
La propiedad abreviada place-items establece conjuntamente align-items y justify-items, lo que permite expresar de forma concisa la alineación de elementos en dos ejes en cuadrícula.
Place-items establecido en center centra una caja de bienvenida baja dentro del área de cuadrícula de la sección principal destacada.
Propiedad align-content
La propiedad align-content distribuye las líneas flex en el eje transversal o las filas de cuadrícula en el eje de bloque cuando queda espacio.
Align-content puede centrar una línea flex en un contenedor con ajuste, pero no tiene efecto cuando el contenedor usa nowrap.
Propiedad align-items
La propiedad align-items establece la alineación de los elementos en el eje transversal flex o en el eje de bloque de la cuadrícula dentro del área de cada elemento.
Align-items establecido en baseline alinea una etiqueta de barra de herramientas con la primera línea de texto de un encabezado más grande.
Propiedad align-self
La propiedad align-self sustituye la elección de alineación de elementos del padre para un elemento flex o de cuadrícula en su eje de alineación.
Align-self establecido en start impide que una barra lateral de cuadrícula se estire hasta llenar una fila alta de artículo.
Propiedad clear
La propiedad clear mueve una caja del flujo normal por debajo de los elementos flotantes anteriores del lado seleccionado o de ambos lados.
Establecer clear en both hace que el encabezado de la siguiente sección empiece debajo de la imagen flotante del artículo.
Propiedad flex-basis
La propiedad flex-basis proporciona el tamaño inicial de un elemento flex en el eje principal antes de que el crecimiento o la reducción distribuyan el espacio.
Un flex-basis de 180px proporciona el ancho inicial de la tarjeta incluso cuando su propiedad width es de 140px.
Propiedad flex-grow
La propiedad flex-grow da a un elemento una parte relativa del espacio libre positivo después de tener en cuenta las bases flex y las separaciones.
Un valor de flex-grow de 2 da a una tarjeta el doble de espacio añadido que a una tarjeta vecina con valor 1.
Propiedad flex-shrink
La propiedad flex-shrink controla la pérdida de espacio mediante un peso igual al factor de reducción multiplicado por el tamaño base del elemento.
Dos factores flex-shrink iguales pueden restar cantidades distintas de píxeles cuando las tarjetas tienen bases diferentes.
Propiedad gap
La propiedad gap establece la separación entre elementos o pistas de una disposición; no crea relleno alrededor del exterior del contenedor.
Una separación de 12px mantiene separados los controles de la barra de herramientas sin añadir 12px alrededor de sus bordes exteriores.
Propiedad justify-content
La propiedad justify-content distribuye el espacio restante del eje principal en flexbox o alinea las columnas de cuadrícula a lo largo del eje en línea.
Justify-content centra un grupo flex solo cuando el dimensionamiento y los márgenes automáticos dejan espacio a su alrededor.
Propiedad justify-self
La propiedad justify-self alinea un elemento de cuadrícula en el eje en línea dentro de su propia área; no alinea elementos flex individuales.
Justify-self establecido en end mueve un distintivo de cuadrícula al extremo en línea de su área sin afectar a los elementos vecinos.
Propiedad scroll-padding-top
La propiedad scroll-padding-top reserva espacio superior en el área de visualización de destino de una caja de desplazamiento, útil debajo de cabeceras fijas.
Scroll-padding-top en la página ayuda a que un enlace a una sección muestre su encabezado debajo de la barra de navegación.
Propiedad z-index
La propiedad z-index establece un nivel de apilamiento para una caja posicionada o un elemento flex o de cuadrícula dentro de su contexto de apilamiento.
Un z-index alto en un menú desplegable sigue sin poder elevarlo por encima de un hermano situado más arriba que su contexto antepasado.

R

Redistribución del contenido
La redistribución del contenido es la adaptación del contenido a un ancho de visualización menor para que siga siendo utilizable sin desplazamiento innecesario en dos direcciones.
La comprobación de redistribución a 320 píxeles CSS revela un panel de ancho fijo que desplaza la página lateralmente.

S

Subcuadrícula
La subcuadrícula permite que una cuadrícula anidada adopte las pistas de su padre en un eje para que las partes interiores puedan alinearse entre componentes vecinos.
Una subcuadrícula de filas da a las tarjetas vecinas límites compartidos para títulos, descripciones y pies.

T

Tamaño mínimo automático
Un tamaño mínimo automático puede mantener un elemento flex o una pista de cuadrícula lo bastante grande para el contenido indivisible, impidiendo la reducción esperada.
El tamaño mínimo automático de una línea de código larga e ininterrumpible puede hacer que el elemento flex que la contiene supere el ancho que le corresponde.
Técnica de contención de flotantes
La técnica de contención de flotantes es una técnica antigua que añade un pseudoelemento con clear después del contenido de un contenedor.
Una hoja de estilo antigua usa la técnica de contención de flotantes para que la siguiente sección no suba y quede junto a una fila de cajas flotantes.
Tipo de visualización exterior
El tipo de visualización exterior controla cómo participa una caja generada en la disposición de su padre, por ejemplo, mediante colocación de bloque o en línea.
Un botón inline-flex tiene un tipo de visualización exterior en línea, por lo que puede situarse dentro de una línea de texto.
Tipo de visualización interior
El tipo de visualización interior controla cómo dispone una caja a sus propios hijos mediante un método como flujo normal, flexbox o cuadrícula.
Cambiar el tipo de visualización interior de un panel a grid dispone sus hijos directos en pistas.

U

Unidad ch
La unidad ch mide el ancho del dígito 0 en la fuente actual y proporciona un límite aproximado basado en caracteres para el ancho del texto.
Usar la unidad ch para una columna de texto de 65ch limita su ancho sin contar las letras reales.
Unidad fr
La unidad fr representa una parte del espacio de cuadrícula que queda después de las pistas fijas y las separaciones, sujeta a las restricciones de tamaño de las pistas.
Una columna que usa la unidad fr recibe espacio flexible después de restar la barra lateral y las separaciones de columna.

V

Valor calculado
Un valor calculado es el valor CSS resuelto que muestran las herramientas de desarrollo, útil para comprobar las reglas que afectan realmente a un elemento.
El valor calculado de display muestra que el padre pasó a ser flex aunque una regla anterior declaraba block.
Valor flow-root
Flow-root es un valor de display que crea una caja de bloque con su propia región de flujo independiente, que contiene a los hijos flotantes.
Flow-root en un contenedor de perfil que contiene una foto flotante mantiene el borde del contenedor alrededor de esa foto.

Sobre esta unidad

Por StudeliInformar de un error

Crea tus propios Materiales de Estudio

Convierte tus notas, diapositivas y documentos en Guías de Estudio, Preguntas de Práctica, Flashcards y 6 herramientas más.

Comenzar