Sémantique et structure des pages

Les points suivants concernent la structure des pages html.

Pages web

  • Chaque page web doit contenir une balise <doctype> valide située avant la balise <html>.
  • Chaque document html doit contenir un attribut lang (ici, lang="fr").
  • Chaque page web doit avoir une balise <title>.

Structure et sémantique

À l'exception des balises <div> et <span>, chaque balise doit avoir un sens sémantique ou fonctionnel.

  • Les balises <header>, <main>, <nav> et <footer> doivent être utilisées si les éléments sont présents
  • Chaque liste doit être structurée via des listes non ordonnées (<ul> et <li>), ordonnées (<ol> et <li>), ou de définition (<dl> et <dt>/<dd>)
  • Chaque citation doit être indiquée par les balises <q> ou <blockquote>
  • Chaque acronyme doit être contenu dans une balise <abbr> et développé dans l'attribut <title>

Balises de titre

Chaque page avec du contenu textuel doit posséder une et une seule balise <h1> portant le titre de la page ou du contenu de la page.

Les balises de titre (<h1> à <h6>) doivent :

  • être correctement hiérarchisées, c'est à dire, dans le bon ordre (<h2> sous <h1>) et sans sauter de niveau (<h3> ne peut pas suivre directement <h1>)
  • être appliquées à chaque élément étant sémantiquement un titre
  • avoir un contenu suffisamment informatif pour renseigner un utilisateur qui ne fait que parcourir les titres

DO

Utilisation correcte : 1 balise <h1> et les autres niveaux hiérarchisés

<h1>Titre de la page</h1>
<h2>Partie A</h2>
<h3>Partie A.a</h3>
<h3>Partie A.b</h3>
<h2>Partie B</h2>
DON'T

Utilisation incorrecte des balises de titre :

  • Plusieurs balises de niveau <h1> :
    <h1>Partie A</h1>
    <h1>Partie B</h1>
  • Balise de niveau <h1> manquante :
    <h2>Partie A</h2>
    <h2>Partie B</h2>
  • Niveaux inhomogènes :
    <h1>Titre de la page</h1>
    <h2>Partie A</h2>
    <h3>Partie B</h3>
  • Niveaux manquants :
    <h1>Titre de la page</h1>
    <h3>Partie A</h3>
    <h3>Partie B</h3>
  • Niveaux dans le désordre :
    <h1>Titre de la page</h1>
    <h4>Partie A</h4>
    <h3>Partie A.a</h3>
    <h4>Partie B</h4>