Saltar al contenido principal

Tipos de sitio

Landing page

La página de un producto o de un evento: un prompt para un LLM y recetas para su cabecera, hero, secciones, datos destacados y pie de página.

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

Pega el prompt en cualquier LLM. Te pregunta por tu página en rondas cortas, te enseña el plan y no escribe nada hasta que dices "go".

Abrir el prompt

O construye tú la página con las recetas de abajo, en el orden en que las lee quien la visita. Usan solo las clases de core, del catálogo y de landing; Instalar LUZ indica los archivos que debes cargar.

El enlace para saltar al contenido, una cabecera que permanece arriba, el <main> que contiene los bloques de abajo y el pie de página. .o-page hace que el cuerpo de la página sea una columna al menos tan alta como la ventana, de modo que el pie de página quede abajo incluso en una página corta.

At 768 px of window and below, the links fold into the catalog's navbar menu. The example does not stick: on a page, .o-sticky keeps it at the top.

HTML
<body class="o-page luz-glow">
  <a class="luz-skip-link" href="#main-content">Skip to content</a>

  <header class="luz-site-header o-sticky">
    <div class="o-container o-container--inline o-row">
      <button class="luz-nav-toggle" type="button" popovertarget="site-nav" aria-label="Menu">
        <svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M4 6h16M4 12h16M4 18h16"/></g></svg>
      </button>
      <a class="luz-site-header__brand" href="/">Acme Stock</a>
      <nav class="luz-navbar" id="site-nav" aria-label="Main" popover>
        <ul class="luz-navbar__list">
          <li><a class="luz-navbar__link" href="/" aria-current="page">Product</a></li>
          <li><a class="luz-navbar__link" href="/customers/">Customers</a></li>
          <li><a class="luz-navbar__link" href="/pricing/">Pricing</a></li>
        </ul>
      </nav>
      <div class="o-row luz-site-header__actions">
        <a class="luz-btn luz-btn--ghost" href="/login/">Log in</a>
      </div>
    </div>
  </header>

  <main id="main-content" class="o-container o-stack luz-main" tabindex="-1">
    <!-- the hero, then one section for each block -->
  </main>

  <!-- the footer -->
</body>

Hero

El título de la página, una frase, la acción principal y una imagen: el hero. El único <h1> de la página está aquí. El texto va primero en el código fuente, así que es lo primero para un lector de pantalla y cuando las columnas se apilan.

Dale a la imagen su width y su height reales, y un alt que diga lo que muestra. No la cargues de forma diferida: es lo primero que aparece en la página.

New in version 2

Stock counts that keep up with the shop

Acme Stock updates every shelf as it sells, so you reorder before it runs out.

The picture goes under the text in a column narrower than 51rem, and beside it on a page of full width. The frame is empty, so it shows its flat surface, and the title is a paragraph: this page has its own <h1>.

HTML
<section class="luz-hero o-grid o-grid--split" aria-labelledby="hero-title">
  <div class="luz-hero__copy">
    <p class="luz-hero__eyebrow">New in version 2</p>
    <h1 class="luz-hero__title" id="hero-title">Stock counts that keep up with the shop</h1>
    <p class="luz-hero__lead">Acme Stock updates every shelf as it sells, so you reorder before it runs out.</p>
    <div class="o-actions">
      <a class="luz-btn luz-btn--primary" href="/trial/">Start free trial</a>
      <a class="luz-btn luz-btn--outline" href="/demo/">Book a demo</a>
    </div>
  </div>
  <div class="luz-hero__media">
    <div class="luz-image luz-image--4x3">
      <img src="/img/dashboard-1280.jpg" width="1280" height="960" alt="The stock dashboard, with the items running low marked" fetchpriority="high" decoding="async">
    </div>
  </div>
</section>

Sección

Un bloque de la página con su propio <h2>: una sección con una cabecera (etiqueta superior, título y entradilla) y características del mismo peso como tarjetas en una lista. Al ser una lista, indica a un lector de pantalla cuántas hay. .o-grid--split da dos columnas cuando cada una dispone de 16rem, y una si no.

Para una llamada a la acción cerca del final de la página, añade .luz-band de core a la sección: el color de fondo va de un borde al otro y el texto conserva su columna.

Why teams switch

One count for every shelf

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

  • Counts as it sells

    Every till updates the shelf it sold from.

  • Orders before it runs out

    You set the minimum; the order is ready when stock reaches it.

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 every shelf</h2>
  <p class="luz-section__lead">Acme Stock reads each sale as it happens, in every shop.</p>
  <ul class="o-grid o-grid--split">
    <li class="luz-card">
      <h3 class="luz-card__title">Counts as it sells</h3>
      <p class="luz-card__body">Every till updates the shelf it sold from.</p>
    </li>
    <li class="luz-card">
      <h3 class="luz-card__title">Orders before it runs out</h3>
      <p class="luz-card__body">You set the minimum; the order is ready when stock reaches it.</p>
    </li>
  </ul>
</section>

Datos destacados

Tres cifras que respaldan la promesa de la página, cada una un dato destacado con una etiqueta breve debajo, en una lista sobre la cuadrícula de core. Indica en la etiqueta o en la entradilla de dónde sale la cifra, y que sea una cifra que quien visita la página pueda comprobar.

  • 4,000+

    teams on the platform

  • 99.95%

    uptime in the last year

  • 12 min

    to set up, on average

Three columns from 768 px; in a narrower column the three stack.

HTML
<section class="o-stack luz-section" aria-labelledby="numbers-title">
  <h2 id="numbers-title">What teams see in their first year</h2>
  <ul class="o-grid o-grid--3">
    <li>
      <div class="luz-stat">
        <p class="luz-stat__value">4,000+</p>
        <p class="luz-stat__label">teams on the platform</p>
      </div>
    </li>
    <li>
      <div class="luz-stat">
        <p class="luz-stat__value">99.95%</p>
        <p class="luz-stat__label">uptime in the last year</p>
      </div>
    </li>
    <li>
      <div class="luz-stat">
        <p class="luz-stat__value">12 min</p>
        <p class="luz-stat__label">to set up, on average</p>
      </div>
    </li>
  </ul>
</section>

La marca y los enlaces que se buscan al final, en columnas: el pie de página. Cada columna es un <nav> que toma su nombre de su título. El patrón tiene también un pie de una sola línea.

From 768 px of window the brand is twice as wide as a column, in one row with them. Here it is a <div> with paragraphs for titles: this page has its own footer and headings.

HTML
<footer class="luz-site-footer">
  <div class="o-container o-container--inline o-grid">
    <div class="luz-site-footer__brand">
      <p><strong>Acme Stock</strong> <span>v2.0</span></p>
      <p>Stock counts that keep up with the shop.</p>
    </div>
    <nav class="luz-site-footer__col" aria-labelledby="footer-product">
      <h2 class="luz-site-footer__col-title" id="footer-product">Product</h2>
      <ul>
        <li><a href="/pricing/">Pricing</a></li>
        <li><a href="/trial/">Start free trial</a></li>
      </ul>
    </nav>
    <nav class="luz-site-footer__col" aria-labelledby="footer-company">
      <h2 class="luz-site-footer__col-title" id="footer-company">Company</h2>
      <ul>
        <li><a href="/about/">About</a></li>
        <li><a href="/contact/">Contact sales</a></li>
      </ul>
    </nav>
  </div>
</footer>