Saltar al contenido principal

Core · Avisos y estado

Progreso

Muestra cuánto ha avanzado una tarea que lleva tiempo, mediante el elemento progress nativo.

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

Dos barras de progreso: una carga al 25 por ciento y una compilación al 67 por ciento.

Problemas conocidos

No se conocen problemas.

Código

Copiar el marcado

Un progress sin clase no necesita ninguna: tiene el tamaño del componente y el color de marca en su relleno.

HTML
<label for="upload">Uploading report.pdf</label>
<progress id="upload" value="25" max="100">25%</progress>

.luz-progress dibuja ella misma la pista y el relleno. Con la clase:

HTML
<label for="upload">Uploading report.pdf</label>
<progress class="luz-progress" id="upload" value="25" max="100">25%</progress>

Variantes y opciones

Una clase. El estado se establece con atributos nativos.

AtributoEfecto
value y max
Cuánto se ha completado; max vale 1 si no lo indicas
no hay value
Indeterminado: la tarea está en curso, pero se desconoce cuánto durará

Cómo funciona

El elemento nativo <progress>, con estilos de components/progress.css: una barra de 8 px, del ancho completo, con el color de marca como relleno y un borde de 1 px del color del borde del campo, para que se vea toda su longitud en cualquier superficie.

  • El navegador expone el rol y el valor a las tecnologías de asistencia.
  • En los navegadores Chromium y WebKit, el relleno se desliza hasta el nuevo valor; con el movimiento reducido, salta directamente.
  • Con colores forzados, la barra conserva un borde y muestra el relleno con el color de resaltado del sistema.

Sin JavaScript

La barra muestra el valor del marcado. Para cambiarlo necesitas tu propio script, que establece value.

Teclado y ARIA

Una barra de progreso no es interactiva y no recibe el foco.

  • Asígnale un nombre con un elemento <label> o con aria-label cuando no se muestre ninguna etiqueta.
  • Los lectores de pantalla no anuncian cada cambio. Anuncia el inicio y el final en una región dinámica cortés (role="status").

El contraste y el foco están en la pestaña Diseño.

Diseño

Cuándo usarlo

Usa una barra de progreso para tareas que duren más de unos segundos, como una carga o una compilación.

Cuándo no usarlo

No uses una barra de progreso para un valor que no represente una tarea.

  • Para una medida dentro de un intervalo conocido, como el espacio de almacenamiento usado, usa un medidor.
  • No la uses como decoración.

Qué hacer y qué no

Hazlo Describe la tarea, que tiene un final, e incluye la cifra: «Subiendo informe.pdf, 25 %».
No lo hagas El espacio usado es una medida, no una tarea: una barra de progreso da a entender que terminará. Usa un medidor.

Cómo escribir el contenido

Indica qué está pasando, no solo la cifra: «Subiendo informe.pdf».

  • Incluye la cifra en el nombre o junto a la barra: «Carga, 25 %».
  • Cuando termine, indícalo: «Carga completada».

Contraste y foco

La parte completada usa el color de marca sobre una pista apagada. La pista tiene un borde del color del borde del campo, para que se vea dónde acaba la barra.

ParteColor sobre el fondoClaroOscuroAlto contrasteRequisitos
Parte completada frente a la pista
--luz-brand-primary on --luz-surface-muted
5.6:1
7.7:1
13.5:1
3:1
Borde de la pista sobre la página
--luz-input-border on --luz-surface-page
3.7:1
4.2:1
21.0:1
3:1

Medido a partir de los valores de los tokens de cada modo, redondeado hacia abajo. Los requisitos son los mínimos de WCAG 2.2 AA: 4,5:1 para el texto y 3:1 para los anillos de foco, los bordes y los iconos.

  • Foco: la barra no lo recibe.
  • No solo color: escribe la cifra junto a la barra o inclúyela en su nombre, para que el valor nunca dependa de distinguir las dos partes de la barra.

Tokens que usa

Los 6 tokens que lee components/progress.css, agrupados por familia. Cada familia enlaza a su página, con los valores de cada modo. En Figma son variables con los mismos nombres: consulta Tokens en Figma.

Radius
--luz-radius-sm
Motion
--luz-duration-slow, --luz-easing-enter

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