J'ai deux balises <h1>
sur un site Web.
Chaque page est le logo du site
Le titre de l'article de la page.
Je sais qu’avoir plus d’une balise <h1>
par page est une mauvaise pratique. Dois-je retirer la balise <h1>
du logo?
Oui, supprimez la balise h1
du logo. Une erreur courante consiste à l'utiliser simplement pour utiliser son style, mais cela n'a aucun sens d'un point de vue sémantique.
Un élément h1
représente l'en-tête avec le rang le plus élevé pour une section. Il est donc logique de l'utiliser pour un titre.
Si vous vous souciez du HTML sémantique et du contour du document, il est logique d'utiliser h1
pour le logo (en supposant que le logo représente le nom du site).
Pourquoi? Voir les trois prochaines étapes.
Un document HTML5 simple et commun, sans en-tête, pourrait ressembler à ceci:
<body>
<header><!-- site-wide header --></header>
<main><article><!-- page-specific main content --></article></main>
<nav><!-- site-wide navigation --></nav>
<footer><!-- site-wide footer --></footer>
</body>
Nous avons trois sections ici:
body
(racine de sectionnement)article
nav
Dans l'aperçu du document, chaque section reçoit une entrée (qui équivaut sémantiquement à un en-tête). Donc, le contour, sans utiliser d’éléments de titre, est:
1. untitled <body>
1.1 untitled <article>
1.2 untitled <nav>
article
et nav
Donnons maintenant à la article
un en-tête. Peu importe lequel, mais HTML5 recommande d'utiliser un élément d'en-tête qui correspond au niveau d'imbrication, c'est-à-dire h2
dans ce cas: <h2>My first blog post</h2>
.
Et pour les besoins de cet exemple, donnons également à nav
un en-tête (h2
pour les mêmes raisons), bien qu'il n'en ait généralement pas besoin si c'est la seule navigation: <h2>Navigation</h2>
Donc nous avons:
<body>
<header><!-- site-wide header --></header>
<main>
<article>
<h2>My first blog post</h2>
</article>
</main>
<nav>
<h2>Navigation</h2>
</nav>
<footer><!-- site-wide footer --></footer>
</body>
Le plan du document ne change pas, il n’obtient que les étiquettes:
1. untitled <body>
1.1 "My first blog post"
1.2 "Navigation"
body
Mais qu'en est-il de l'entrée sans titre body
? Elle est longue pour un en-tête! Quelle rubrique pourrait-il éventuellement prendre? Le nom du site! Pourquoi? Car la page ne contient pas uniquement du contenu spécifique à la page (comme le contenu principal), mais également du contenu couvrant l’ensemble du site (comme l’en-tête, le pied de page et la navigation). Et un titre de site nous permet de le représenter dans l’esquisse.
Ainsi, l'en-tête de la racine de sectionnement body
serait généralement le nom du site (<h1>Alice’s blog</h1>
), qui peut bien entendu être également un logo (<h1><img src="logo.png" alt="Alice’s blog" /></h1>
).
Cela nous donne:
<body>
<header>
<h1><img src="logo.png" alt="Alice’s blog" /></h1>
</header>
<main>
<article>
<h2>My first blog post</h2>
</article>
</main>
<nav>
<h2>Navigation</h2>
</nav>
<footer><!-- site-wide footer --></footer>
</body>
Quels résultats dans ce contour:
1. "Alice’s blog"
1.1 "My first blog post"
1.2 "Navigation"
Mes réponses aux questions connexes: