HTML progress: exibir o avanço e alternar para o estado indeterminado
HTML <progress> mostra quanto de uma tarefa foi concluído. Defina value e max para progresso determinado ou omita o atributo value quando o trabalho total for desconhecido. O elemento não mede uploads ou downloads automaticamente.
Calcule o progresso com valor e máximo
value é a quantidade concluída e max é a quantidade total. Um valor de 20 com max 100 significa 20%; com max 200 significa 10%. Quando max é omitido, seu valor padrão é 1, então 20% é escrito como value="0.2". Use um número válido maior que zero para max e um valor entre zero e max.
O mínimo é sempre zero; progress não usa um atributo min. Considere usar meter para uma medição dentro de um intervalo, como uso de armazenamento ou uma pontuação. Use progress para a conclusão de uma tarefa em andamento.
Exemplo completo: atualizar o progresso e alternar para indeterminado
Salve este código como progress-demo.html e abra-o em um navegador. Os botões apenas mudam os valores exibidos para prática; eles não transferem arquivos.
<!doctype html>
<html lang="pt">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Progresso e 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ática de progresso</h1>
<label for="work">Progresso da tarefa de exemplo</label>
<progress id="work" value="20" max="100">20%</progress>
<p id="status" aria-live="polite">20% concluído</p>
<button type="button" id="advance">Alterar para 80%</button>
<button type="button" id="unknown">Total desconhecido</button>
<button type="button" id="reset">Redefinir</button>
<script>
const bar = document.getElementById('work');
const status = document.getElementById('status');
function show(value) {
if (value === null) {
bar.removeAttribute('value');
bar.textContent = 'Em andamento';
status.textContent = 'Em andamento: a quantidade total de trabalho é desconhecida.';
} else {
bar.value = value;
bar.textContent = value + '%';
status.textContent = value + '% concluído';
}
}
document.getElementById('advance').addEventListener('click', () => show(80));
document.getElementById('unknown').addEventListener('click', () => show(null));
document.getElementById('reset').addEventListener('click', () => show(20));
</script>
</body>
</html>
- O estado inicial está 20% completo. Clique em
Alterar para 80%para alterar tanto a barra quanto sua descrição para 80%. - Clique em
Total desconhecidopara remover o atributo value. O navegador mostra progresso indeterminado junto com uma frase explicando que o total é desconhecido. - Clique em
Redefinirpara restaurar o atributo value e retornar a 20%.
value="0" é progresso determinado sem nenhum trabalho concluído; não é indeterminado. Para alternar um elemento de progresso existente para indeterminado, remova o atributo, como o exemplo faz. A aparência e a animação do progresso indeterminado podem variar dependendo do navegador, sistema operacional e configurações do usuário.
Forneça um nome de tarefa e uma frase de status
O texto “20%” dentro da barra de progresso é um texto reserva para navegadores mais antigos, não um substituto para o nome da tarefa. Associe um rótulo usando valores for e id correspondentes, ou forneça um nome acessível ARIA apropriado, para identificar a tarefa. Mostre o estado atual em palavras, assim como através da cor e do comprimento da barra.
Para tarefas reais, atualize o valor a partir das informações fornecidas por um servidor ou eventos de transferência. Preencher uma barra com um temporizador não estabelece que o trabalho está concluído. Projete mensagens e ações separadas para erros, cancelamento e conclusão, e controle a frequência dos anúncios para que as atualizações de status não se repitam excessivamente. A referência de progresso MDN explica a sintaxe e os requisitos de acessibilidade.




