edubun
Français

Structure sémantique de la page

La plupart des pages ont à peu près la même forme : un en-tête, un menu, le contenu principal et un pied de page. HTML a un élément pour chacun, et les lecteurs d'écran permettent d'y sauter directement.

De la soupe de div aux points de repère

Pendant des années, les pages ont été construites avec des éléments <div> portant des noms de classe comme header ou menu. Un <div> est une boîte générique sans aucun sens : le nom de classe était le seul indice, et seules les personnes qui lisaient le code pouvaient le voir. HTML a maintenant des éléments qui disent ce qu'est chaque région. Les navigateurs, les moteurs de recherche et les technologies d'assistance les comprennent, et les utilisateurs de lecteurs d'écran peuvent ouvrir la liste de ces régions, appelées points de repère (landmarks), et sauter à celle qu'ils veulent, comme les personnes voyantes jettent un coup d'œil à la mise en page.

Une forme de page courante. Seules les étiquettes sont standard ; les positions viennent de CSS et peuvent changer sur un téléphone.

Les régions principales

  • <header> : contenu d'introduction, en général le nom ou le logo du site et souvent le menu principal. Un article peut aussi avoir son propre header.
  • <nav> : un bloc de liens de navigation importants, comme le menu du site ou une table des matières. Tout groupe de liens n'en a pas besoin.
  • <main> : le contenu propre à cette page. Utilise exactement un <main> visible par page, et ne le place pas dans header, nav, aside ou footer.
  • <article> : un morceau autonome qui aurait du sens tout seul, comme un billet de blog, un article d'actualité ou une fiche produit.
  • <section> : une partie thématique d'une page ou d'un article, en principe avec son propre titre.
  • <aside> : un contenu lié au contenu principal mais séparé de lui, comme une barre latérale, un encadré de glossaire ou des liens connexes.
  • <footer> : des informations de fin, comme l'auteur, le copyright et les liens de contact.

Ces éléments décrivent le sens, pas la position. Un <nav> n'est pas forcément en haut, et un <aside> n'est pas forcément à droite ; sur un téléphone, l'aside finit en général sous le contenu principal. Les positions viennent de CSS. Choisis l'élément en te demandant ce qu'est le contenu, de la même façon que tu as choisi les niveaux de titre selon la structure plutôt que selon la taille.

article ou section ?

La question à se poser : ce morceau aurait-il du sens tout seul ailleurs, par exemple dans un lecteur d'actualités ou partagé sous forme de lien ? Si oui, c'est un <article>. S'il n'a de sens que comme partie d'un ensemble plus grand, comme la partie Ingrédients d'une recette, c'est une <section>. Les deux commencent normalement par un titre. Les articles peuvent contenir des sections, et une section peut contenir des articles, comme une section Derniers billets qui contient plusieurs fiches de billets.

div et span ont encore leur place

Quand aucun élément ne convient, utilise <div> pour un bloc et <span> pour quelques mots dans une ligne. Ils sont utiles comme points d'accroche pour CSS, par exemple un <div class="cards"> qui dispose des fiches en grille. La règle : cherche d'abord un élément qui a du sens, et ne te rabats sur un élément générique que si rien ne décrit le contenu. Une page faite uniquement de div fonctionne, mais elle cache sa structure à tous ceux qui ne regardent pas le code.

Un test rapide : ouvre ta page avec CSS désactivé, ou lis le plan des titres et des points de repère qu'affiche une extension de navigateur. Si la page se lit toujours dans un ordre logique, avec un en-tête, un menu, un contenu principal et un pied de page bien clairs, la structure fait son travail.

Les éléments natifs avant ARIA

Tu croiseras peut-être l'attribut role, qui fait partie d'une norme du W3C appelée WAI-ARIA, écrit sous la forme <div role="navigation">. Il donne à un élément générique un sens pour les technologies d'assistance. Le guide du W3C sur l'utilisation d'ARIA commence par une règle simple : si un élément HTML natif a déjà le sens dont tu as besoin, utilise-le. <nav> est plus court, fonctionne partout et ne peut pas être oublié à un endroit et pensé à un autre. La même idée vaut pour les boutons : un vrai <button> reçoit le focus avec Tab et s'active avec Entrée ou Espace sans rien faire de plus, alors qu'un <div> cliquable a besoin de code supplémentaire pour en faire autant.

headerContenu d'introduction : nom du site, logo, souvent le menu
navLiens de navigation importants
mainContenu propre à cette page ; un seul par page
articleMorceau autonome qui a du sens tout seul
sectionUne partie thématique, en général avec un titre
asideContenu lié mais séparé, comme une barre latérale
footerInformations de fin : auteur, copyright, contact
point de repèreUne région de la page vers laquelle les utilisateurs de lecteurs d'écran peuvent sauter
  1. Combien d'éléments main visibles une page doit-elle avoir ?
  2. Un billet de blog qui pourrait être partagé tout seul est
    • article
    • section
    • aside
  3. La partie Ingrédients d'un article de recette est
    • section
    • article
    • nav
  4. Quel élément contient le menu du site ?
  5. aside doit-il apparaître à droite ?
    • Non, la position vient de CSS
    • Oui
    • Seulement sur les grands écrans
  6. Que signifie un div ?
    • Rien ; c'est une boîte générique
    • Une section de document
    • Une grille de mise en page
  7. Quel élément marque quelques mots dans une ligne, sans sens, pour la mise en forme ?
    • span
    • div
    • strong
  8. Où doivent aller le copyright et les liens de contact ?
    • footer
    • header
    • main
  9. Comment les points de repère aident-ils les utilisateurs de lecteurs d'écran ?
    • Ils peuvent lister les régions et sauter à l'une d'elles
    • Ils rendent le texte plus fort
    • Ils cachent le menu
  10. Peut-on placer main dans header ?
    • Non
    • Oui
    • Seulement avec un titre
L'essentiel
  • header, nav, main, article, section, aside et footer nomment les régions d'une page.
  • Choisis selon le sens ; CSS décide de la position.
  • N'utilise div et span que si aucun élément porteur de sens ne convient.
Sources de ce cours (10)
  • WHATWG, HTML Living Standard (html.spec.whatwg.org, checked 2026-10-17)
  • MDN Web Docs, Learn web development: Structuring content with HTML, and the HTML element reference (developer.mozilla.org/en-US/docs/Learn_web_development/Core/Structuring_content and developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements, checked 2026-10-17)
  • MDN, HTML images (alt text guidance, checked 2026-10-17)
  • W3C WAI, Images tutorial and alt decision tree (w3.org/WAI/tutorials/images/decision-tree, checked 2026-10-17)
  • CERN, A short history of the Web (home.cern/science/computing/the-birth-of-the-web/short-history-web/, checked 2026-10-17)
  • W3C and WHATWG memorandum of understanding, 28 May 2019 (w3.org/2019/04/WHATWG-W3C-MOU.html, checked 2026-10-17)
  • W3C, Using ARIA, first rule of ARIA use (w3.org/TR/using-aria/, checked 2026-10-17)
  • W3C Markup Validation Service (validator.w3.org, checked 2026-10-17)
  • MDN, Viewport meta element (checked 2026-10-17)
  • Every code exercise was checked with a Playwright probe against a reference solution.

Consulté le: 2026-10-17