À quoi sert la balise section
<section> regroupe un contenu sur un même thème, et elle commence par un titre qui nomme ce thème. Une page d'accueil divisée en « Features », « Pricing » et « FAQ » en est l'exemple type :
Chaque section est un chapitre de la page, et chaque titre est une ligne de la table des matières de la page. Comme les autres balises sémantiques, <section> n'a pas de style par défaut ; les bordures viennent du CSS.
section, article ou div
Les trois se ressemblent à l'écran. Ce qui diffère, c'est ce qu'ils disent du contenu :
| Élément | Signifie | Test |
|---|---|---|
<article> | Un contenu complet et autonome | Aurait-il du sens publié seul, sur un autre site ou dans un flux ? |
<section> | Une partie thématique d'un ensemble plus grand | A-t-il (ou lui faut-il) un titre, et est-ce un chapitre de quelque chose ? |
<div> | Rien : une boîte de style ou de mise en page | N'est-il là que pour le CSS ou le JavaScript ? |
Les articles de blog, les commentaires de forum, les actualités et les fiches produits sont des articles. « Features », « Chapitre 2 » et « Produits associés » sont des sections. Une rangée flex qui aligne trois cartes est une div.
Des articles dans une section
Les deux s'imbriquent dans les deux sens. Ici, une section « Latest posts » contient plusieurs articles indépendants :
Remarquez la <div class="grid"> : elle n'existe que pour disposer les cartes en ligne, donc une div est la bonne balise. Chaque carte est un article car chaque billet tient debout seul.
Des sections dans un article
Un long article peut être divisé en sections, comme les chapitres d'un livre. Les niveaux de titre prolongent celui de l'article :
La boîte bleue est l'article (tout le guide), les barres vertes sont ses sections. Donnez à une section son propre niveau de titre : un article en h2 contient des sections en h3.
Les sections nommées deviennent des repères
Les lecteurs d'écran listent certains éléments comme des repères entre lesquels les utilisateurs peuvent sauter. Une <section> ne devient un repère region que si elle a un nom accessible. Faites pointer aria-labelledby vers son titre :
<section aria-labelledby="pricing-title">
<h2 id="pricing-title">Pricing</h2>
...
</section>
Faites-le pour les quelques sections vers lesquelles un utilisateur voudrait aller directement, pas pour toutes : une page avec vingt repères est aussi difficile à parcourir qu'une page sans aucun. Les sections sans nom restent utiles, car leurs titres apparaissent dans la liste des titres du lecteur d'écran.
Les sections font aussi de bonnes cibles pour les liens internes. Donnez-en une un id et un lien avec href="#id" y mène directement :
Erreurs fréquentes
- Utiliser
<section>comme conteneur de style. S'il n'y a ni titre ni thème, utilisez<div>. La page sur le HTML sémantique montre la place de chaque balise de mise en page. - Entourer un seul article de blog de
<section>. Un billet qui tient debout seul est un<article>. - Des sections sans titre. Ajoutez un titre, même masqué visuellement, ou demandez-vous si c'est vraiment une section.
- Remplacer
<main>par<section>. Le contenu principal de la page va dans<main>; les sections vont à l'intérieur. - Nommer chaque section. N'ajoutez
aria-labelledbyqu'aux sections importantes, pour que la liste des repères reste courte.
Questions fréquentes
Qu'est-ce que la balise section en HTML ?
<section> regroupe un contenu qui appartient à un même thème, comme un chapitre d'un document ou la partie « Tarifs » d'une page d'accueil. Elle devrait normalement commencer par un titre qui dit de quoi parle la section.
Quelle est la différence entre section et div ?
<section> indique que le contenu est une partie thématique du document avec son propre titre. <div> n'indique rien ; c'est une boîte pour le style ou la mise en page. Si vous avez seulement besoin d'un conteneur pour le CSS, utilisez <div>.
Quelle est la différence entre section et article ?
<article> est un contenu qui a du sens seul, hors de la page : un article de blog, un commentaire, une fiche produit. <section> est une partie d'un ensemble plus grand qui n'a de sens que dans son contexte. Demandez-vous si vous pourriez publier le morceau seul : si oui, c'est un article.
Un article peut-il contenir des sections, et une section des articles ?
Oui, les deux. Un long article peut être découpé en sections, et une section comme « Derniers articles » peut contenir une liste d'articles.
Une section a-t-elle besoin d'un titre ?
Elle devrait en avoir un dans presque tous les cas, car c'est le titre qui nomme le thème. Si vous ne trouvez pas de titre pour elle, le contenu n'est probablement pas une section et une <div> convient mieux.