Référence Complète HTML5
Guide interactif et complet des éléments sémantiques HTML5 avec exemples pratiques
LP DWCA - Développeur Web et Conception d'Applications
Qu'est-ce que le HTML5 ?
HTML5 est la cinquième et dernière version majeure du standard HTML (HyperText Markup Language), le langage fondamental du World Wide Web. Il apporte de nouvelles fonctionnalités, des améliorations et une structure sémantique plus riche pour répondre aux besoins modernes du web.
Définition du HTML Sémantique
Le HTML sémantique, également connu sous le nom de balisage sémantique, désigne l'utilisation de balises HTML qui transmettent la signification - ou la valeur sémantique - du contenu qu'elles renferment.
Avantages Principaux du HTML5
<header>, <nav>, <article> rendent la structure de la page plus claire et significative.
<video> et <audio> sans plugins externes comme Flash.
Pourquoi Utiliser des Balises Sémantiques ?
Structure du Document HTML5
Chaque document HTML5 commence par une déclaration DOCTYPE qui indique au navigateur le standard de la page, suivi des éléments de structure de base.
Structure Minimale
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Titre de la Page</title>
</head>
<body>
<!-- Le contenu de la page va ici -->
</body>
</html>
Éléments Racine et Métadonnées
lang spécifie la langue du document (ex: lang="fr" pour le français).
<meta name="viewport" content="width=device-width, initial-scale=1.0">
Éléments de Structure Sémantique
Les éléments de structure sémantique organisent le contenu de la page de manière significative. Ils ont été introduits avec HTML5 pour remplacer les <div> génériques.
<div> et <span> qui sont non-sémantiques, ces balises indiquent clairement le rôle du contenu qu'elles renferment.
Structure Typique d'une Page HTML5
<body>
<header>
<h1>Titre du Site</h1>
<nav>
<a href="#accueil">Accueil</a>
<a href="#services">Services</a>
<a href="#contact">Contact</a>
</nav>
</header>
<main>
<article>
<header>
<h2>Titre de l'Article</h2>
</header>
<section>
<h3>Première Section</h3>
<p>Contenu de la section...</p>
</section>
<footer>
<p>Publié le 23 octobre 2025</p>
</footer>
</article>
<aside>
<h3>Articles Connexes</h3>
<p>Contenu complémentaire...</p>
</aside>
</main>
<footer>
<p>© 2025 Mon Site Web</p>
</footer>
</body>
Détail des Éléments
Contenu typique : Logo, titre principal, navigation, formulaire de recherche.
Note : Peut être utilisé plusieurs fois dans une page (en-tête de page, en-tête d'article, etc.).
<header>
<h1>Mon Blog Personnel</h1>
<p>Partage de connaissances en développement web</p>
</header>
Utilisation : Menu principal, table des matières, fil d'Ariane.
Conseil : Réservez
<nav> pour les navigations importantes, pas pour tous les groupes de liens.
<nav>
<ul>
<li><a href="/">Accueil</a></li>
<li><a href="/blog">Blog</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
</nav>
Règle importante : Il ne doit y avoir qu'un seul élément
<main> par page.Exclusions : Ne doit pas contenir de contenu répété (navigation, footer, sidebar).
<main>
<h1>Guide HTML5 Complet</h1>
<p>Contenu principal de la page...</p>
</main>
Exemples : Article de blog, commentaire, widget, carte produit.
Test : Le contenu aurait-il du sens s'il était extrait et publié ailleurs ? Si oui, utilisez
<article>.
<article>
<h2>Les Nouveautés HTML5</h2>
<p>Publié le <time datetime="2025-10-23">23 octobre 2025</time></p>
<p>HTML5 apporte de nombreuses améliorations...</p>
</article>
Différence avec article :
<section> n'est pas autonome, c'est une partie d'un ensemble.Bonne pratique : Chaque section devrait avoir un titre (
<h2>, <h3>, etc.).
<section>
<h2>À Propos de Nous</h2>
<p>Notre mission est de...</p>
</section>
<section>
<h2>Nos Services</h2>
<p>Nous proposons...</p>
</section>
Utilisations courantes : Barre latérale (sidebar), encadrés, publicités, liens connexes.
Caractéristique : Le contenu est lié mais pas essentiel à la compréhension du contenu principal.
<aside>
<h3>Articles Populaires</h3>
<ul>
<li><a href="/article1">Introduction à CSS</a></li>
<li><a href="/article2">JavaScript ES6</a></li>
</ul>
</aside>
Contenu typique : Informations de copyright, liens de contact, mentions légales, plan du site.
Note : Comme
<header>, peut être utilisé plusieurs fois (pied de page, pied d'article).
<footer>
<p>© 2025 Mon Site. Tous droits réservés.</p>
<nav>
<a href="/mentions-legales">Mentions Légales</a>
<a href="/confidentialite">Politique de Confidentialité</a>
</nav>
</footer>
Éléments de Contenu Textuel
Ces éléments organisent les blocs ou sections de contenu textuel. Ils sont essentiels pour la structure sémantique du document.
Usage : L'élément le plus courant pour le contenu textuel.
<p>Ceci est un paragraphe de texte. Il peut contenir plusieurs phrases.</p>
Hiérarchie :
<h1> est le plus important, <h6> le moins important.SEO : Un seul
<h1> par page recommandé.
<h1>Titre Principal</h1>
<h2>Sous-titre</h2>
<h3>Sous-sous-titre</h3>
<ol> : Liste ordonnée (numérotée)
<li> : Élément de liste
<ul>
<li>Premier élément</li>
<li>Deuxième élément</li>
</ul>
<ol>
<li>Étape 1</li>
<li>Étape 2</li>
</ol>
<dt> : Terme à définir
<dd> : Description/définition du terme
<dl>
<dt>HTML</dt>
<dd>HyperText Markup Language</dd>
<dt>CSS</dt>
<dd>Cascading Style Sheets</dd>
</dl>
Attribut :
cite pour indiquer la source.
<blockquote cite="https://example.com">
<p>Le web est pour tout le monde.</p>
<footer>— Tim Berners-Lee</footer>
</blockquote>
Usage : Code source, poésie, ASCII art.
<pre>
function hello() {
console.log("Bonjour!");
}
</pre>
Rendu : Ligne horizontale.
<p>Première section</p>
<hr>
<p>Deuxième section</p>
Sémantique de Texte Inline
Ces balises définissent la signification, la structure ou le style d'un mot, d'une ligne ou d'un fragment de texte.
Attribut principal :
href (destination du lien)
<a href="https://www.example.com">Visitez notre site</a>
<a href="#section">Aller à la section</a>
<a href="mailto:contact@example.com">Nous contacter</a>
Rendu : Généralement en gras.
Différence avec <b> :
<strong> a une valeur sémantique, <b> est purement stylistique.
<p>Ceci est <strong>très important</strong>.</p>
Rendu : Généralement en italique.
Différence avec <i> :
<em> a une valeur sémantique (emphase), <i> est stylistique.
<p>Je <em>dois</em> finir ce projet aujourd'hui.</p>
Usage : Résultats de recherche, passages importants.
<p>Recherche : <mark>HTML5</mark> trouvé dans le document.</p>
Rendu : Police monospace.
<p>Utilisez la fonction <code>console.log()</code> pour déboguer.</p>
Attribut :
datetime pour le format machine-readable.
<p>Publié le <time datetime="2025-10-23">23 octobre 2025</time></p>
Attribut :
title pour la forme complète.
<p><abbr title="World Wide Web">WWW</abbr> a été inventé en 1989.</p>
<sup> : Exposant (superscript) - E=mc²
<p>Formule chimique : H<sub>2</sub>O</p>
<p>Équation : E=mc<sup>2</sup></p>
Usage : Appliquer des styles CSS ou manipuler avec JavaScript.
<p>Le prix est <span class="prix">99€</span></p>
Éléments Multimédias
HTML5 introduit un support natif pour les médias sans nécessiter de plugins externes.
Attributs essentiels :
src (source), alt (texte alternatif pour l'accessibilité)
<img src="photo.jpg" alt="Description de l'image" width="500" height="300">
Attributs :
controls, autoplay, loop, muted
<video controls width="600">
<source src="video.mp4" type="video/mp4">
<source src="video.webm" type="video/webm">
Votre navigateur ne supporte pas la vidéo.
</video>
Formats supportés : MP3, WAV, OGG
<audio controls>
<source src="audio.mp3" type="audio/mpeg">
<source src="audio.ogg" type="audio/ogg">
Votre navigateur ne supporte pas l'audio.
</audio>
Usage : Différentes images selon la taille d'écran.
<picture>
<source media="(min-width: 800px)" srcset="large.jpg">
<source media="(min-width: 400px)" srcset="medium.jpg">
<img src="small.jpg" alt="Image responsive">
</picture>
Avantage : Qualité parfaite à toutes les tailles.
<svg width="100" height="100">
<circle cx="50" cy="50" r="40" stroke="blue" stroke-width="3" fill="lightblue" />
</svg>
Usage : Jeux, visualisations, animations.
<canvas id="myCanvas" width="200" height="100"></canvas>
<script>
const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
ctx.fillStyle = 'blue';
ctx.fillRect(10, 10, 150, 80);
</script>
Formulaires HTML5
HTML5 apporte de nombreuses améliorations aux formulaires avec de nouveaux types d'input et attributs de validation.
Structure de Base
<form action="/submit" method="post">
<label for="nom">Nom :</label>
<input type="text" id="nom" name="nom" required>
<button type="submit">Envoyer</button>
</form>
Nouveaux Types d'Input HTML5
| Type | Description | Exemple |
|---|---|---|
email |
Adresse e-mail avec validation | <input type="email"> |
url |
URL avec validation | <input type="url"> |
tel |
Numéro de téléphone | <input type="tel"> |
number |
Nombre avec contrôles | <input type="number" min="0" max="100"> |
range |
Curseur de sélection | <input type="range" min="0" max="100"> |
date |
Sélecteur de date | <input type="date"> |
time |
Sélecteur d'heure | <input type="time"> |
color |
Sélecteur de couleur | <input type="color"> |
search |
Champ de recherche | <input type="search"> |
Attributs de Validation HTML5
<input type="text" required>
<input type="text" pattern="[A-Za-z]{3,}" title="Au moins 3 lettres">
<input type="email" placeholder="votre@email.com">
<input type="number" min="1" max="10">
<input type="date" min="2025-01-01" max="2025-12-31">
<input type="text" autofocus>
Tableaux
Les tableaux organisent les données en lignes et colonnes.
Structure Complète d'un Tableau
<table>
<caption>Rapport Mensuel des Ventes</caption>
<thead>
<tr>
<th>Mois</th>
<th>Ventes</th>
<th>Profit</th>
</tr>
</thead>
<tbody>
<tr>
<td>Janvier</td>
<td>10 000 €</td>
<td>2 000 €</td>
</tr>
<tr>
<td>Février</td>
<td>12 000 €</td>
<td>2 400 €</td>
</tr>
</tbody>
<tfoot>
<tr>
<td>Total</td>
<td>22 000 €</td>
<td>4 400 €</td>
</tr>
</tfoot>
</table>
Contenu Intégré
Usage : Vidéos YouTube, cartes Google Maps, widgets externes.
<iframe src="https://www.youtube.com/embed/VIDEO_ID"
width="560" height="315"
frameborder="0"
allowfullscreen>
</iframe>
Usage : PDF, Flash (obsolète), applications.
<embed src="document.pdf" type="application/pdf" width="600" height="400">
Éléments Interactifs
Avantage : Interactif sans JavaScript.
<details>
<summary>Cliquez pour plus d'informations</summary>
<p>Voici le contenu caché qui s'affiche au clic.</p>
</details>
Cliquez pour plus d'informations
Voici le contenu caché qui s'affiche au clic. C'est un élément HTML5 natif !
Contrôle : Via JavaScript avec
showModal() et close().
<dialog id="myDialog">
<h2>Titre de la boîte de dialogue</h2>
<p>Contenu...</p>
<button onclick="document.getElementById('myDialog').close()">Fermer</button>
</dialog>
<button onclick="document.getElementById('myDialog').showModal()">Ouvrir</button>
APIs HTML5
HTML5 introduit de puissantes APIs JavaScript pour créer des applications web modernes.
const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
ctx.fillStyle = 'blue';
ctx.fillRect(10, 10, 150, 80);
navigator.geolocation.getCurrentPosition(
(position) => {
console.log(position.coords.latitude);
console.log(position.coords.longitude);
}
);
// Sauvegarder
localStorage.setItem('nom', 'Jean');
// Récupérer
const nom = localStorage.getItem('nom');
// Supprimer
localStorage.removeItem('nom');
<div draggable="true" ondragstart="drag(event)">
Glissez-moi !
</div>
const fileInput = document.querySelector('input[type="file"]');
fileInput.addEventListener('change', (e) => {
const file = e.target.files[0];
console.log(file.name, file.size);
});
// Ajouter une entrée
history.pushState({page: 1}, "titre", "?page=1");
// Naviguer
history.back();
history.forward();
Accessibilité (ARIA)
L'accessibilité web garantit que votre site est utilisable par tous, y compris les personnes en situation de handicap.
- Rend votre site utilisable par les lecteurs d'écran
- Améliore le SEO
- Obligation légale dans de nombreux pays
- Meilleure expérience pour tous les utilisateurs
Bonnes Pratiques d'Accessibilité
alt descriptif.
<!-- Bon -->
<img src="logo.png" alt="Logo de l'entreprise XYZ">
<!-- Mauvais -->
<img src="logo.png" alt="">
<label>.
<label for="email">Adresse e-mail :</label>
<input type="email" id="email" name="email">
<div role="navigation">
<!-- Menu de navigation -->
</div>
<button aria-label="Fermer" onclick="closeModal()">
×
</button>
<!-- Bon -->
<h1>Titre Principal</h1>
<h2>Sous-titre</h2>
<h3>Sous-sous-titre</h3>
<!-- Mauvais : sauter des niveaux -->
<h1>Titre Principal</h1>
<h3>Sous-titre</h3>
Bonnes Pratiques HTML5
- Utiliser des balises sémantiques appropriées
- Valider votre HTML avec le validateur W3C
- Toujours inclure l'attribut
altpour les images - Utiliser des titres hiérarchiques (h1-h6)
- Séparer structure (HTML), présentation (CSS) et comportement (JS)
- Optimiser les images pour le web
- Utiliser HTTPS
- Tester sur différents navigateurs
- Utiliser des balises obsolètes (
<font>,<center>) - Utiliser des tableaux pour la mise en page
- Utiliser des balises sémantiques uniquement pour le style
- Oublier la balise
<!DOCTYPE html> - Mettre du CSS inline dans le HTML
- Négliger l'accessibilité
- Utiliser trop de
<div>au lieu de balises sémantiques - Ignorer la validation du code
Séparation des Préoccupations
<h1>Titre</h1>h1 { color: blue; }document.querySelector('h1').onclick = ...Validation du Code
Utilisez le validateur officiel du W3C pour vérifier que votre code HTML est conforme aux standards :
TP N3 : Nouveaux Éléments HTML5 d'Organisation des Contenus
Objectif du TP
Créer un document web avec un modèle minimaliste HTML5 / CSS3 basé sur l'utilisation de nouveaux éléments sémantiques HTML5 d'organisation des contenus.
Consignes
- Utiliser les éléments de section :
<header>,<footer>,<nav>,<section>,<article>,<aside> - Contrôler la disposition avec CSS (propriétés
floatoudisplay: inline-block) - Créer un design en 2 colonnes (contenu principal + aside)
- Ajouter une description de chaque élément HTML5 utilisé
Techniques CSS Interdites
Exemple Visuel
Ressources
Résultats Attendus
- Une page HTML valide avec structure sémantique
- Mise en page CSS en 2 colonnes sans Grid/Flexbox
- Document instructif (tutoriel/fiche pratique)
- Dépôt sur la plateforme et hébergement en ligne