HTML progress: mostrar el avance y cambiar al estado indeterminado
HTML <progress> muestra cuánto se ha completado de una tarea. Define value y max para un progreso determinado, u omite el atributo value cuando se desconozca el trabajo total. El elemento no mide automáticamente las subidas ni las descargas.
Calcule el progreso con valor y máximo
el valor es la cantidad completada y max es la cantidad total. Un valor de 20 con max 100 significa 20%; con max 200 significa 10%. Cuando se omite max, su valor predeterminado es 1, por lo que 20% se escribe como value="0.2". Use un número válido mayor que cero para max y un valor entre cero y max.
El mínimo siempre es cero; progress no utiliza un atributo min. Considere usar meter para una medición dentro de un rango, como uso de almacenamiento o una puntuación. Use progress para el cumplimiento de una tarea en curso.
Ejemplo completo: actualizar el progreso y cambiar a indeterminado
Guarde este código como progress-demo.html y ábralo en un navegador. Los botones solo cambian los valores mostrados para practicar; no transfieren archivos.
<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Progreso y estado indeterminado</title>
<style>
body { max-width: 36rem; padding: 0 1rem; margin: 1rem auto; }
progress { display: block; width: 100%; height: 1.5rem; }
button { margin: 0.25rem; font: inherit; }
</style>
</head>
<body>
<h1>Práctica de progreso</h1>
<label for="work">Progreso de la tarea de ejemplo</label>
<progress id="work" value="20" max="100">20%</progress>
<p id="status" aria-live="polite">20% completado</p>
<button type="button" id="advance">Cambiar al 80%</button>
<button type="button" id="unknown">Total desconocido</button>
<button type="button" id="reset">Restablecer</button>
<script>
const bar = document.getElementById('work');
const status = document.getElementById('status');
function show(value) {
if (value === null) {
bar.removeAttribute('value');
bar.textContent = 'En curso';
status.textContent = 'En curso: se desconoce la cantidad total de trabajo.';
} else {
bar.value = value;
bar.textContent = value + '%';
status.textContent = value + '% completado';
}
}
document.getElementById('advance').addEventListener('click', () => show(80));
document.getElementById('unknown').addEventListener('click', () => show(null));
document.getElementById('reset').addEventListener('click', () => show(20));
</script>
</body>
</html>
- El estado inicial está al 20% de completado. Haga clic en
Cambiar al 80%para cambiar tanto la barra como su descripción al 80%. - Haga clic en
Total desconocidopara eliminar el atributo value. El navegador muestra un progreso indeterminado junto con una oración que explica que el total es desconocido. - Haga clic en
Restablecerpara restaurar el atributo value y volver al 20%.
value="0" es progreso determinado sin trabajo completado; no es indeterminado. Para cambiar un elemento de progreso existente a indeterminado, elimine el atributo como lo hace el ejemplo. La apariencia y animación del progreso indeterminado puede variar según el navegador, el sistema operativo y la configuración del usuario.
Proporcione un nombre de tarea y una oración de estado
El texto “20%” dentro del progreso es un texto de respaldo para navegadores antiguos, no un sustituto del nombre de la tarea. Asocia una etiqueta usando valores coincidentes de for e id, o proporciona un nombre accesible apropiado ARIA, para identificar la tarea. Muestra el estado actual tanto en palabras como a través del color y la longitud de la barra.
Para tareas reales, actualiza el valor a partir de la información proporcionada por un servidor o por eventos de transferencia. Llenar una barra con un temporizador no establece que el trabajo esté completo. Diseña mensajes y acciones separados para errores, cancelaciones y finalización, y controla la frecuencia de los anuncios para que las actualizaciones de estado no se repitan en exceso. La referencia MDN de progreso explica la sintaxis y los requisitos de accesibilidad.




