Saltar al contenido principal

Catálogo · Estructura de página

Contenido principal y secciones

Da ritmo a una página de landing: espacio amplio entre los bloques del contenido principal, menos espacio dentro de cada sección, con su encabezado, y un resplandor opcional detrás de la página.

Encaja mejor en: landing — el cuerpo de una landing page, entre la cabecera y el pie

Esta traducción la ha escrito una IA y todavía no la ha revisado ninguna persona. Leer esta página en inglés

Ejemplo

Un contenido principal con dos secciones: la primera muestra sus bloques como recuadros y la segunda tiene un encabezado real.

Heading
Lead
Content
Heading
Content

Sections are 64 px (--luz-space-3xl) apart in the main; their blocks, 16 px (--luz-space-md).

Why teams switch

One count for every shelf

Acme Stock reads each sale as it happens, in every shop.

Content

The head of a section: an eyebrow, a title and a lead. The title is a paragraph here, as this page already has its headings.

Upcoming talks

See all talks
Content

A title with a link to the whole list, at the end of the head. The title and the link are placeholders: write your own.

.luz-glow

Problemas conocidos

No se conocen problemas del contenido principal ni de las secciones. Una sección sobre la banda de core tiene los problemas de esta.

Código

Copiar el marcado

Bundler
import "@luz-ds/catalog/components/glow.css";
HTML
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@luz-ds/catalog@0.3.0/dist/components/glow.min.css" integrity="sha384-Jz/eFLH0Ygi6iqQ+xcRrRhniKJbUEGD6yVdCDsRKJDrTq4H6FcjT1dFGo7UmRWba" crossorigin="anonymous">
Bundler
import "@luz-ds/catalog/components/main.css";
HTML
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@luz-ds/catalog@0.3.0/dist/components/main.min.css" integrity="sha384-fSDcBofUvDclss8ermBOj5Mp3HwqS0KiPg5PdY1+ux+91hdpKOF9wcLmM+G3Coq4" crossorigin="anonymous">
Bundler
import "@luz-ds/catalog/components/section.css";
HTML
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@luz-ds/catalog@0.3.0/dist/components/section.min.css" integrity="sha384-IQZYJCtvKeQG+qt4Hfu95jMHtMMQam8TJG78lOSvj106ud4ncidLUQ+JjWKJKKpV" crossorigin="anonymous">
HTML
<body class="o-page luz-glow">
  <a class="luz-skip-link" href="#main-content">Skip to content</a>
  <!-- the header -->
  <main id="main-content" class="o-container o-stack luz-main" tabindex="-1">
    <!-- the hero -->
    <section class="o-stack luz-section" aria-labelledby="programme-title">
      <h2 id="programme-title">Programme</h2>
      <p>Twelve talks and six workshops over two days.</p>
    </section>
    <section class="o-stack luz-section luz-band" aria-labelledby="last-seats-title">
      <h2 id="last-seats-title">Registration closes on 30 April</h2>
      <div class="o-actions">
        <a class="luz-btn luz-btn--primary" href="#register">Register now</a>
      </div>
    </section>
  </main>
  <!-- the footer -->
</body>
HTML
<section class="o-stack luz-section" aria-labelledby="why-title">
  <p class="luz-section__eyebrow">Why teams switch</p>
  <h2 class="luz-section__title" id="why-title">One count for <em>every</em> shelf</h2>
  <p class="luz-section__lead">Acme Stock reads each sale as it happens, in every shop.</p>
  <!-- the content -->
</section>
HTML
<section class="o-stack luz-section" aria-labelledby="talks-title">
  <div class="o-row">
    <h2 class="luz-section__title" id="talks-title">Upcoming talks</h2>
    <a class="luz-section__more" href="/talks/">See all talks</a>
  </div>
  <!-- the content -->
</section>

Variantes y opciones

Clases de landing sobre los objetos de core, el encabezado de una sección y dos propiedades ajustables. Una sección destaca sobre la banda de core.

ClaseEfecto
.luz-main
En main.o-container.o-stack: 64 px (--luz-space-3xl) entre los bloques y después del último; ninguno antes del primero, porque el hero ya incluye el suyo.
.luz-section
En section.o-stack: 16 px (--luz-space-md) entre sus elementos.
.luz-section__eyebrow
Sobre el título: una etiqueta breve, como la etiqueta superior del hero.
.luz-section__title
El título, un tamaño menor que el del hero: 3xl; 2xl por debajo de 1024 px y xl a 640 px o menos.
.luz-section__lead
Una o dos frases de hasta 70 caracteres de ancho, en color de texto secundario; tamaño lg y base a 640 px o menos.
.luz-section__more
Un enlace al final del encabezado, como «See all talks». Ponlo con el título en un .o-row: un margen automático en el inicio en línea lo empuja al final, a la izquierda o a la derecha, y pasa a su propia línea, siempre al final
--luz-title-accent
Una propiedad ajustable: el color del em del título de un hero o una sección. Si no se define, usa el color del título.
.luz-glow
En el elemento .o-page: un tinte sutil de la marca arriba, en la esquina donde empieza la lectura, sobre un degradado desde la superficie de la página hasta la superficie atenuada; se elimina al imprimir.
--luz-glow-x
Una propiedad ajustable del elemento con resplandor: indica dónde se sitúa el tinte en el borde superior; 0% a la izquierda y 100% a la derecha, en ambas direcciones. Si no se define, va al borde inicial.

Cómo funciona

CSS de components/main.css, section.css y glow.css de @luz-ds/catalog sobre los objetos de core. No usa JavaScript.

  • .o-container de core da al contenido principal su ancho y sus márgenes interiores, y .o-stack dispone los elementos en columna; la capa del catálogo va después de los objetos de core, así que prevalecen sus separaciones.
  • El tinte del resplandor va en el borde inicial: arriba a la izquierda en una página de izquierda a derecha y arriba a la derecha en una de derecha a izquierda. --luz-glow-x lo desplaza; 50% lo centra en ambas direcciones.
  • El encabezado comparte sus reglas y la propiedad ajustable em con el hero.
  • El enlace de .luz-section__more se alinea al final con margin-inline-start: auto, así que sigue la dirección de lectura; se alinea con la línea base del título.
  • Usa una sección en un <section> cuando el grupo tenga su propio encabezado, o en un <div> cuando no lo tenga.

Sin JavaScript

No cambia nada: el contenido principal, las secciones y el resplandor usan CSS.

Teclado y ARIA

Ninguno de los tres tiene una interacción ni un rol propios.

  • El <main> es el punto de referencia principal y el destino del enlace para saltar al contenido: asígnale id y tabindex="-1".
  • El enlace de .luz-section__more es un enlace normal, en el orden de la página tras el título. Su texto nombra la página que abre, así que fuera de contexto sigue teniendo sentido en una lista de enlaces.
  • Un <section> con nombre mediante aria-labelledby se convierte en un punto de referencia de región; pon nombre solo a las secciones a las que se quiera saltar.
  • El resplandor no transmite significado: si desaparece (con colores forzados o al imprimir), no se pierde nada.

Contraste y foco están en la pestaña Diseño.

Diseño

Cuándo usarlo

Usa el contenido principal y sus secciones en todas las páginas de un sitio de landing para mantener el mismo espacio entre bloques. Usa el resplandor en una página corta, como una página de inicio o de registro, para darle calidez.

Cuándo no usarlo

No uses una sección para separar párrafos de texto seguido: los estilos del texto ya lo hacen.

  • Para colocar bloques uno al lado del otro, usa los objetos de cuadrícula de core, como ul.o-grid.o-grid--split para varias características con la misma importancia.
  • No uses el resplandor en páginas largas ni detrás de una banda: el tinte compite con ella.

Buenas y malas prácticas

Sí Agrupa bloques distintos con el mismo espaciado: un encabezado, una entradilla y el contenido.
No Uses texto seguido dentro de una sección: todos los párrafos reciben el mismo espacio y parecen bloques separados.
Sí Pon una etiqueta superior de pocas palabras que nombre el tema, sobre un título que explique la idea principal.
No Uses una frase como etiqueta superior: está en versalitas pequeñas y espaciadas, difíciles de leer si es larga.

Redacción del contenido

Empieza cada sección con un encabezado que indique para qué sirve.

  • Usa el nivel de encabezado siguiente al título de la página: <h2> debajo del <h1> del hero.
  • Incluye una idea por sección; una segunda idea necesita otra sección.
  • La etiqueta superior tiene entre una y tres palabras: es una etiqueta, no una frase. El título expresa la idea de la sección, en estilo de frase. La entradilla tiene una o dos frases; omite cualquiera de los tres elementos que no necesites.
  • Haz que el enlace de .luz-section__more diga adónde lleva: «See all talks», no «See all» ni «More». Su texto es tuyo; los ejemplos son de ejemplo.
  • Pon el em en una o dos palabras del título para destacarlas. Úsalo para enfatizar, no solo para añadir color.

Contraste y foco

El contenido principal y las secciones solo gestionan el espaciado; el encabezado añade texto principal y secundario sobre la página. El resplandor sitúa el texto sobre el tinte sutil de la marca en una esquina y sobre la superficie atenuada en la parte inferior.

ParteColor sobre el fondoClaroOscuroAlto contrasteMínimo
Título de sección
--luz-text-primary on --luz-surface-page
15.8:1
15.1:1
21.0:1
4.5:1
Enlace al final del encabezado
--luz-brand-primary on --luz-surface-page
5.6:1
7.7:1
14.1:1
4.5:1
Etiqueta superior y entradilla
--luz-text-secondary on --luz-surface-page
6.2:1
7.5:1
19.3:1
4.5:1
Texto en la esquina tintada
--luz-text-primary on --luz-brand-subtle over --luz-surface-page
14.3:1
12.7:1
20.1:1
4.5:1
Texto secundario en la esquina tintada
--luz-text-secondary on --luz-brand-subtle over --luz-surface-page
5.6:1
6.3:1
18.5:1
4.5:1
Texto en la parte inferior
--luz-text-primary on --luz-surface-muted
15.8:1
15.1:1
20.1:1
4.5:1
Texto secundario en la parte inferior
--luz-text-secondary on --luz-surface-muted
6.2:1
7.5:1
18.4:1
4.5:1

Calculado a partir de los valores de los tokens de cada modo, redondeado hacia abajo. El mínimo es el de WCAG 2.2 AA: 4,5:1 para el texto.

  • Foco: ninguno de los tres recibe el foco; los elementos que contienen conservan sus propios anillos.
  • Acento: --luz-title-accent es tuyo. Comprueba el contraste del color que definas con la superficie de la página en todos los modos que ofrezcas; el texto necesita 4,5:1.
  • Colores forzados: se elimina el resplandor y la página usa el fondo del sistema.

Tokens que utiliza

Los 18 tokens que leen, por familia, las reglas de .luz-main, .luz-section y .luz-glow del catálogo, definidas en components/main.css, section.css y glow.css. Cada familia enlaza a su página, donde están los valores de todos los modos. En Figma son variables con los mismos nombres: consulta Tokens en Figma.

Spacing and sizing
--luz-space-3xl, --luz-space-md, --luz-space-sm
Typography
--luz-font-heading, --luz-font-mono, --luz-font-sans, --luz-text-2xl, --luz-text-3xl, --luz-text-4xl, --luz-text-base, --luz-text-lg, --luz-text-xl, --luz-text-xs

Teclado y ARIA están en la pestaña Código.