Slider range HTML: min, max, step, valor em tempo real e redefinição
HTML input type="range" permite escolher um número dentro de um intervalo com um controle deslizante. Defina limites e passo com min, max e step, e o valor inicial com value. É adequado para ajustes relativos, como volume e brilho. Para mostrar o número atual, use um elemento de saída e JavaScript.
Entenda o intervalo e os padrões
| Atributo | Função | Comportamento padrão |
|---|---|---|
min |
Mínimo | Padrão é 0 se omitido. |
max |
Máximo | Padrão é 100. Defina maior que o mínimo para uma faixa de ajuste utilizável. |
step |
Intervalo entre valores válidos | O padrão é 1. Também aceita intervalos decimais e any. |
value |
Seleção inicial | Se omitido, é baseado no ponto médio e ajustado ao passo, se necessário. Na faixa padrão é 50. |
name |
Nome do campo nos dados do formulário | Dê um nome ao campo de entrada para enviar seu valor. |
Um campo de entrada do tipo 'range' não possui valor vazio. Omitir o valor não significa "ainda não selecionado", e 'required' não se aplica. Se for importante saber se uma escolha em uma pesquisa foi feita explicitamente, considere escolhas explícitas ou outro método de entrada.
Os passos são calculados a partir de uma base. Por exemplo, min="16" max="32" step="2" permite 16, 18, 20, até 32. Os navegadores podem normalizar um valor inicial fora do intervalo ou do passo, então verifique se o valor atual real corresponde ao padrão desejado.
Exemplo completo: alterar o tamanho da fonte ao vivo
Salve este código como range.html e abra-o em um navegador. Nenhum servidor ou biblioteca é necessário. O controle deslizante altera o tamanho da fonte de uma frase de exemplo de 16 a 32 px em passos de 2 px, e o envio exibe os dados reais do formulário em vez de enviá-los.
<!doctype html>
<html lang="pt">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Ajustar o tamanho com range</title>
<style>
body { margin: 24px; font-family: sans-serif; }
label { display: block; margin-bottom: 12px; }
input[type="range"] { width: 20rem; max-width: 100%; accent-color: #1769aa; }
#preview { overflow-wrap: anywhere; }
pre { white-space: pre-wrap; overflow-wrap: anywhere; }
</style>
</head>
<body>
<h1>Ajustar o tamanho do texto</h1>
<form id="demo">
<label for="fontSize">Tamanho de exemplo (16–32 px, passos de 2 px)</label>
<input id="fontSize" name="fontSize" type="range"
min="16" max="32" step="2" value="20">
<p>Tamanho atual: <output id="selected" for="fontSize">20</output>px</p>
<p><button type="submit">Mostrar valores enviados</button>
<button type="reset">Redefinir</button></p>
</form>
<p id="preview">Mover o controle deslizante altera o tamanho desta frase.</p>
<pre id="result" aria-live="polite"></pre>
<script>
const form = document.querySelector('#demo');
const slider = document.querySelector('#fontSize');
const selected = document.querySelector('#selected');
const preview = document.querySelector('#preview');
const result = document.querySelector('#result');
function update() {
selected.value = slider.value;
preview.style.fontSize = `${slider.valueAsNumber}px`;
result.textContent = '';
}
slider.addEventListener('input', update);
form.addEventListener('submit', (event) => {
event.preventDefault();
result.textContent = JSON.stringify([...new FormData(form).entries()], null, 2);
});
form.addEventListener('reset', () => {
requestAnimationFrame(update);
});
update();
</script>
</body>
</html>
- Inicialmente, o tamanho exibido é 20 px e a pré-visualização usa esse tamanho. Envie para ver a string
"20"sob o nomefontSize. - Mova o controle deslizante com o ponteiro e verifique se o número e o tamanho da fonte atualizam juntos. Use Tab para alcançá-lo e experimente também as teclas de seta.
- Por exemplo, um passo da seta direita muda 20 para 22: a exibição se torna 22 e o tamanho da fonte 22 px. O envio agora mostra
"22". - O reset retorna o controle deslizante, o número e o tamanho da pré-visualização para 20. O manipulador de reset agenda a atualização para o próximo quadro, assim ele lê o valor após o reset nativo ter efeito.
O exemplo usa input para atualizar imediatamente durante o ajuste. Para processar um ajuste confirmado, considere change. Os eventos diferem no momento e no propósito; escolha conforme a necessidade de uma prévia em tempo real.
Distinguir valores atuais, enviados e iniciais
slider.value é o número atual como uma string; slider.valueAsNumber é numérico. O atributo value do HTML é o valor inicial: mover o controle deslizante não muda essa string do atributo. Leia o valor atual do elemento para exibir ou salvar.
output exibe um resultado calculado ou selecionado; ele não substitui um campo de formulário enviado. O exemplo envia a entrada do intervalo nomeado. O armazenamento real no servidor exige uma rota existente e o tratamento da requisição, além da validação do intervalo e do passo no lado do servidor.
Escolha entre intervalo e número e verifique a exibição
Se os usuários precisarem inserir uma quantidade, valor ou comprimento precisos, considere as configurações de entrada de número, intervalo e passo . Deslizadores ajustam rapidamente um nível aproximado, mas selecionar um número exato pode ser difícil em telas estreitas. Quando a precisão é necessária, uma entrada numérica sincronizada pode acompanhar o deslizante.
accent-color pode alterar a cor de destaque do controle deslizante nativo. Isso não necessariamente colore todas as partes de forma idêntica, e a aparência varia conforme o navegador e o sistema operacional. Verifique a largura em dispositivos móveis, espaço adequado para interação, associação de rótulos, foco do teclado e a exibição numérica em conjunto.
A referência de range na MDN explica os valores padrão e o suporte aos atributos.




