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.

Pourquoi "Sémantique" ? Le mot sémantique signifie « qui concerne le sens, la signification ». En ajoutant des balises sémantiques HTML à vos pages, vous fournissez des informations supplémentaires qui définissent les rôles et l'importance relative des différentes parties de votre page.

Avantages Principaux du HTML5

Sémantique Améliorée
De nouvelles balises comme <header>, <nav>, <article> rendent la structure de la page plus claire et significative.
Support Multimédia
Lecture de vidéos et audio directement avec <video> et <audio> sans plugins externes comme Flash.
Formulaires Avancés
Nouveaux types d'input (email, date, range), attributs (required, pattern) et meilleures capacités de validation.
Canvas et SVG
Outils puissants pour dessiner des graphiques 2D et 3D directement dans le navigateur.
Stockage Local
Web Storage (localStorage/sessionStorage) pour créer des applications hors ligne.
SEO Optimisé
Les balises sémantiques aident les moteurs de recherche à mieux comprendre et indexer votre contenu.

Pourquoi Utiliser des Balises Sémantiques ?

Accessibilité Les balises sémantiques permettent aux lecteurs d'écran de mieux comprendre votre contenu, rendant votre site accessible aux utilisateurs aveugles ou malvoyants.
SEO (Référencement) Les balises sémantiques indiquent aux robots des moteurs de recherche (comme Googlebot) le rôle du contenu, augmentant vos chances d'apparaître dans les résultats de recherche pour des mots-clés pertinents.
Maintenabilité du Code Un code sémantique est plus facile à lire et à comprendre pour les développeurs, facilitant la maintenance et les évolutions futures.

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

<!DOCTYPE html>
Obligatoire
Déclare que le document est un document HTML5. Cette déclaration doit être la toute première ligne du fichier.
<html>
Élément Racine
L'élément racine qui contient tout le contenu HTML. L'attribut lang spécifie la langue du document (ex: lang="fr" pour le français).
<head>
Métadonnées
Contient les métadonnées du document : titre, encodage, liens vers CSS et JavaScript, etc.
<meta charset="UTF-8">
Encodage
Définit l'encodage des caractères. UTF-8 est recommandé car il supporte tous les caractères internationaux.
<meta name="viewport">
Responsive
Essentiel pour le design responsive. Contrôle comment la page est affichée sur les appareils mobiles.
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>
Obligatoire
Définit le titre du document affiché dans l'onglet du navigateur et utilisé par les moteurs de recherche.
<body>
Contenu
Contient tout le contenu visible de la page web.

É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.

Important Contrairement aux éléments <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

Exemple Visuel
Exemple de structure 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

<header>
Sémantique HTML5
Rôle : Définit l'en-tête d'une page ou d'une section.
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>
<nav>
Sémantique HTML5
Rôle : Contient les liens de navigation principaux.
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>
<main>
Sémantique HTML5
Rôle : Contient le contenu principal unique de la page.
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>
<article>
Sémantique HTML5
Rôle : Représente un contenu autonome et réutilisable.
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>
<section>
Sémantique HTML5
Rôle : Regroupe du contenu thématiquement lié.
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>
<aside>
Sémantique HTML5
Rôle : Contenu tangentiel ou complémentaire.
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>
<footer>
Sémantique HTML5
Rôle : Pied de page d'une page ou d'une section.
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.

<p>
Texte
Rôle : Définit un paragraphe de texte.
Usage : L'élément le plus courant pour le contenu textuel.
<p>Ceci est un paragraphe de texte. Il peut contenir plusieurs phrases.</p>
<h1> à <h6>
Titres
Rôle : Définissent les titres de différents niveaux.
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>
<ul> et <ol>
Listes
<ul> : Liste non ordonnée (à puces)
<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>
<dl>, <dt>, <dd>
Liste de Définitions
<dl> : Liste de définitions
<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>
<blockquote>
Citation
Rôle : Citation longue provenant d'une autre source.
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>
<pre>
Texte Préformaté
Rôle : Préserve les espaces et les sauts de ligne.
Usage : Code source, poésie, ASCII art.
<pre>
function hello() {
    console.log("Bonjour!");
}
</pre>
<hr>
Séparateur
Rôle : Séparation thématique entre paragraphes.
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.

Attention N'utilisez pas ces balises uniquement pour leur apparence visuelle. Utilisez CSS pour la mise en forme.
<a>
Lien
Rôle : Crée un hyperlien vers une autre page ou ressource.
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>
<strong>
Sémantique
Rôle : Indique une forte importance.
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>
<em>
Sémantique
Rôle : Met l'accent sur un texte.
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>
<mark>
HTML5
Rôle : Marque ou surligne du texte pour référence.
Usage : Résultats de recherche, passages importants.
<p>Recherche : <mark>HTML5</mark> trouvé dans le document.</p>
<code>
Code
Rôle : Représente un fragment de code informatique.
Rendu : Police monospace.
<p>Utilisez la fonction <code>console.log()</code> pour déboguer.</p>
<time>
HTML5 Sémantique
Rôle : Représente une date ou une heure.
Attribut : datetime pour le format machine-readable.
<p>Publié le <time datetime="2025-10-23">23 octobre 2025</time></p>
<abbr>
Sémantique
Rôle : Définit une abréviation ou un acronyme.
Attribut : title pour la forme complète.
<p><abbr title="World Wide Web">WWW</abbr> a été inventé en 1989.</p>
<sub> et <sup>
Indices
<sub> : Indice (subscript) - H₂O
<sup> : Exposant (superscript) - E=mc²
<p>Formule chimique : H<sub>2</sub>O</p>
<p>Équation : E=mc<sup>2</sup></p>
<span>
Neutre
Rôle : Conteneur inline générique sans signification sémantique.
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.

<img>
Image
Rôle : Intègre une image dans le document.
Attributs essentiels : src (source), alt (texte alternatif pour l'accessibilité)
<img src="photo.jpg" alt="Description de l'image" width="500" height="300">
<video>
HTML5
Rôle : Intègre une vidéo sans plugin.
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>
<audio>
HTML5
Rôle : Intègre un fichier audio.
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>
<picture>
HTML5
Rôle : Permet le responsive design pour les images.
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>
<svg>
HTML5
Rôle : Graphiques vectoriels évolutifs.
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>
<canvas>
HTML5
Rôle : Zone de dessin pour graphiques dynamiques via JavaScript.
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

required
HTML5
Rend le champ obligatoire.
<input type="text" required>
pattern
HTML5
Validation par expression régulière.
<input type="text" pattern="[A-Za-z]{3,}" title="Au moins 3 lettres">
placeholder
HTML5
Texte d'aide affiché dans le champ vide.
<input type="email" placeholder="votre@email.com">
min / max
HTML5
Valeurs minimale et maximale pour les nombres et dates.
<input type="number" min="1" max="10">
<input type="date" min="2025-01-01" max="2025-12-31">
autofocus
HTML5
Focus automatique au chargement de la page.
<input type="text" autofocus>

Tableaux

Les tableaux organisent les données en lignes et colonnes.

Important N'utilisez jamais les tableaux pour la mise en page ! Ils sont réservés aux données tabulaires.

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>
<table>
Conteneur principal du tableau.
<caption>
Titre ou légende du tableau.
<thead>
Groupe l'en-tête du tableau.
<tbody>
Groupe le corps du tableau (données principales).
<tfoot>
Groupe le pied du tableau (totaux, résumés).
<tr>
Ligne du tableau (table row).
<th>
Cellule d'en-tête (table header).
<td>
Cellule de données (table data).

Contenu Intégré

<iframe>
Rôle : Intègre un document HTML dans un autre.
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>
<embed>
HTML5
Rôle : Intègre du contenu externe (plugins).
Usage : PDF, Flash (obsolète), applications.
<embed src="document.pdf" type="application/pdf" width="600" height="400">

Éléments Interactifs

<details> et <summary>
HTML5
Rôle : Crée un widget d'affichage/masquage de contenu.
Avantage : Interactif sans JavaScript.
<details>
    <summary>Cliquez pour plus d'informations</summary>
    <p>Voici le contenu caché qui s'affiche au clic.</p>
</details>
Démonstration
Cliquez pour plus d'informations

Voici le contenu caché qui s'affiche au clic. C'est un élément HTML5 natif !

<dialog>
HTML5
Rôle : Boîte de dialogue ou fenêtre modale.
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.

Canvas API
HTML5
Dessiner des graphiques 2D dynamiques avec JavaScript.
const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
ctx.fillStyle = 'blue';
ctx.fillRect(10, 10, 150, 80);
Geolocation API
HTML5
Obtenir la position géographique de l'utilisateur.
navigator.geolocation.getCurrentPosition(
    (position) => {
        console.log(position.coords.latitude);
        console.log(position.coords.longitude);
    }
);
Web Storage API
HTML5
Stocker des données localement dans le navigateur (localStorage, sessionStorage).
// Sauvegarder
localStorage.setItem('nom', 'Jean');

// Récupérer
const nom = localStorage.getItem('nom');

// Supprimer
localStorage.removeItem('nom');
Drag and Drop API
HTML5
Permettre le glisser-déposer d'éléments.
<div draggable="true" ondragstart="drag(event)">
    Glissez-moi !
</div>
File API
HTML5
Lire et manipuler des fichiers locaux.
const fileInput = document.querySelector('input[type="file"]');
fileInput.addEventListener('change', (e) => {
    const file = e.target.files[0];
    console.log(file.name, file.size);
});
History API
HTML5
Manipuler l'historique du navigateur.
// 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.

Pourquoi l'accessibilité est importante
  • 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é

Texte Alternatif pour les Images
Toujours fournir un attribut alt descriptif.
<!-- Bon -->
<img src="logo.png" alt="Logo de l'entreprise XYZ">

<!-- Mauvais -->
<img src="logo.png" alt="">
Labels pour les Formulaires
Associer chaque champ de formulaire avec un <label>.
<label for="email">Adresse e-mail :</label>
<input type="email" id="email" name="email">
Rôles ARIA
Utiliser les attributs ARIA pour clarifier le rôle des éléments personnalisés.
<div role="navigation">
    <!-- Menu de navigation -->
</div>

<button aria-label="Fermer" onclick="closeModal()">
    ×
</button>
Hiérarchie des Titres
Respecter l'ordre logique des titres (h1 → h2 → h3).
<!-- 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

À FAIRE
  • Utiliser des balises sémantiques appropriées
  • Valider votre HTML avec le validateur W3C
  • Toujours inclure l'attribut alt pour 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
À ÉVITER
  • 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

Langage Rôle Exemple HTML Structure et contenu <h1>Titre</h1> CSS Présentation et style h1 { color: blue; } JavaScript Comportement et interactivité document.querySelector('h1').onclick = ...

Validation du Code

Validateur W3C

Utilisez le validateur officiel du W3C pour vérifier que votre code HTML est conforme aux standards :

https://validator.w3.org/

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

Techniques CSS Interdites

Attention : N'utilisez pas CSS Grid ni Flexbox pour ce TP.

Exemple Visuel

Exemple de structure HTML5 pour le TP

Ressources

Résultats Attendus

  1. Une page HTML valide avec structure sémantique
  2. Mise en page CSS en 2 colonnes sans Grid/Flexbox
  3. Document instructif (tutoriel/fiche pratique)
  4. Dépôt sur la plateforme et hébergement en ligne