Trilha de aprendizado · Nível 6 · Tutorial 5

Agrupar campos relacionados com fieldset e legend

Ao concluir, você poderá reunir campos relacionados em grupos com identificação semântica, preservando o rótulo individual de cada controle.

  • Nível: Iniciante
  • Duração: 9 min
  • 5 passos
Agrupar campos relacionados com fieldset e legend

Passo 1 de 5

Reconhecer campos que pertencem ao mesmo grupo

Decida quais campos devem ficar juntos pelo contexto das informações solicitadas, não pela quantidade ou pelo tipo de campo.

O que esses campos têm em comum?

Antes de pensar no HTML, observe as informações solicitadas. Campos que compartilham um contexto podem formar um grupo, quando isso ajuda a entender a organização do formulário.

Exemplo

Em um cadastro de loja

  • Contato: e-mail e telefone.
  • Endereço de entrega: rua, cidade e CEP.

Um conjunto permite entrar em contato com a pessoa; o outro informa onde entregar a compra.

Relacione pelo contexto

Relacione cada conjunto de campos ao contexto que compartilham no cadastro de uma loja.

Toque em um item e depois no par correspondente.

Tipo e quantidade não definem o grupo

Nome de usuário e rua podem usar campos de texto com aparência igual, mas pertencem a contextos diferentes. Já e-mail e telefone usam tipos de input diferentes e compartilham o contexto de contato.

Dica

Agrupe para esclarecer

Não há quantidade fixa de campos por grupo. Evite dividir um mesmo assunto em vários grupos sem necessidade: cada divisão deve ajudar a compreender o formulário.

Essa divisão ajuda?

Um formulário que pede apenas rua, cidade e CEP precisa de três grupos separados: um para cada campo.

Passo 2 de 5

Montar o grupo com fieldset e legend

Estruture um grupo de campos com fieldset e coloque legend na posição correta, mantendo os controles e seus rótulos dentro do grupo.

A estrutura do grupo

fieldset agrupa semanticamente controles relacionados: expressa no HTML que eles formam um conjunto. Coloque os campos e seus rótulos dentro dele.

legend identifica esse grupo. Ela deve ser o primeiro elemento filho direto de fieldset: vem logo após a abertura, sem ficar dentro de outro elemento.

Trecho de um formulário

html
<fieldset>
  <legend>Contato</legend>

  <label for="email">E-mail</label>
  <input type="email" id="email" name="email">

  <label for="telefone">Telefone</label>
  <input type="tel" id="telefone" name="telefone">
</fieldset>

Dica

Uma identificação por grupo

Neste padrão, cada fieldset recebe uma única legend. O fechamento de fieldset vem depois de todos os campos e rótulos que pertencem ao grupo.

O formulário que você vai reorganizar

Rua e CEP já foram escolhidos para formar o grupo Endereço de entrega.

Seu desafio será acrescentar fieldset e legend ao formulário abaixo, preservando os campos, os rótulos, os atributos e a ordem existente. O botão Salvar deve continuar depois do grupo, dentro do formulário.

Antes do agrupamento

html
<form action="/cadastro" method="post">
  <label for="rua">Rua</label>
  <input type="text" id="rua" name="rua">

  <label for="cep">CEP</label>
  <input type="text" id="cep" name="cep">

  <button type="submit">Salvar</button>
</form>

Monte o grupo

Organize os blocos de HTML

Ordene os blocos para formar o grupo “Endereço de entrega”. Mantenha Rua e CEP com seus rótulos dentro do grupo e o botão Salvar depois dele, ainda dentro de form.

  1. <label for="rua">Rua</label> <input type="text" id="rua" name="rua"> <label for="cep">CEP</label> <input type="text" id="cep" name="cep">
  2. <legend>Endereço de entrega</legend>
  3. <button type="submit">Salvar</button> </form>
  4. </fieldset>
  5. <form action="/cadastro" method="post">
  6. <fieldset>

Passo 3 de 5

Dar contexto sem substituir os rótulos

Escreva legendas curtas e específicas que deem contexto ao grupo sem substituir os rótulos de cada campo.

O conjunto e cada campo

A legend identifica o conjunto: “Endereço de entrega”. Cada label identifica uma informação específica: “Rua”, “Número” ou “CEP”.

A legenda acrescenta contexto, mas não substitui os rótulos nem suas associações aos controles.

Exemplo

Escolha uma legenda que acrescente contexto

Para os campos do endereço de entrega de uma compra:

  • “Dados” é vago.
  • “Rua, Número e CEP” apenas enumera os campos.
  • “Endereço de entrega” é curto e explica o contexto comum.

Uma legenda basta?

Se a legend for “Rua, Número e CEP”, podemos remover os labels desses campos, pois seus nomes já aparecem na legenda.

Rótulos iguais, contextos diferentes

Nos dois grupos abaixo, os rótulos são “Rua” e “CEP”. As legendas esclarecem a finalidade de cada endereço. Cada label continua associado ao seu próprio controle.

Trecho de um formulário

html
<fieldset>
  <legend>Endereço de entrega</legend>
  <label for="rua-entrega">Rua</label>
  <input type="text" id="rua-entrega" name="rua_entrega">
  <label for="cep-entrega">CEP</label>
  <input type="text" id="cep-entrega" name="cep_entrega">
</fieldset>

<fieldset>
  <legend>Endereço de cobrança</legend>
  <label for="rua-cobranca">Rua</label>
  <input type="text" id="rua-cobranca" name="rua_cobranca">
  <label for="cep-cobranca">CEP</label>
  <input type="text" id="cep-cobranca" name="cep_cobranca">
</fieldset>

Melhore a legenda

Um formulário de reserva tem um fieldset com a legend “Informações” e os campos “Nome” e “E-mail” da pessoa responsável pela reserva.

Proponha uma legenda mais informativa e explique por que os labels devem ser mantidos associados aos campos. Não é necessário escrever HTML.

Passo 4 de 5

Distinguir significado de aparência

Diferencie a aparência de um grupo da associação semântica que oferece contexto às tecnologias assistivas.

A borda não comprova o grupo

Uma borda, campos próximos ou um texto destacado podem sugerir um grupo visualmente. Mas não criam, por si só, a associação semântica fornecida por fieldset e legend.

O navegador pode exibir uma borda padrão no fieldset, mas essa aparência não é sua finalidade. Mesmo sem borda visível, a estrutura com fieldset e legend continua identificando o grupo.

Mesmo visual, marcações diferentes

Imagine duas versões de um formulário com a mesma aparência: borda e título “Contato”. Compare a marcação dos trechos abaixo.

Trecho A

html
<div>
  <p>Contato</p>
  <label for="email-a">E-mail</label>
  <input type="email" id="email-a" name="email">
  <label for="telefone-a">Telefone</label>
  <input type="tel" id="telefone-a" name="telefone">
</div>

Trecho B

html
<fieldset>
  <legend>Contato</legend>
  <label for="email-b">E-mail</label>
  <input type="email" id="email-b" name="email">
  <label for="telefone-b">Telefone</label>
  <input type="tel" id="telefone-b" name="telefone">
</fieldset>

Qual estrutura estabelece a associação?

Qual trecho identifica semanticamente o grupo como “Contato”?

Contexto que vai além do visual

No trecho B, “Contato” fica disponível como contexto compartilhado para tecnologias assistivas. Um leitor de tela pode usar essa informação ao apresentar os campos, ajudando o usuário a interpretar o conjunto.

Dica

Não há uma fala única garantida

A forma e a frequência de anúncio da legend podem variar conforme a combinação de navegador, leitor de tela e modo de navegação. A marcação fornece o contexto, mas não determina uma sequência fixa de fala.

Interprete a variação

Verdadeiro ou falso?

Se um leitor de tela não repetir a legend antes de cada campo, isso, por si só, comprova um erro no HTML.

Passo 5 de 5

Aplicar e revisar o agrupamento completo

Organize um formulário em dois grupos semânticos e confira se as legendas complementam os rótulos dos campos.

Desafio: organize o formulário

Dois contextos no mesmo formulário

Uma loja solicita meios de contato para avisar o cliente e um endereço para entregar o pedido. O trecho abaixo já tem rótulos associados aos controles, mas os campos desses dois contextos estão misturados.

Trecho para adaptar

html
<form>
  <label for="email">E-mail</label>
  <input type="email" id="email" name="email">

  <label for="rua">Rua</label>
  <input type="text" id="rua" name="rua">

  <label for="telefone">Telefone</label>
  <input type="tel" id="telefone" name="telefone">

  <label for="numero">Número</label>
  <input type="text" id="numero" name="numero">
</form>

Crie os grupos e justifique

Reorganize o trecho em dois grupos dentro de form, usando fieldset e legend. Escolha legendas curtas e específicas e preserve todos os labels e atributos existentes. Entregue o HTML adaptado e, abaixo dele, uma frase explicando o critério da divisão.

Revisão e conclusão

Resumo

Confira sua solução

Antes de encerrar, revise seu HTML com estes critérios e ajuste o que faltar.

  • Os campos foram reunidos por contexto: contato do cliente e endereço de entrega.
  • Cada fieldset contém os controles relacionados e seus labels.
  • Cada grupo tem uma legend curta e específica como primeiro elemento filho direto.
  • Todos os rótulos individuais foram preservados, assim como as associações entre for e id.
  • A relação entre os campos está expressa no HTML: bordas, proximidade ou títulos isolados não substituem esse agrupamento semântico.

Agrupar campos relacionados com fieldset e legend

Parabéns! Você concluiu: Agrupar campos relacionados com fieldset e legend

Tutorial concluído! Você praticou como criar grupos com contexto compartilhado, identificá-los com legend e manter o rótulo de cada controle. O resultado comunica a organização do formulário sem depender apenas da aparência.

Baixe o Aplicativo agora para ter acesso a + de 5000 cursos gratuitos, exercícios, certificado e muito conteúdo sem pagar nada!

  • Cursos online 100% gratuitos do início ao fim

    Milhares de cursos online em vídeo, ebooks e áudiobooks.

  • Mais de 60 mil exercícios gratuitos

    Para testar seus conhecimentos no decorrer dos cursos online

  • Certificado Digital gratuito válido em todo o Brasil

    Gerado diretamente na galeria de fotos do seu celular e enviado ao seu e-mail

Aplicativo Cursa na tela de ebook, na tela de curso em vídeo e na tela de exercícios do curso, mais o certificado de conclusão de curso