Medidas e progresso: meter e progress
Aprenda a exibir barras de progresso e medidores de valores — como o carregamento de um arquivo ou o nível de uma bateria.
No desenvolvimento web, muitas vezes precisamos exibir informações
visuais sobre quantidades, valores ou o andamento de uma tarefa.
Para isso, o HTML5 nos oferece duas tags semânticas e nativas:
<meter> e <progress>.
Essas tags fornecem uma forma padronizada e acessível de representar
medidas e progresso, sem a necessidade de criar elementos complexos
com divs e CSS ou JavaScript.
A tag <meter>: medindo valores dentro de um intervalo
A tag <meter> representa uma medida escalar dentro de um intervalo conhecido.
Pense nela como um medidor de combustível, um termômetro ou um indicador
de uso de disco. Ela é usada para exibir um valor atual em relação a um
valor mínimo e máximo, e pode indicar se o valor está em uma faixa
"ótima", "baixa" ou "alta".
Atributos importantes:
value(obrigatório): O valor numérico atual que está sendo medido.min: O valor numérico mínimo do intervalo (padrão: 0).max: O valor numérico máximo do intervalo (padrão: 1).low: O valor que define o limite inferior da faixa "baixa". Sevalueestiver abaixo delow, o medidor pode ser estilizado de uma forma.high: O valor que define o limite superior da faixa "alta". Sevalueestiver acima dehigh, o medidor pode ser estilizado de outra forma.optimum: O valor que é considerado o ideal ou "ótimo" dentro do intervalo. Isso pode influenciar a cor padrão do medidor em alguns navegadores.
Exemplo:
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Exemplo de Meter</title>
<style>
body { font-family: sans-serif; margin: 20px; }
meter {
width: 200px;
height: 20px;
margin-bottom: 10px;
vertical-align: middle;
}
/* Estilização básica para visualização */
meter.uso-disco {
/* Cores podem variar entre navegadores, mas o conceito é o mesmo */
/* Exemplo de como o navegador pode colorir: */
/* Se value < low, pode ser verde */
/* Se low <= value <= high, pode ser amarelo */
/* Se value > high, pode ser vermelho */
}
</style>
</head>
<body>
<h1>Medidores de Valores</h1>
<p>Uso de Disco: <meter value="0.7" min="0" max="1" low="0.4" high="0.8" optimum="0.5"></meter> 70%</p>
<p>Nível de Bateria: <meter value="0.9" min="0" max="1" low="0.2" high="0.8" optimum="1"></meter> 90%</p>
<p>Pontuação no Jogo: <meter value="75" min="0" max="100" low="30" high="80" optimum="90"></meter> 75 pontos</p>
<p>Temperatura (ºC): <meter value="28" min="0" max="40" low="15" high="30" optimum="22"></meter> 28ºC</p>
</body>
</html>
Casos de uso:
- Indicadores de uso (disco, memória, bateria).
- Pontuações em jogos.
- Níveis de satisfação.
- Qualidade de senhas.
Importante:
- A tag
<meter>não deve ser usada para indicar progresso de uma tarefa. Para isso, use<progress>. - A aparência visual do
<meter>pode variar bastante entre navegadores. Para um controle total da estilização, você precisaria de CSS específico para cada navegador ou usar JavaScript para criar um componente customizado.
A tag <progress>: indicando o andamento de uma tarefa
A tag <progress> representa o andamento de uma tarefa.
Pense nela como uma barra de carregamento de um arquivo,
o progresso de um download ou a conclusão de um formulário.
Atributos importantes:
value: O valor numérico atual que indica o quanto da tarefa foi concluído.max: O valor numérico que representa o total da tarefa (padrão: 1). Sevalueemaxestiverem presentes, a barra de progresso será preenchida proporcionalmente.
Exemplo:
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Exemplo de Progress</title>
<style>
body { font-family: sans-serif; margin: 20px; }
progress {
width: 300px;
height: 25px;
margin-bottom: 10px;
vertical-align: middle;
}
</style>
</head>
<body>
<h1>Barras de Progresso</h1>
<p>Download do arquivo: <progress value="70" max="100"></progress> 70%</p>
<p>Carregando dados: <progress value="0.5"></progress> 50%</p>
<p>Progresso do formulário: <progress value="3" max="5"></progress> 3 de 5 etapas</p>
<h2>Progresso Indeterminado (sem `value`)</h2>
<p>Aguarde, processando... <progress></progress></p>
</body>
</html>
Progresso Indeterminado:
- Se o atributo
valuefor omitido, a barra de progresso se torna indeterminada. Isso significa que a tarefa está em andamento, mas o total ou o percentual de conclusão é desconhecido. É útil para indicar que algo está acontecendo sem especificar o tempo.
Casos de uso:
- Barras de carregamento (arquivos, páginas, jogos).
- Progresso de downloads/uploads.
- Indicadores de conclusão de etapas (ex: formulários multi-etapas).
Importante:
- A tag
<progress>não deve ser usada para indicar medidas dentro de um intervalo. Para isso, use<meter>. - Assim como
<meter>, a aparência visual do<progress>pode variar entre navegadores. Você pode estilizar com CSS, mas pode exigir seletores específicos para cada navegador.
Diferenças chave entre <meter> e <progress>
| Característica | <meter> |
<progress> |
|---|---|---|
| Propósito | Medida escalar dentro de um intervalo conhecido. | Andamento de uma tarefa. |
| Exemplo | Uso de disco, nível de bateria, pontuação. | Download de arquivo, carregamento de página. |
| Atributos | value, min, max, low, high, optimum |
value, max |
Comportamento sem value |
Não faz sentido (value é obrigatório). | Torna-se indeterminado (tarefa em andamento, total desconhecido). |
| Semântica | "Este é o valor X de Y." | "Esta tarefa está X% concluída." |
Resumindo
<meter>:- Representa uma medida escalar dentro de um intervalo conhecido.
- Atributos:
value(obrigatório),min,max,low,high,optimum. - Usado para indicadores de uso, pontuações, níveis.
<progress>:- Representa o andamento de uma tarefa.
- Atributos:
value,max. - Se
valuefor omitido, torna-se uma barra de progresso indeterminada. - Usado para carregamentos, downloads, conclusão de etapas.
Ambas as tags são semânticas e melhoram a acessibilidade, fornecendo informações claras sobre o estado de valores ou tarefas.