W3docs

Balise HTML <fieldset>

La balise HTML <fieldset> regroupe des champs liés dans un formulaire HTML défini avec <form>. Syntaxe, attributs et exemples.

La balise <fieldset> regroupe des contrôles logiquement liés à l'intérieur d'un <form> HTML, ce qui vous permet de diviser un long formulaire en sections claires. Par défaut, le navigateur dessine un encadré autour du contenu groupé. Associée à <legend>, c'est également la méthode correcte pour donner à un groupe de contrôles <input> un libellé commun et accessible.

Cette page couvre la syntaxe, le rôle de <legend>, chaque attribut (name, disabled, form), comment redéfinir ou supprimer l'encadré, et pourquoi <fieldset> est important pour l'accessibilité des groupes de boutons radio et de cases à cocher.

Syntaxe

La balise <fieldset> fonctionne par paires. Le contenu est écrit entre la balise ouvrante (<fieldset>) et la balise fermante (</fieldset>).

Exemple de la balise HTML <fieldset> :

Balise 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>

Résultat

fieldset example

L'élément <legend>

L'élément <legend> donne une légende au <fieldset>. Deux règles sont importantes :

  • Il doit être le premier enfant du <fieldset>. S'il apparaît ailleurs, les navigateurs l'ignorent en tant que légende du groupe.
  • C'est le nom accessible du groupe. Les technologies d'assistance annoncent le texte de la légende avec chaque contrôle à l'intérieur du groupe. Ainsi, lorsqu'un utilisateur de lecteur d'écran atteint un contrôle, il entend quelque chose comme « Informations personnelles — Nom, champ texte », ce qui lui indique à quelle section appartient ce champ.
<fieldset>
  <legend>Shipping address</legend>
  <!-- the inputs for this section go here -->
</fieldset>

Un <fieldset> sans <legend> dessine quand même un encadré, mais le groupe n'a pas de nom, ce qui fait perdre le bénéfice pour l'accessibilité. Ajoutez une légende chaque fois que le regroupement a une signification pour l'utilisateur.

L'élément <fieldset> pour organiser les formulaires

La majorité des formulaires en ligne sont difficiles à utiliser et mal organisés. Les organiser en sections logiques améliore considérablement la convivialité. Utiliser l'élément <fieldset> avec l'élément <legend> crée des délimitations claires et facilite la navigation dans vos formulaires.

Accessibilité : regrouper les boutons radio et les cases à cocher

Un seul <input> texte est étiqueté par son propre <label>. Mais un ensemble de boutons radio ou de cases à cocher nécessite deux niveaux d'étiquetage : un pour la question entière et un pour chaque option. <fieldset> + <legend> est la méthode standard et accessible pour ce faire — la légende étiquette la question, et chaque <label> étiquette une option.

<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>

Ici, un lecteur d'écran annonce « Choisissez un mode de livraison, Standard, bouton radio » — l'utilisateur sait toujours à quelle question il répond. Sans l'encapsulation <fieldset>/<legend>, les options sont lues comme une liste déconnectée. Utilisez ce modèle pour chaque groupe de boutons radio et pour tout ensemble de cases à cocher liées.

Supprimer ou redéfinir le style de l'encadré

La bordure par défaut n'est qu'un style — elle n'est pas obligatoire. Une question très courante est de savoir comment la supprimer. Définissez border: none sur le <fieldset> :

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

Vous pouvez également appliquer n'importe quel style à la <legend> et à l'encadré (arrière-plan, bordure personnalisée, coins arrondis). Le regroupement et sa sémantique d'accessibilité restent intacts quelle que soit la façon dont vous le stylisez ; vous pouvez donc abandonner l'apparence par défaut sans perdre le bénéfice.

Attributs

AttributValeurDescription
disableddisabledDésactive tout le groupe. Chaque contrôle de formulaire à l'intérieur du <fieldset> devient non interactif et n'est pas soumis avec le formulaire.
formform_idAssocie le fieldset à un ou plusieurs formulaires via leur id, de sorte qu'il peut se trouver en dehors du <form> auquel il appartient. Séparez plusieurs identifiants par des espaces.
nametextLe nom du groupe. Il n'est pas soumis avec le formulaire ; il est principalement utilisé pour référencer le groupe depuis JavaScript.

L'attribut disabled est pratique lorsqu'une section entière d'un formulaire doit être désactivée en une seule fois — par exemple, masquer les champs de paiement jusqu'à ce qu'une case à cocher soit cochée :

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

L'attribut form permet à un <fieldset> de se trouver en dehors de l'élément <form> tout en lui appartenant :

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

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

La balise <fieldset> prend en charge les attributs globaux et les attributs d'événement.

Entraînement

Pratique
Quel est le rôle de la balise HTML fieldset ?
Quel est le rôle de la balise HTML fieldset ?
Was this page helpful?