DIANA

Diseño Aplicaciones Navarra

Pagination

Pattern de navegación paginada con variantes numéricas, controles de avance, resumen de resultados y selectores auxiliares.

Estado: review

1. Paginación Numérica Básica

Mostrar HTML
<nav class="gn-pagination" aria-label="Navegación de páginas">
  <div class="gn-pagination__nav">
    <ul class="gn-pagination__list">
      <li class="gn-pagination__item"><a href="#" class="gn-pagination__link gn-pagination__link--current" aria-current="page">1</a></li>
      <li class="gn-pagination__item"><a href="#" class="gn-pagination__link">2</a></li>
      <li class="gn-pagination__item"><a href="#" class="gn-pagination__link">3</a></li>
    </ul>
  </div>
</nav>

2. Controles de Avance y Foco Visible

Botones de anterior/siguiente solo con icono. Foco simulado en el número 2.

Mostrar HTML
<nav class="gn-pagination" aria-label="Navegación de resultados">
  <div class="gn-pagination__nav">
    <a href="#" class="gn-pagination__button gn-pagination__button--icon" aria-label="Página anterior">
      <svg focusable="false" viewBox="0 0 24 24" fill="currentColor" width="20" height="20" aria-hidden="true"><path d="M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z"/></svg>
    </a>
    <ul class="gn-pagination__list">
      <li class="gn-pagination__item"><a href="#" class="gn-pagination__link gn-pagination__link--current" aria-current="page">1</a></li>
      <li class="gn-pagination__item"><a href="#" class="gn-pagination__link is-focus">2</a></li>
      <li class="gn-pagination__item"><a href="#" class="gn-pagination__link">3</a></li>
    </ul>
    <a href="#" class="gn-pagination__button gn-pagination__button--icon" aria-label="Página siguiente">
      <svg focusable="false" viewBox="0 0 24 24" fill="currentColor" width="20" height="20" aria-hidden="true"><path d="M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z"/></svg>
    </a>
  </div>
</nav>

3. Paginación con Ellipsis

Mostrar HTML
<nav class="gn-pagination" aria-label="Catálogo de productos">
  <div class="gn-pagination__nav">
    <a href="#" class="gn-pagination__button gn-pagination__button--icon" aria-label="Página anterior">
      <svg focusable="false" viewBox="0 0 24 24" fill="currentColor" width="20" height="20" aria-hidden="true"><path d="M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z"/></svg>
    </a>
    <ul class="gn-pagination__list">
      <li class="gn-pagination__item"><a href="#" class="gn-pagination__link">1</a></li>
      <li class="gn-pagination__item"><span class="gn-pagination__link gn-pagination__link--ellipsis" aria-hidden="true">...</span></li>
      <li class="gn-pagination__item"><a href="#" class="gn-pagination__link">4</a></li>
      <li class="gn-pagination__item"><a href="#" class="gn-pagination__link gn-pagination__link--current" aria-current="page">5</a></li>
      <li class="gn-pagination__item"><a href="#" class="gn-pagination__link">6</a></li>
      <li class="gn-pagination__item"><span class="gn-pagination__link gn-pagination__link--ellipsis" aria-hidden="true">...</span></li>
      <li class="gn-pagination__item"><a href="#" class="gn-pagination__link">10</a></li>
    </ul>
    <a href="#" class="gn-pagination__button gn-pagination__button--icon" aria-label="Página siguiente">
      <svg focusable="false" viewBox="0 0 24 24" fill="currentColor" width="20" height="20" aria-hidden="true"><path d="M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z"/></svg>
    </a>
  </div>
</nav>

4. Botones Deshabilitados y Resumen de Resultados

Mostrar HTML
<nav class="gn-pagination" aria-label="Listado de noticias">
  <div class="gn-pagination__nav">
    <button type="button" class="gn-pagination__button gn-pagination__button--icon" aria-label="Página anterior" disabled>
      <svg focusable="false" viewBox="0 0 24 24" fill="currentColor" width="20" height="20" aria-hidden="true"><path d="M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z"/></svg>
    </button>
    <ul class="gn-pagination__list">
      <li class="gn-pagination__item"><a href="#" class="gn-pagination__link gn-pagination__link--current" aria-current="page">1</a></li>
      <li class="gn-pagination__item"><a href="#" class="gn-pagination__link">2</a></li>
    </ul>
    <a href="#" class="gn-pagination__button gn-pagination__button--icon" aria-label="Página siguiente">
      <svg focusable="false" viewBox="0 0 24 24" fill="currentColor" width="20" height="20" aria-hidden="true"><path d="M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z"/></svg>
    </a>
  </div>
  <div class="gn-pagination__summary" aria-live="polite">
    1-25 de 100
  </div>
</nav>

5. Selector de Página Interno (Con Texto Anterior/Siguiente)

El patrón reutiliza estructuralmente un componente select en el centro de la navegación.

Mostrar HTML
<nav class="gn-pagination" aria-label="Archivos">
  <div class="gn-pagination__nav">
    <a href="#" class="gn-pagination__button gn-pagination__button--nav">
      <svg focusable="false" class="gn-pagination__icon" viewBox="0 0 24 24" fill="currentColor" width="20" height="20" aria-hidden="true"><path d="M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z"/></svg>
      Anterior
    </a>
    <div class="gn-select gn-select--sm gn-pagination__select">
      <label for="page-selector" class="gn-select__label sr-only">Ir a la página</label>
      <select id="page-selector" class="gn-select__control">
        <option value="1">1</option>
        <option value="2" selected>2</option>
        <option value="3">3</option>
      </select>
    </div>
    <a href="#" class="gn-pagination__button gn-pagination__button--nav gn-pagination__button--nav-next">
      Siguiente
      <svg focusable="false" class="gn-pagination__icon" viewBox="0 0 24 24" fill="currentColor" width="20" height="20" aria-hidden="true"><path d="M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z"/></svg>
    </a>
  </div>
  <div class="gn-pagination__summary" aria-live="polite">
    26-50 de 250
  </div>
</nav>

6. Configuración Compleja: Items por Página + Resumen

Variante con numeración de páginas entre los controles de Anterior y Siguiente, sin selector central.

Mostrar HTML
<nav class="gn-pagination" aria-label="Resultados paginados">
  <div class="gn-pagination__nav">
    <a href="#" class="gn-pagination__button gn-pagination__button--nav">
      <svg focusable="false" class="gn-pagination__icon" viewBox="0 0 24 24" fill="currentColor" width="20" height="20" aria-hidden="true"><path d="M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z"/></svg>
      Anterior
    </a>
    <ul class="gn-pagination__list">
      <li class="gn-pagination__item"><a href="#" class="gn-pagination__link">1</a></li>
      <li class="gn-pagination__item"><a href="#" class="gn-pagination__link gn-pagination__link--current" aria-current="page">2</a></li>
      <li class="gn-pagination__item"><a href="#" class="gn-pagination__link">3</a></li>
      <li class="gn-pagination__item"><a href="#" class="gn-pagination__link">4</a></li>
    </ul>
    <a href="#" class="gn-pagination__button gn-pagination__button--nav gn-pagination__button--nav-next">
      Siguiente
      <svg focusable="false" class="gn-pagination__icon" viewBox="0 0 24 24" fill="currentColor" width="20" height="20" aria-hidden="true"><path d="M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z"/></svg>
    </a>
  </div>
  <div class="gn-pagination__summary" aria-live="polite">
    26-50 de 100
  </div>
</nav>

7. Configuración Compleja: Items por Página + Resumen

Mostrar HTML
<nav class="gn-pagination" aria-label="Tabla de datos">
  <div class="gn-pagination__nav">
    <a href="#" class="gn-pagination__button gn-pagination__button--icon" aria-label="Página anterior">
      <svg focusable="false" viewBox="0 0 24 24" fill="currentColor" width="20" height="20" aria-hidden="true"><path d="M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z"/></svg>
    </a>
    <ul class="gn-pagination__list">
      <li class="gn-pagination__item"><a href="#" class="gn-pagination__link">1</a></li>
      <li class="gn-pagination__item"><a href="#" class="gn-pagination__link gn-pagination__link--current" aria-current="page">2</a></li>
    </ul>
    <a href="#" class="gn-pagination__button gn-pagination__button--icon" aria-label="Página siguiente">
      <svg focusable="false" viewBox="0 0 24 24" fill="currentColor" width="20" height="20" aria-hidden="true"><path d="M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z"/></svg>
    </a>
  </div>
  <div class="gn-pagination__controls">
    <div class="gn-pagination__selector">
      <label for="items-selector" class="gn-pagination__selector-label">Items por página</label>
      <div class="gn-select gn-select--sm gn-pagination__select">
        <select id="items-selector" class="gn-select__control">
          <option value="25" selected>25</option>
          <option value="50">50</option>
          <option value="100">100</option>
        </select>
      </div>
    </div>
    <div class="gn-pagination__summary" aria-live="polite">
      26-50 de 250
    </div>
  </div>
</nav>