Saltar al contenido
menumenu tanreiexpand_morecontrasttranslate
tanreiexpand_more
Primeros pasosWebReactSwiftUIJetpack ComposeFlutterReact NativePreajustesTu propio sistema de diseñoUsar Tanrei con agentes de IAMarcaTokens de diseñoSistemas de diseño y personalizaciónTheme StudioColorTipografíaIconosFormaElevaciónMovimientoEstados de interacciónComportamientoDiseño de páginaAccesibilidadTextosTokens de colorTokens de la escala tipográficaTokens de formaTokens de elevaciónTokens de movimientoTokens de estadoTokens de espacio y de medidaComponentesBotónBotón de acción principalBotón segmentadoGrupo de botonesBotón con menúBarra de herramientasBotón de copiarCasilla de verificaciónBotón de opciónInterruptorChipMenúControl deslizanteCampo de control deslizanteCalendarioDateTimePickerGrupo de camposGrupo de botones de opciónGrupo de casillas de verificaciónSelectCampo de selecciónBarra de menúsSubida de archivosSelector de archivos AvanzadoZona de soltar archivosEntrada de texto AvanzadoCampo de textoCampo de chipsCampoCuadro combinado AvanzadoCampo de cuadro combinadoEntrada numérica AvanzadoCampo numéricoEntrada de color AvanzadoCampo de colorEntrada de código de un solo uso AvanzadoCampo de código de un solo usoEntrada de texto incrustada AvanzadoCuadro de redacción de chatTarjetaDivisorCapa modal AvanzadoDiálogoListaFila de listaHoja inferiorHoja lateralCarruselBloque de códigoTablaPopoverPasosAcordeónLista de descripcionesFiguraEstructura de la aplicaciónCabecera de páginaVista de árbolLínea de tiempoVista previa de imágenesTirador de tamañoMarco redimensionableÁrea de desplazamientoInsigniaIndicador de progresoMedidorContador animadoIndicador de cargaSnackbarTooltipAtajo de tecladoTagCódigo en líneaCalloutAvatarEstado vacíoGrupo de tagsEsqueletoElemento de archivoMuestraTexto en marquesinaPestañasVista de pestañasBarra de la aplicaciónBarra de navegaciónPanel de navegaciónBúsquedaEnlacePaginaciónEnlaces anterior y siguienteIndicador de pasosRuta de navegaciónTabla de contenidoTarjeta de enlaceMenú FABEstadoCómo se construye TanreiCómo contribuirLicencia y atribución
InicioComponentesIndicador de progreso

Indicador de progreso

Muestra cuánto ha avanzado una tarea, o que está en curso cuando no se sabe cuánto, en forma de barra o de anillo.

content_copyVer en Markdown
Categoría
Comunicación
Tokens
comp.progress-indicator
Nivel
Base

Descripción general

Web
tanrei-progress-indicator
schedule
SwiftUI
TanreiProgressIndicator
schedule
Jetpack Compose
TanreiProgressIndicator
schedule
Flutter
TanreiProgressIndicator
schedule
React Native
ProgressIndicator
schedule

Generado a partir de docs/status/status.json, specs/progress-indicator.spec.json

Lineal y circular

Uso

Los ejemplos de Web y React muestran la especificación actual. SwiftUI, Compose, Flutter y React Native van rezagados: todavía no tienen separation, y sus ejemplos muestran lo que ofrecen.

<tanrei-progress-indicator value="0.4" label="Subiendo report.pdf"></tanrei-progress-indicator>
<tanrei-progress-indicator value="3" max="10" value-text="3 de 10 archivos" label="Subiendo"></tanrei-progress-indicator>

<!-- Sin value: indeterminado, como un <progress> sin él. -->
<tanrei-progress-indicator variant="circular" size="small" label="Sincronizando"></tanrei-progress-indicator>

<!-- Una separación entre el indicador y el resto de la pista, elija lo que elija el sistema de diseño. -->
<tanrei-progress-indicator separation="gap" value="0.4" label="Subiendo report.pdf"></tanrei-progress-indicator>

<script type="module">
  import '@tanrei/web/components/progress-indicator';
  const bar = document.querySelector('tanrei-progress-indicator');
  bar.value = sent / total;
</script>
import { ProgressIndicator } from '@tanrei/react';

<ProgressIndicator value={sent / total} label="Subiendo report.pdf" />
<ProgressIndicator value={files} max={10} valueText={`${files} de 10 archivos`} label="Subiendo" />
<ProgressIndicator variant="circular" size="small" value={null} label="Sincronizando" />
<ProgressIndicator separation="gap" value={sent / total} label="Subiendo report.pdf" />
import Tanrei

TanreiProgressIndicator("Subiendo report.pdf", value: sent / total)
TanreiProgressIndicator("Subiendo", value: Double(files), in: 0...10, currentValueLabel: "\(files) de 10 archivos")

// Sin valor (el caso predeterminado) es indeterminado.
TanreiProgressIndicator("Sincronizando", variant: .circular, size: .small)
import io.github.chnotchy.tanrei.components.TanreiProgressIndicator
import io.github.chnotchy.tanrei.components.TanreiProgressIndicatorVariant
import io.github.chnotchy.tanrei.tokens.TanreiProgressIndicatorSize

// progress es una lambda: un valor nuevo se redibuja sin recomponer.
TanreiProgressIndicator(progress = { sent / total }, contentDescription = "Subiendo report.pdf")
TanreiProgressIndicator(
    progress = { files.toFloat() },
    contentDescription = "Subiendo",
    valueRange = 0f..10f,
    stateDescription = "$files de 10 archivos",
)

// La sobrecarga sin progress es indeterminada.
TanreiProgressIndicator(
    contentDescription = "Sincronizando",
    variant = TanreiProgressIndicatorVariant.Circular,
    size = TanreiProgressIndicatorSize.Small,
)
import 'package:tanrei/tanrei.dart';

TanreiProgressIndicator(value: sent / total, semanticsLabel: 'Subiendo report.pdf');
TanreiProgressIndicator(
  value: files.toDouble(),
  max: 10,
  semanticsValue: '$files de 10 archivos',
  semanticsLabel: 'Subiendo',
);

// value: null (el valor predeterminado) es indeterminado.
const TanreiProgressIndicator(
  variant: TanreiProgressIndicatorVariant.circular,
  size: TanreiProgressIndicatorSize.small,
  semanticsLabel: 'Sincronizando',
);
import { ProgressIndicator } from '@tanrei/react-native';

<ProgressIndicator accessibilityLabel="Subiendo report.pdf" value={sent / total} />
<ProgressIndicator accessibilityLabel="Subiendo" value={files} max={10} valueText={`${files} de 10 archivos`} />
<ProgressIndicator accessibilityLabel="Sincronizando" variant="circular" size="small" />

Especificaciones

Tamaños, extremos del intervalo y un intervalo propio

Separación: divider (la elección del sistema predeterminado) y gap

Anatomía

Anatomía

Dibujado sobre el fixture linear-determinate, tal como lo dibuja el paquete web.
Parte Descripción
1 track The full length of the bar, or the full circle of the ring: the whole of the task.
2 indicator The part of the track drawn in the indicator color: the fraction done (determinate), or a moving segment or arc (indeterminate). It meets the rest of the track, or stands a gap from it (separation).
3 stop-indicator · opcional A dot at the end of a determinate bar's track that marks where the task ends. Drawn under either separation whenever its size is above 0; 0 draws none.

Propiedades

Propiedad Tipo Valor predeterminado Descripción
variant linear | circular "linear" Linear is a bar that fills the width its layout gives it, for content and pages; circular is a ring of a fixed size, for tight places and next to text. A structural choice drawn by code, not a token axis: a design system cannot add a form by values.
size small | medium | large "medium" The bar's thickness (2 / 4 / 8) or the ring's box (16 / 24 / 40). A design system may add values.
separation auto | divider | gap "auto" How a determinate indicator is told from the rest of its track. divider: it is drawn on the track with no space between them. gap: empty space is left between them. Whether a bar marks the track's end with a dot is comp.progress-indicator.stop-indicator.size, not the separation. Auto takes comp.progress-indicator.track.separation, the design system's answer (divider in the default system).
value number null How far the task has come, between min and max. Null makes the indicator indeterminate.
min number 0 The value at which nothing is done.
max number 1 The value at which the task is done.
label string "" The accessible name: what is in progress ("Uploading report.pdf"). Required: a bar alone is not a name.
valueText string "" How assistive technology reads the value when a percentage is not the natural reading ("3 of 10 files"). Empty reads the platform's percentage.

Estados

Comportamiento

Requisitos en formato EARS. Cada implementación de plataforma se prueba contra estos identificadores. El texto de los requisitos se muestra tal como está en la especificación, en inglés.

ID Requisito
PRG-1 WHILE value is a number THE progress indicator SHALL be determinate and draw the indicator over the fraction (value − min) / (max − min) of the track, from the track's start: the inline-start of a bar, the top of a ring, turning clockwise.
PRG-2 WHILE value is null THE progress indicator SHALL be indeterminate: a bar SHALL move a segment of the indicator, two fifths of the track long, from beyond the track's start to beyond its end once per comp.progress-indicator.motion.cycle-duration with comp.progress-indicator.motion.cycle-easing; a ring SHALL turn an arc of the indicator a quarter of the circle long clockwise once per comp.progress-indicator.motion.cycle-duration at constant speed (sys.motion.easing.linear).
PRG-3 THE progress indicator SHALL draw a bar comp.progress-indicator.linear.thickness.medium high for medium (and so on for each size) across the full inline size its layout gives it, and a ring whose outer edge fills a comp.progress-indicator.circular.size.medium square with a stroke of comp.progress-indicator.circular.thickness.medium for medium (and so on for each size).
PRG-4 THE progress indicator SHALL draw the track in comp.progress-indicator.track.color and the indicator over it in comp.progress-indicator.indicator.color; the ends of a bar's track and indicator SHALL be rounded by comp.progress-indicator.track.shape, clamped to half the thickness, and a ring's arcs SHALL have round caps unless comp.progress-indicator.track.shape is sys.shape.corner.none.
PRG-5 WHILE determinate, its separation is gap (PRG-17) and value lies strictly between min and max THE progress indicator SHALL leave comp.progress-indicator.track.gap of empty space, measured along the track, between the indicator and the rest of the track — on a bar between the indicator's end and the track, on a ring at both ends of the indicator's arc. WHILE its separation is divider THE progress indicator SHALL draw the indicator on the track with no empty space between them: the edge where the indicator's color ends is what divides them. WHILE a bar is determinate THE progress indicator SHALL draw, under either separation, a dot of comp.progress-indicator.stop-indicator.size, and no larger than the bar is thick, in comp.progress-indicator.indicator.color centered in the thickness with its center half the thickness before the track's end (concentric with the track's rounded end); it SHALL NOT be drawn while value is at max, where the indicator covers it, and a size of 0 SHALL draw none. Whether the dot is drawn is independent of the separation.
PRG-6 WHEN value changes while determinate THE progress indicator SHALL move the indicator's end to the new value over comp.progress-indicator.motion.value-duration with comp.progress-indicator.motion.value-easing; a switch between determinate and indeterminate SHALL take effect at once.
PRG-7 WHERE reduced motion is requested THE progress indicator SHALL show a value change at once, and WHILE indeterminate SHALL NOT move: it SHALL draw the indicator over the whole track (the whole circle of a ring) and ease its opacity from 1 to 0 and back to 1 once per comp.progress-indicator.motion.cycle-duration with comp.progress-indicator.motion.cycle-easing, over a track that stays still.
PRG-8 WHILE value is a number THE progress indicator SHALL expose the progressbar role to assistive technology with label as its name, min and max as its range, the clamped value as its current value, and valueText as the value's text when valueText is not empty.
PRG-9 WHILE value is null THE progress indicator SHALL expose the progressbar role with label as its name, no current value, and the platform's busy or indeterminate state.
PRG-10 THE progress indicator SHALL NOT be focusable and SHALL NOT announce value changes by itself; assistive technology SHALL read the current value when it reaches the indicator, and a platform that marks frequently updating elements SHALL mark it so.
PRG-11 IF value is below min or above max THE progress indicator SHALL draw and expose it clamped to that range; IF max is not greater than min THE progress indicator SHALL draw the track with no indicator and expose a current value of 0 in a range of 0 to 1; in each case debug builds SHALL report the values.
PRG-12 WHEN size names a value that the active design system does not have, or variant or separation a value the component does not define, THE progress indicator SHALL render with the default value's tokens (medium, linear, auto), and in debug builds report the unknown value.
PRG-13 WHERE the layout direction is right-to-left THE progress indicator SHALL fill a bar and move its indeterminate segment from right to left; a ring SHALL NOT be mirrored: it starts at the top and turns clockwise in every direction, as a clock does.
PRG-14 WHILE the progress indicator is not visible (scrolled out of view, in a hidden view, or in an app in the background) THE progress indicator SHALL NOT run its indeterminate animation, and SHALL resume it when it becomes visible.
PRG-15 WHILE label is empty THE progress indicator SHALL still render, and in debug builds report that it has no accessible name.
PRG-16 THE progress indicator SHALL take its layout direction from where it is used — the direction of the nearest ancestor that sets one, and the platform's own where none does — and SHALL have no direction setting of its own; WHEN that direction changes while the progress indicator is shown THE progress indicator SHALL draw itself for the new direction at once, without a motion of its own, keeping its value, and the place of an indeterminate segment in its cycle.
PRG-17 THE progress indicator SHALL tell a determinate indicator from the rest of its track as its separation names: WHILE separation is auto, as comp.progress-indicator.track.separation names, which follows sys.behavior.separation unless a design system sets it apart; WHILE separation is divider or gap, as that value names, whatever the tokens say; each as PRG-5 draws it. WHEN separation, or the token it follows, changes THE progress indicator SHALL draw the other form at once, without animation, keeping its value. WHILE indeterminate THE progress indicator SHALL be drawn the same under either (PRG-2, PRG-7). A platform that cannot draw a choice SHALL fall back to the first value, divider, and state that in its README.
PRG-18 WHERE the platform has ARIA attributes (the web), the host carries its progressbar role (PRG-8) itself, so what the product writes on it is not moved, but for a name: WHILE label is not empty THE progress indicator SHALL hold the product's aria-label and aria-labelledby on that host as their data-aria- twins, so that label is its whole name although the platform gives aria-labelledby the precedence, and WHEN label is emptied SHALL give them back as they were written; WHILE label is empty a name the product gives so — aria-label, or aria-labelledby naming an element — SHALL be its name and SHALL NOT be reported as having none in debug builds (PRG-15). WHEN the product removes one, or its data-aria- twin, or sets the ARIA property that reflects it (ariaLabel, ariaLabelledByElements) to null, THE progress indicator SHALL take it away.

Correspondencia de nombres por plataforma

Paridad no significa API idénticas. Cada plataforma expresa el mismo contrato con su propio estilo.

Especificación Web SwiftUI Jetpack Compose Flutter React Native
Componente tanrei-progress-indicator TanreiProgressIndicator TanreiProgressIndicator TanreiProgressIndicator ProgressIndicator
variant · Propiedad variant variant variant variant variant
size · Propiedad size size size size size
separation · Propiedad separation separation separation separation separation
value · Propiedad value value progress value value
min · Propiedad min bounds valueRange min min
max · Propiedad max bounds valueRange max max
label · Propiedad label label contentDescription semanticsLabel accessibilityLabel
valueText · Propiedad valueText currentValueLabel stateDescription semanticsValue valueText
Notas As a native <progress>: no value attribute (or removing it) is indeterminate. valueText is the value-text attribute. The host carries role="progressbar" and the aria-value attributes. separation is an attribute (auto, divider, gap); auto reads the name in --tanrei-comp-progress-indicator-track-separation. Initialisers follow ProgressView: TanreiProgressIndicator(_ label:, value: Double?, in bounds: ClosedRange<Double> = 0...1, currentValueLabel:). value: nil is indeterminate; bounds carries min and max as Slider's in: does. Not built on this platform yet: separation (auto, divider, gap), PRG-17 and the seven gap and divider fixtures; reading comp.progress-indicator.track.separation as a typed choice needs the token emitters to write a choice of kind as a typed enumeration, which they do not yet. Not built on this platform yet: the stage color a fixture's surface names, which the linear-on-container-highest fixture draws on. Two overloads, as Material's indicators have: with progress: () -> Float it is determinate (a lambda, so a changing value redraws without recomposing), read within valueRange: ClosedFloatingPointRange<Float> = 0f..1f (as Slider names it); without progress it is indeterminate. stateDescription is the semantics property of the same name. Not built on this platform yet: separation (auto, divider, gap), PRG-17 and the seven gap and divider fixtures; reading comp.progress-indicator.track.separation as a typed choice needs the token emitters to write a choice of kind as a typed enumeration, which they do not yet. Not built on this platform yet: the stage color a fixture's surface names, which the linear-on-container-highest fixture draws on. As Flutter's ProgressIndicator: value: null is indeterminate, and semanticsLabel / semanticsValue are its names. Unlike Flutter's (a fraction from 0 to 1), value is read between min and max, as Slider does. Not built on this platform yet: separation (auto, divider, gap), PRG-17 and the seven gap and divider fixtures; reading comp.progress-indicator.track.separation as a typed choice needs the token emitters to write a choice of kind as a typed enumeration, which they do not yet. Not built on this platform yet: the stage color a fixture's surface names, which the linear-on-container-highest fixture draws on. value undefined or null is indeterminate. min, max, value and valueText are passed together as accessibilityValue ({ min, max, now, text }); indeterminate sets accessibilityState={{ busy: true }} and no now. Not built on this platform yet: separation (auto, divider, gap), PRG-17 and the seven gap and divider fixtures; reading comp.progress-indicator.track.separation as a typed choice needs the token emitters to write a choice of kind as a typed enumeration, which they do not yet. Not built on this platform yet: the stage color a fixture's surface names, which the linear-on-container-highest fixture draws on.

Tokens

Token Alias de Valor resuelto (claro)
--tanrei-comp-progress-indicator-circular-size-large — 40px
--tanrei-comp-progress-indicator-circular-size-medium — 24px
--tanrei-comp-progress-indicator-circular-size-small — 16px
--tanrei-comp-progress-indicator-circular-thickness-large sys.border.thick 2px
--tanrei-comp-progress-indicator-circular-thickness-medium sys.border.thick 2px
--tanrei-comp-progress-indicator-circular-thickness-small sys.border.thick 2px
--tanrei-comp-progress-indicator-indicator-color sys.color.primary #1b1b1b
--tanrei-comp-progress-indicator-linear-thickness-large — 8px
--tanrei-comp-progress-indicator-linear-thickness-medium — 4px
--tanrei-comp-progress-indicator-linear-thickness-small — 2px
--tanrei-comp-progress-indicator-motion-cycle-duration sys.motion.duration.extra-long4 1000ms
--tanrei-comp-progress-indicator-motion-cycle-easing sys.motion.easing.standard cubic-bezier(0.2, 0, 0, 1)
--tanrei-comp-progress-indicator-motion-value-duration sys.motion.duration.medium2 300ms
--tanrei-comp-progress-indicator-motion-value-easing sys.motion.easing.standard cubic-bezier(0.2, 0, 0, 1)
--tanrei-comp-progress-indicator-stop-indicator-size sys.space.space0 0px
--tanrei-comp-progress-indicator-track-color sys.color.surface-variant #eeeeee
--tanrei-comp-progress-indicator-track-gap sys.space.space50 4px
--tanrei-comp-progress-indicator-track-separation sys.behavior.separation 0
--tanrei-comp-progress-indicator-track-shape sys.shape.corner.full 9999px

Fixtures

Representaciones canónicas. Todas las plataformas capturan cada fixture con el mismo identificador para poder comparar los resultados.

Generado a partir de specs/progress-indicator.spec.json, tokens/comp/progress-indicator.tokens.json, design/tokens/

Pautas

Cuándo usarlo

Usa un indicador de progreso para una tarea que dura lo suficiente como para notarse: una subida, una importación, un despliegue, un guardado largo. Muestra cuánto ha avanzado cuando puedas medirlo, aunque sea de forma aproximada; las personas esperan con más paciencia ante una barra que se mueve. Cuando todavía no puedas medirlo, muéstralo indeterminado y pasa a un valor en cuanto tengas uno.

Para una espera corta cuya duración no puedes medir, como una lista que carga su página siguiente, usa en su lugar un indicador de carga. No tiene pista, porque nunca promete un valor.

Cómo elegir una variante

Variante Úsala para
Linear Tareas que pertenecen a una página o a una sección: en la parte superior de una página, dentro de una tarjeta, bajo un archivo en una lista de subidas. La barra ocupa el ancho que le da su diseño.
Circular Lugares estrechos y progreso junto a un texto: en un botón, en una fila de lista, en un panel pequeño. El anillo tiene un tamaño fijo.

Cómo elegir un tamaño

Tamaño Grosor de la barra / tamaño del anillo en el sistema predeterminado Úsalo para
Small 2 / 16 Filas densas, dentro de controles, junto a texto pequeño.
Medium 4 / 24 La mayoría de los lugares. Es el predeterminado.
Large 8 / 40 La única tarea de la que trata una vista, o una sección vacía que espera su contenido.

Divisor o separación

Un indicador determinado se distingue del resto de su pista de una de dos maneras. Con divider se dibuja sobre la pista sin espacio entre ambos. Con gap se deja un pequeño espacio vacío después de él (en un anillo, en los dos extremos de su arco). Un indicador indeterminado se ve igual con las dos. Que una barra marque el final de su pista con un punto es una elección aparte, el tamaño de su indicador de parada: un sistema de diseño que le da un tamaño dibuja el punto con cualquiera de las dos separaciones, y el sistema predeterminado no lo dibuja.

El sistema de diseño elige una vez para todos los componentes que tienen esta elección, y el sistema predeterminado elige divider. Deja separation en auto para seguir esa elección, de modo que el indicador concuerde con los grupos de botones y los menús que lo rodean. Define divider o gap en un indicador solo cuando ese tenga un motivo para ser distinto.

Recomendado

  • Dale una etiqueta que diga qué está en curso: «Subiendo report.pdf», no «Progreso». Si junto a él se muestra una leyenda, usa las mismas palabras.
  • Usa un texto de valor cuando un porcentaje no sea la lectura natural: «3 de 10 archivos», «Paso 2 de 4».
  • Di a las personas cuándo termina la tarea, con palabras: un mensaje de que ha terminado, o de qué ha fallado y qué hacer a continuación.

Evita

  • No uses el color para informar de un fallo. Una barra roja no le dice nada a quien no puede ver el color; detén el indicador y muestra un mensaje junto a él.
  • No lo uses como medidor de un nivel, como el almacenamiento usado o la seguridad de una contraseña. Eso es un medidor (meter), que es un componente distinto.
  • No dejes que el valor retroceda ni que salte al final antes de que la tarea haya terminado. La barra es una promesa sobre la espera que queda.
  • No muestres varios indicadores para una sola tarea. Muestra uno para el conjunto, o uno por cada elemento que le importe a la persona.

Accesibilidad

Rol
progressbar
Etiquetado
label is the accessible name. valueText, when given, replaces the platform's percentage as the spoken value. A visible caption next to the indicator is the product's composition; when it exists, use the same words as label.
Objetivo mínimo
El área de pulsación cumple el tamaño mínimo de objetivo aunque el tamaño visual sea menor. minimum 32px · pointer 44px · spacing 8px · touch 48px

Teclado

Teclas Acción

Notas

  • Not interactive: the indicator takes no input and is never focusable (PRG-10), so the minimum target holds without extending anything.
  • The value is read from the boundary between indicator and track: comp.progress-indicator.indicator.color must stay at least 3:1 against comp.progress-indicator.track.color and against the surface behind it, under divider and under gap alike. A faint track may leave the track's end hard to see; the stop indicator, in a system that gives it a size, marks it.
  • Indeterminate is announced as busy with no value: on the web a progressbar without aria-valuenow (and aria-busy), on Apple platforms a progress element with no value, on Android the indeterminate range info, in Flutter a progress indicator with a null value.
  • Reduced motion replaces movement with an opacity pulse of at most one per second (PRG-7), below the three-per-second flash threshold.

Generado a partir de specs/progress-indicator.spec.json, tokens/sys/measure.tokens.json

De qué se encarga el componente

  • Expone el rol de barra de progreso con la etiqueta como nombre. Determinado, expone el intervalo, el valor actual (limitado al intervalo) y el texto de valor cuando lo hay; indeterminado, no expone ningún valor y expone el estado ocupado de la plataforma. Flutter todavía no tiene rol de barra de progreso ni estado ocupado, así que ahí expone la etiqueta y el valor.
  • Nunca recibe el foco y no anuncia sus cambios. La tecnología de apoyo lee el valor actual cuando la persona llega a él.
  • Cuando se pide reducir movimiento, un cambio de valor se muestra de inmediato, y la forma indeterminada deja de moverse y, en su lugar, hace pulsar suavemente su opacidad, como máximo una vez por segundo.
  • Su animación en bucle se detiene mientras no se puede ver (en todas partes cuando la aplicación está en segundo plano, y cuando queda desplazado fuera de la vista o en una pantalla oculta donde la plataforma puede saberlo) y se reanuda cuando se puede ver.
  • Las compilaciones de depuración notifican una etiqueta vacía, un valor fuera del intervalo y un separation desconocido.

Qué debes hacer tú

  • Anuncia tú el final de la tarea: un mensaje en una región activa (live region), o el foco movido al resultado. El indicador no dirá que la tarea ha terminado o ha fallado.
  • Si los cambias, mantén el color del indicador con un contraste de al menos 3:1 frente a la pista y a la superficie que tiene detrás, tanto con un divisor como con una separación. El valor se lee allí donde el indicador se encuentra con la pista.
  • Sobre una superficie con el tono de contenedor más alto, como una tarjeta rellena, la pista cuesta verla: tiene casi el mismo tono. Donde un indicador esté sobre una, apunta comp.progress-indicator.track.color a un rol más fuerte en una capa. Lo que muestra el indicador se sigue leyendo allí donde se encuentra con la pista.
  • Si la tarea bloquea una región de la página, marca esa región como ocupada mientras se ejecuta (aria-busy en la web).