Paginado

El paginado permite a la persona usuaria navegar entre páginas cuando el contenido está dividido en varias páginas.


Uso

Cuándo usar

  • Cuando hay gran cantidad de información y conviene dividirla en varias páginas para que sea más fácil de recorrer, por ejemplo, en resultados de búsqueda.
  • Cuando el espacio es limitado y la estructura visual de la página no permite mostrar todo el contenido de una sola vez, por ejemplo, en tablas de datos.

Cuándo no usar

  • Para contenido que puede entrar razonablemente en una página.
  • Para cambiar entre distintas vistas o pantallas. En ese caso, usá pestañas.

Tipos

Los paginados permiten moverse entre diferentes secciones de contenido. Pueden mostrar números para acceder directamente a una página específica, o descripciones como "Anterior" y "Siguiente" para avanzar o retroceder de forma secuencial.

Descriptivo

Permite avanzar o retroceder entre secciones usando botones como "Anterior" y "Siguiente", facilitando una navegación secuencial. Este tipo se usa principalmente en la versión mobile.

Anterior Siguiente

Numerado

Muestra una secuencia de páginas y permite ir directamente a una de ellas. La página activa se resalta para indicar la ubicación actual. Se recomienda su uso en dispositivos desktop y tablet.

Numerado

Comportamiento del paginado numerado

Cuando el total supera las diez, el paginado se trunca automáticamente. La visibilidad depende de la página actual, con estas reglas:

  • La primera y la última página siempre estarán visibles.
  • La página anterior y la siguiente a la actual siempre estará visible, salvo que esté en los extremos.
  • Siempre se mostrará un máximo de diez páginas, incluidas las páginas truncadas.

Ejemplo de uso

Ejemplos de uso

Disposición

En cuerpo de páginas

El paginado se ubica siempre centrado en relación al contenido. Puede mostrar hasta 9 botones, incluyendo los puntos suspensivos.

Disposición

En tablas de datos

En tablas, el paginado se muestra debajo del contenido y alineado a la derecha. Puede incluir un indicador de resultados en pantalla.

Tabla de datos

Contenido

Texto de la etiqueta

El texto de la etiqueta en el componente de paginación debe ser breve y claro. Debe indicar la cantidad de ítems por página y el número total de páginas o ítems. Recomendamos no modificar este texto, salvo que sea necesario para casos de uso específicos.

Numerado

<nav aria-label="Ejemplo de paginado numerado inicial">
  <ul class="pagination">
    <li class="page-item" style="opacity: 0;">
      <span class="page-link">
        <span class="page-previous-icon" aria-hidden="true"></span>
        <span class="page-previous-text">Anterior</span>
      </span>
    </li>
    <li class="page-item active"><a class="page-link" href="#">1</a></li>
    <li class="page-item"><a class="page-link" href="#">2</a></li>
    <li class="page-item"><a class="page-link" href="#">3</a></li>
    <li class="page-item"><a class="page-link" href="#">4</a></li>
    <li class="page-item"><a class="page-link" href="#">5</a></li>
    <li class="page-item no-events"><span class="page-link">...</span></li>
    <li class="page-item"><a class="page-link" href="#">10</a></li>
    <li class="page-item">
      <a class="page-link" href="#">
        <span class="page-next-text">Siguiente</span>
        <span class="page-next-icon" aria-hidden="true"></span>
      </a>
    </li>
  </ul>
</nav>

Descriptivo

<div class="pagination">
  <div class="page-navigation">
    <div class="page-item">
      <a class="btn page-link" href="#">
        <span class="page-previous-icon" aria-hidden="true"></span>
        <span class="page-next-text">Anterior</span>
      </a>
    </div>
    <div class="page-item">
      <a class="btn page-link" href="#">
        <span class="page-next-text">Siguiente</span>
        <span class="page-next-icon" aria-hidden="true"></span>
      </a>
    </div>
  </div>
</div>

Estado deshabilitado

<div class="pagination">
  <div class="page-navigation">
    <div class="page-item disabled">
      <a class="btn page-link" href="#">
        <span class="page-previous-icon" aria-hidden="true"></span>
        <span class="page-next-text">Anterior</span>
      </a>
    </div>
    <div class="page-item disabled">
      <a class="btn page-link" href="#">
        <span class="page-next-text">Siguiente</span>
        <span class="page-next-icon" aria-hidden="true"></span>
      </a>
    </div>
  </div>
</div>

Anatomía

Anatomia
ElementoCarácter
1. Botón anteriorNavegación con iconografía "chevron_left" que redirecciona a la "página anterior".
2. Enlace de páginaNúmero de página secuencial.
3. TruncamientoIndica que existen más páginas que no se pueden mostrar para evitar la sobrecarga de información.
4. Enlace de página activaResalta la página actual.
5. Botón siguienteNavegación con iconografía "chevron_right" que redirecciona a la "página siguiente".

Estados

Predeterminado (default)

Estado predeterminado de botones del paginado en una interfaz.

Estado Default

Sobre (hover)

Estado que adopta cada botón del paginado cuando un cursor pasa sobre él, cambiando su apariencia para indicar su interactividad a la persona usuaria.

Estado Sobre

En Foco (focus)

Es un principio de accesibilidad que asegura que cualquier elemento interactivo en una interfaz sea claramente visible cuando recibe la atención del usuario, especialmente al ser navegado con el teclado. En Obelisco se utiliza un borde o anillo (focus ring) por fuera del componente en un color distintivo.

Estado En Foco

Seleccionado

Estado que adopta el número de página seleccionado en el paginado, indicando visualmente que es la página en la que la persona usuaria se encuentra navegando.

Estado Seleccionado

Deshabilitado (disabled)

Estado que indica que los botones no están disponibles para la interacción, lo que significa que no pueden activarse.

Estado Deshabilitado

Espaciados

La separación horizontal entre botones del paginado es de 8px.

Espaciados

Navegación alternativa

El componente de Paginado está construido para ser accesible mediante navegación por teclado y reconocible por lectores de pantalla, comunicando sus diferentes estados de forma clara.

TABENTER

Utilizando el tab la persona usuaria puede navegar a través de elementos de la interfaz. Además, con el enter, puede accionar los elementos sobre el item en el que la persona está posicionada.

Navegacion Alternativa

Etiquetado descriptivo

La etiqueta que engloba al paginado debe ser un <nav></nav>, el cual necesita un atributo aria-label que comunique que el componente es de paginación. Dentro de él debería tener una lista sin enumerar, <ul></ul>, con sus respectivos items, <li></li>.

Cada etiqueta <a></a> debe estar acompañada de aria-label indicando la página a la que se redirigía, por ejemplo: "Ir a la página 7".

Interactividad limitada

Cuando un botón está deshabilitado, por ejemplo el botón "Anterior", es importante indicarlo correctamente mediante el atributo "disabled". Además, debe evitarse que el foco del teclado llegue al componente, y debe comunicarse su estado a tecnologías de asistencia.

Funcionalidad técnica

El elemento que esté seleccionado, es decir, que marque la página en la que se encuentra la persona usuaria deberá tener activado el atributo aria-current="page".

<nav aria-label="Ejemplo de paginado numerado inicial">
  <ul class="pagination">
    <li class="page-item" style="opacity: 0;">
      <span class="page-link">
        <span class="page-previous-icon" aria- 
          hieden="true"></span>
        <span class="page-previous-text">Anterior</span>
      </span>
    </li>
    <li class="page-item active"><a class="page-link" href="#">1</a>
    </li>
    <li class="page-item"><a class="page-link" href="#">2</a></li>
    <li class="page-item"><a class="page-link" href="#">3</a></li>
    <li class="page-item"><a class="page-link" href="#">4</a></li>
    <li class="page-item"><a class="page-link" href="#">5</a></li>
    <li class="page-item no-events"><span class="page-link">...
     </span>
    </li>
    <li class="page-item"><a class="page-link" href="#">10</a></li>
    <li class="page-item">
      <a class="page-link" href="#">
        <span class="page-next-text">Siguiente</span>
        <span class="page-next-icon" aria-hidden="true"></span>
      </a>
    </li>
  </ul>
</nav>

Criterios WCAG aplicables

1.3.1 Info and Relationships (Level A)

La información, la estructura y las relaciones transmitidas a través de la presentación pueden determinarse mediante programación o están disponibles en el texto.

1.3.2 Meaningful Sequence (Level A)

Cuando la secuencia en que se presenta el contenido afecta su significado, se puede determinar mediante programación una secuencia de lectura correcta.

1.4.1 Use of Color (Level A)

El color no se utiliza como el único medio visual para transmitir información, indicar una acción, provocar una respuesta o distinguir un elemento visual.

1.4.11 Non-text Contrast (Level AA)

La presentación visual de los siguientes elementos tiene una relación de contraste de al menos 3:1 con respecto a los colores adyacentes: componentes de la interfaz de usuario; objetos gráficos.

1.4.12 Text Spacing (Level AA)

No se produce pérdida de contenido ni funcionalidad al configurar todo lo siguiente y no cambiar ninguna otra propiedad de estilo: altura de línea establecida en 1,5; espaciado después de párrafos establecido al menos en 2 veces el tamaño de fuente; espaciado entre letras establecido al menos en 0,12 veces el tamaño de fuente; espaciado entre palabras establecido al menos en 0,16 veces el tamaño de fuente.

1.4.3 Minimum Contrast (Level AA)

La presentación visual del texto y las imágenes del texto tiene una relación de contraste de al menos 4,5:1.

2.1.1 Keyboard (Level A)

Toda la funcionalidad del contenido se puede operar a través de una interfaz de teclado.

2.1.2 No Keyboard Trap (Level A)

Si el foco del teclado se puede mover a un componente de la página usando una interfaz de teclado, entonces el foco se puede mover lejos de ese componente usando solo una interfaz de teclado.

2.2.1 Timing Adjustable (Level A)

Si hay limitaciones de tiempo establecidas por el contenido, se debe cumplir una de las siguientes condiciones: desactivar, ajustar, extender, excepción en tiempo real, excepción esencial, excepción de 20 horas.

2.5.3 Label in Name (Level A)

Para los componentes de la interfaz de usuario con etiquetas que incluyen texto o imágenes de texto, el nombre contiene el texto que se presenta visualmente.

4.1.3 Status Messages (Level AA)

En el contenido implementado mediante lenguajes de marcado, los mensajes de estado se pueden determinar mediante programación a través de roles o propiedades, de modo que puedan presentarse al usuario mediante tecnologías de asistencia sin recibir el foco.

Navegación de pie de página