W3docs

Tag HTML <fieldset>

A tag HTML <fieldset> agrupa visualmente campos relacionados em um formulário HTML definido com a tag <form>. Veja sintaxe e exemplos.

A tag <fieldset> agrupa controles logicamente relacionados dentro de um <form> HTML, permitindo dividir um formulário longo em seções claras. Por padrão, o navegador desenha uma caixa ao redor do conteúdo agrupado. Combinada com um <legend>, ela também é a forma correta de dar a um grupo de controles <input> um rótulo compartilhado e acessível.

Esta página aborda a sintaxe, o papel do <legend>, todos os atributos (name, disabled, form), como reestilizar ou remover a caixa, e por que o <fieldset> é importante para grupos acessíveis de radio buttons e checkboxes.

Sintaxe

A tag <fieldset> vem em pares. O conteúdo é escrito entre as tags de abertura (<fieldset>) e de fechamento (</fieldset>).

Exemplo da tag HTML <fieldset>:

Tag HTML <fieldset>

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      div {
        margin-bottom: 10px;
      }
      label {
        display: inline-block;
        width: 120px;
      }
      fieldset {
        background: #e1eff2;
      }
      legend {
        padding: 20px 0;
        font-size: 20px;
      }
    </style>
  </head>
  <body>
    <form>
      <fieldset>
        <legend>Personal Information:</legend>
        <div>
          <label for="name">Name:</label>
          <input type="text" id="name" />
        </div>
        <div>
          <label for="email">Email:</label>
          <input type="email" id="email" />
        </div>
        <div>
          <label for="date">Date of birth:</label>
          <input type="date" id="date" />
        </div>
        <div>
          <label for="birth-place">Place of birth:</label>
          <input type="text" id="birth-place" />
        </div>
      </fieldset>
    </form>
  </body>
</html>

Resultado

exemplo de fieldset

O elemento <legend>

O elemento <legend> fornece ao <fieldset> uma legenda. Duas regras são importantes:

  • Ele deve ser o primeiro filho do <fieldset>. Se aparecer em outro lugar, os navegadores o ignoram como legenda do grupo.
  • Ele é o nome acessível do grupo. As tecnologias assistivas anunciam o texto da legenda junto com cada controle dentro do grupo. Assim, quando um usuário de leitor de tela chega a um controle, ele ouve algo como "Informações Pessoais — Nome, campo de texto", o que indica a qual seção aquele campo pertence.
<fieldset>
  <legend>Shipping address</legend>
  <!-- the inputs for this section go here -->
</fieldset>

Um <fieldset> sem <legend> ainda desenha uma caixa, mas o grupo não tem nome, portanto o benefício de acessibilidade é perdido. Adicione uma legenda sempre que o agrupamento tiver significado para o usuário.

O elemento <fieldset> para organizar formulários

A maioria dos formulários online é difícil de usar e desorganizada. Organizá-los em seções lógicas melhora significativamente a usabilidade. Usar o elemento <fieldset> com o elemento <legend> cria limites claros e torna seus formulários mais fáceis de navegar.

Acessibilidade: agrupando radio buttons e checkboxes

Um único <input> de texto é rotulado pelo seu próprio <label>. Mas um conjunto de radio buttons ou checkboxes precisa de dois níveis de rotulação: um para a pergunta completa e um para cada opção. <fieldset> + <legend> é a forma padrão e acessível de fazer isso — a legenda rotula a pergunta e cada <label> rotula uma opção.

<fieldset>
  <legend>Choose a shipping method:</legend>
  <div>
    <input type="radio" id="standard" name="shipping" value="standard" />
    <label for="standard">Standard (3–5 days)</label>
  </div>
  <div>
    <input type="radio" id="express" name="shipping" value="express" />
    <label for="express">Express (1–2 days)</label>
  </div>
</fieldset>

Aqui, um leitor de tela anuncia "Escolha um método de envio, Padrão, botão de rádio" — o usuário sempre sabe qual pergunta está respondendo. Sem o invólucro <fieldset>/<legend>, as opções são lidas como uma lista desconectada. Use este padrão para cada grupo de radio buttons e para qualquer conjunto de checkboxes relacionados.

Removendo ou reestilizando a caixa

A borda padrão é apenas um estilo — não é obrigatória. Uma pergunta muito comum é como removê-la. Defina border: none no <fieldset>:

fieldset {
  border: none;
  padding: 0;
  margin: 0;
}

Você também pode dar ao <legend> e à caixa qualquer estilo que desejar (fundo, borda personalizada, cantos arredondados). O agrupamento e sua semântica de acessibilidade permanecem intactos, independentemente de como você o estilize, então você pode abandonar a aparência padrão sem perder o benefício.

Atributos

AtributoValorDescrição
disableddisabledDesabilita o grupo inteiro. Todos os controles de formulário dentro do <fieldset> ficam não interativos e não são enviados com o formulário.
formform_idAssocia o fieldset a um ou mais formulários pelo id deles, para que ele possa ficar fora do <form> ao qual pertence. Separe múltiplos ids com espaços.
nametextO nome do grupo. Não é enviado com o formulário; é usado principalmente para referenciar o grupo a partir do JavaScript.

O atributo disabled é útil quando uma seção inteira de um formulário deve ser desativada de uma vez — por exemplo, ocultando campos de pagamento até que uma checkbox seja marcada:

<fieldset disabled>
  <legend>Payment details</legend>
  <label for="card">Card number:</label>
  <input type="text" id="card" />
</fieldset>

O atributo form permite que um <fieldset> fique fora do elemento <form> e ainda assim pertença a ele:

<form id="signup"></form>

<fieldset form="signup">
  <legend>Account</legend>
  <label for="user">Username:</label>
  <input type="text" id="user" />
</fieldset>

A tag <fieldset> suporta os Atributos Globais e os Atributos de Evento.

Prática

Prática
Qual é o papel da tag HTML fieldset?
Qual é o papel da tag HTML fieldset?
Was this page helpful?