HTML Academy · Aula

Grupos de caixas de seleção e botões de opção

Permita que os usuários escolham uma ou várias opções de um grupo.

Aula 3 de 413 etapas

Grupos de caixas de seleção e botões de opção é uma aula grátis de HTML Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de HTML Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de HTML Academy inclui 4 aulas no total.

Caixas de seleção

As caixas de seleção permitem que os usuários escolham zero, uma ou várias opções:

<label>
  <input type="checkbox" name="terms" value="agreed"> I agree to the Terms
</label>

<!-- Each checkbox is independent -->
<!-- checked attribute = pre-checked -->
<input type="checkbox" name="newsletter" value="yes" checked>

Envio de caixas de seleção

As caixas de seleção só são enviadas quando estão marcadas:

<form>
  <input type="checkbox" name="hobby" value="reading"> Reading<br>
  <input type="checkbox" name="hobby" value="coding"> Coding<br>
  <input type="checkbox" name="hobby" value="gaming"> Gaming<br>
</form>
<!-- If reading and coding are checked:
     hobby=reading&hobby=coding -->
<!-- Unchecked boxes send nothing -->

Grupos de caixas de seleção com fieldset

Agrupe caixas de seleção relacionadas usando um conjunto de campos e uma legenda:

<fieldset>
  <legend>Select your interests</legend>

  <label><input type="checkbox" name="interest" value="html"> HTML</label>
  <label><input type="checkbox" name="interest" value="css"> CSS</label>
  <label><input type="checkbox" name="interest" value="js"> JavaScript</label>
  <label><input type="checkbox" name="interest" value="python"> Python</label>
</fieldset>

Botões de opção

Os botões de opção permitem escolher exatamente uma opção de um grupo:

<fieldset>
  <legend>Preferred plan</legend>

  <label><input type="radio" name="plan" value="free"> Free</label>
  <label><input type="radio" name="plan" value="pro"> Pro</label>
  <label><input type="radio" name="plan" value="enterprise"> Enterprise</label>
</fieldset>
<!-- All radios in a group share the same name attribute -->
<!-- Selecting one deselects the others -->

Atributo checked

Selecione previamente um botão de opção ou uma caixa de seleção com o atributo checked:

<fieldset>
  <legend>Skill level</legend>
  <label><input type="radio" name="level" value="beginner" checked> Beginner</label>
  <label><input type="radio" name="level" value="intermediate"> Intermediate</label>
  <label><input type="radio" name="level" value="advanced"> Advanced</label>
</fieldset>

Estilização de caixas de seleção e botões de opção

Caixas de seleção personalizadas usando a técnica com label:

<label class="custom-check">
  <input type="checkbox" name="agree">
  <span class="checkmark"></span>
  I agree
</label>

/* Hide native input, style the span: */
.custom-check input { opacity: 0; width: 0; }
.checkmark {
  width: 1.25rem; height: 1.25rem;
  border: 2px solid #ddd; border-radius: 3px;
  display: inline-block; vertical-align: middle;
}
.custom-check input:checked + .checkmark { background: #0070f3; }

Estado indeterminado

As caixas de seleção podem ter um estado indeterminado (nem marcadas nem desmarcadas):

<input type="checkbox" id="select-all">

<script>
// Set via JavaScript only -- no HTML attribute
document.getElementById('select-all').indeterminate = true;
// Visually shown as a dash (−) in most browsers
// Used for "select all" when some children are checked
</script>

Botão de opção sem seleção padrão

Às vezes, é melhor não selecionar previamente um botão de opção:

  • A seleção prévia indica que a opção é recomendada
  • Para escolhas obrigatórias sem um padrão claro (gênero, plano), deixe sem seleção
  • Adicione required para garantir que os usuários façam uma escolha explícita
<fieldset>
  <legend>Gender</legend>
  <label><input type="radio" name="gender" value="m" required> Male</label>
  <label><input type="radio" name="gender" value="f" required> Female</label>
  <label><input type="radio" name="gender" value="nb" required> Non-binary</label>
  <label><input type="radio" name="gender" value="prefer_not" required> Prefer not to say</label>
</fieldset>

Caixa de seleção: checked versus value

Duas informações importantes sobre o envio de caixas de seleção:

<!-- The value sent when checked: -->
<input type="checkbox" name="subscribe" value="yes">
<!-- Submits: subscribe=yes when checked -->
<!-- If value is omitted, default value is 'on' -->

<!-- JavaScript checked state: -->
const cb = document.querySelector('input[name="subscribe"]');
console.log(cb.checked);    // true or false
console.log(cb.value);      // 'yes' (always, even when unchecked)

Navegação por teclado em grupos de botões de opção

Comportamento do teclado para grupos de botões de opção:

  • Tab move o foco para dentro do grupo, até o botão selected ou o primeiro botão de opção
  • As teclas de seta (↑/↓ ou ←/→) percorrem as opções
  • Tab move o foco para fora do grupo, até o próximo elemento focável

Padrão de selecionar tudo

Padrão para selecionar ou desmarcar todas as caixas de seleção:

<label>
  <input type="checkbox" id="select-all"> Select all
</label>
<fieldset id="items">
  <label><input type="checkbox" class="item" value="1"> Item 1</label>
  <label><input type="checkbox" class="item" value="2"> Item 2</label>
  <label><input type="checkbox" class="item" value="3"> Item 3</label>
</fieldset>
<script>
document.getElementById('select-all').addEventListener('change', function() {
  document.querySelectorAll('.item').forEach(cb => cb.checked = this.checked);
});
</script>

Verificação rápida

Qual regra do atributo name faz com que os botões de opção pertençam ao mesmo grupo?

Recapitulação: caixas de seleção e botões de opção

Essenciais das caixas de seleção e dos botões de opção:

  • Caixa de seleção — permite selecionar várias opções; só é enviada quando está marcada
  • Botão de opção — permite selecionar exatamente uma opção; agrupado por name
  • Ambos usam o atributo checked para seleção prévia
  • Coloque-os dentro de <fieldset> + <legend>
  • As teclas de seta navegam dentro de um grupo de botões de opção
Grátis para começar

Aprenda HTML com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
40
Aulas
159

Perguntas Frequentes

A aula “Grupos de caixas de seleção e botões de opção” é grátis?

Sim — o texto completo de “Grupos de caixas de seleção e botões de opção” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de HTML Academy, atualize para CoddyKit PRO. O curso de HTML Academy inclui 4 aulas no total.

O que vou aprender em “Grupos de caixas de seleção e botões de opção”?

Permita que os usuários escolham uma ou várias opções de um grupo. Você pratica HTML Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar HTML Academy?

Nenhuma experiência prévia é necessária. HTML Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Grupos de caixas de seleção e botões de opção”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de HTML Academy?

Sim. Cada aula de HTML Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Menus pendentes select e option
  2. Textarea para entrada de várias linhas
  3. Grupos de caixas de seleção e botões de opção
  4. Datalist para preenchimento automático
← Voltar para HTML Academy