2. HTML5
HTML 5 - règles et sémantique

HTML5 et la structure d'un document
Le doctype HTML5 est la déclaration standard pour les documents web modernes :
<!DOCTYPE html>
Cette déclaration simple remplace les doctypes complexes des versions précédentes (HTML 4.01, XHTML).
Structure minimale d'un document HTML
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Titre significatif du contenu de la page</title>
</head>
<body>
<!-- Contenu de la page -->
</body>
</html>
Éléments essentiels :
<!DOCTYPE html>: déclaration du type de document<html lang="fr">: élément racine avec indication de la langue<meta charset="UTF-8">: encodage du texte (doit être placé dans les 1024 premiers octets)<meta name="viewport">: adaptation aux terminaux mobiles<title>: titre unique pour chaque page
HTML vs XHTML : approche critique
Note importante sur XHTML
XHTML n'est plus recommandé pour les nouveaux projets web modernes. Bien qu'il ait existé historiquement comme alternative à HTML, HTML5 est maintenant le standard à utiliser.
Contexte historique :
- XHTML (eXtensible HyperText Markup Language) était une reformulation de HTML en XML, popularisée dans les années 2000
- Il introduisait une syntaxe stricte et une validation rigoureuse
- Le type MIME pour XHTML est
application/xhtml+xml(vstext/htmlpour HTML)

Pourquoi XHTML n'est plus utilisé :
- HTML5 a intégré les meilleures pratiques de XHTML tout en restant plus tolérant
- Les navigateurs modernes privilégient HTML5
- XHTML nécessite un serveur configuré correctement (type MIME) sinon il est traité comme HTML
- Les erreurs XHTML bloquent complètement l'affichage (boîte d'erreur XML)
Ce qu'on retient des concepts XML/XHTML :
- Les principes de bien-formé (well-formed) : structure correcte, balises fermées, imbrication valide
- L'importance de la validation et de la conformité aux standards
- La syntaxe stricte améliore la qualité du code
Ce qu'on laisse de côté :
- Les spécificités XHTML (doctype XHTML, namespace
xmlns, balises auto-fermantes obligatoires<br />) - Les pratiques obsolètes liées à XHTML 1.0/1.1
- L'utilisation de XHTML pour de nouveaux projets
Les modes de rendu des navigateurs
Les navigateurs modernes utilisent trois modes de rendu différents selon la présence et le type de doctype dans le document HTML. Comprendre ces modes est essentiel pour éviter des bugs de mise en page inattendus.
1. Mode standards (a.k.a. "no-quirks mode")
C'est le mode souhaité et moderne pour tous les sites web actuels.
Caractéristiques :
- Le modèle de boîte CSS se comporte selon les spécifications
- Le positionnement, la taille et la mise en page sont prévisibles
- Les fonctionnalités modernes HTML et CSS fonctionnent correctement
- Conforme aux standards WHATWG HTML et CSS
Déclenché par :
<!DOCTYPE html>
Règle simple à retenir : Toujours commencer chaque document HTML avec <!DOCTYPE html>.
2. Mode quirks (mode de compatibilité)
Ce mode émule le comportement de très anciens navigateurs (notamment IE 5 et Netscape 4).
Caractéristiques :
- Modèle de boîte CSS non standard (la largeur inclut le padding et la bordure)
- Comportement incohérent des marges et de la hauteur de ligne
- Hypothèses de mise en page obsolètes ou incorrectes
- De nombreux "bugs" de navigateurs sont intentionnellement préservés
Déclenché par :
- Absence totale de doctype
- Doctypes très anciens ou mal formés
Exemple (déclenche le mode quirks) :
<html>
<head>
<title>Page sans doctype</title>
</head>
<body>
<!-- Contenu -->
</body>
</html>
Pourquoi ce mode existe encore : Pour éviter de casser des sites web hérités construits avant la stabilisation des standards. Vous ne devriez jamais cibler intentionnellement le mode quirks dans de nouveaux projets.
3. Mode presque standards (a.k.a. "limited quirks mode")
Un mode de compromis historique.
Caractéristiques :
- Principalement conforme aux standards
- Quelques quirks légacy subsistent (historiquement liés à la taille des cellules de tableau et des images)
- Existe pour supporter d'anciens doctypes transitionnels
Déclenché par :
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
En pratique : Très rare aujourd'hui. Vous ne rencontrerez presque jamais ce mode intentionnellement.
Tableau récapitulatif
| Mode | Objectif | Devriez-vous l'utiliser ? |
|---|---|---|
| Mode standards | Rendu moderne conforme aux spécifications | Oui, toujours |
| Mode quirks | Émule les navigateurs pré-standards | Non |
| Mode presque standards | Compatibilité arrière | Non (historique uniquement) |
Pourquoi c'est important pédagogiquement
Pour les étudiants, le point clé à retenir est :
Le doctype n'est plus seulement une question de validation ; c'est un choix du comportement du moteur de rendu du navigateur.
Règle simple à enseigner et à faire respecter :
Toujours commencer chaque document HTML avec :
<!DOCTYPE html>
Cette seule ligne élimine toute une catégorie de bugs de mise en page.
Exemples pratiques
Pour voir les différences visuelles entre ces modes, téléchargez et testez les fichiers d'exemple :
📦 Télécharger les exemples (ZIP)
Le fichier ZIP contient :
mode-standards.html: Document avec doctype HTML5 (mode standards)mode-quirks.html: Document sans doctype (mode quirks)mode-presque-standards.html: Document avec doctype HTML 4.01 Transitional (mode presque standards)README.md: Instructions d'utilisation
Ces exemples démontrent les différences visuelles, notamment au niveau du modèle de boîte CSS, des marges et du positionnement. Ouvrez chaque fichier dans votre navigateur pour comparer les résultats.
Détecter le mode de rendu dans les outils de développement
Dans les outils de développement du navigateur (F12), vous pouvez vérifier le mode de rendu actuel :
- Ouvrir la console
- Exécuter :
document.compatMode - Résultats possibles :
"CSS1Compat": Mode standards"BackCompat": Mode quirks
HTML et XML : principes de base
Règles d'écriture pour la conformité
Les règles d'écriture suivantes sont obligatoires dans les documents XML mais les analyseurs syntaxiques sont plus tolérants pour les documents HTML. Cependant, les respecter améliore la qualité et la maintenabilité du code :
- Une seule balise racine :
<html>est l'unique élément racine, lequel ne contient que 2 enfants : le<head>et le<body> - Toutes les balises avec du contenu sont refermées
- Les balises vides comme
br,hr,meta,linkouscriptpeuvent être auto-fermées (<br />) mais en HTML5, la syntaxe<br>est préférée - Les balises et les attributs sont écrits en minuscules
- Les balises sont refermées dans l'ordre inverse de leur ouverture
Exemple de code mal formé :
<p>une ligne <br /> une autre ligne avec un mot en <i>italique </p></i>
Problèmes identifiés :
- Balise
<i>fermée après la balise<p>(mauvaise imbrication) - Balise auto-fermante
<br />(acceptable mais<br>est préféré en HTML5)
Code corrigé :
<p>
une ligne <br />
une autre ligne avec un mot en <i>italique</i>
</p>
Exemple d'imbrication incorrecte :
<!-- MAUVAIS -->
<p>Un mot avec <strong> renforcement (gras) </p> </strong>
<!-- BON -->
<p>Un mot avec <strong> renforcement (gras) </strong></p>
Visionner les explications
Vidéo : c02c_regles-d-ecriture_html (3'39")
Vidéo : c02d_regles-d-ecriture_Xhtml (4'13")
Règles d'écriture pour la validité
La validité se définit par rapport à une "grammaire" du HTML qui est définie dans le Doctype (ou type de document). Cette grammaire agit comme LA référence des validateurs.
Il s'agit d'un genre de dictionnaire des éléments et des attributs HTML et de l'ensemble des règles qui précisent pour chacun de ces éléments :
- Quels sont les attributs autorisés
- Les éléments enfants autorisés
- Leur ordre d'apparition
- etc.
Exemples de Doctype (historiques) :
http://www.w3.org/TR/html4/loose.dtd(HTML 4.01)http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd(XHTML 1.0)
Doctype HTML5 (moderne) :
<!DOCTYPE html>
Nomenclature et conventions
- Encodage : UTF-8 pour tous les fichiers
- Noms de fichiers : minuscules, tirets pour séparer les mots (ex:
ma-page.html) - Noms d'éléments et attributs : minuscules
- Guillemets : doubles pour les attributs HTML (
class="fruit"), simples pour le JavaScript (alert('message');)
Sémantique structurelle HTML5
Utiliser les éléments HTML5 sémantiques plutôt que des <div> génériques :
<header role="banner">: en-tête global<main role="main">: contenu principal<footer role="contentinfo">: pied de page<nav role="navigation">: navigation principale<article>: article autonome<section>: section thématique<aside role="complementary">: contenu complémentaire
Hiérarchie des titres
h1est unique et décrit le thème principal de la page- Les titres (
h1àh6) doivent être utilisés dans l'ordre et de manière pertinente - Ne pas sauter de niveaux (ex:
h1suivi deh3sansh2)
Sémantique des éléments
Utiliser les éléments HTML pour leur fonction, pas pour leur apparence :
<!-- Citation -->
<q>Car il y a toujours de la lumière...</q>
<!-- Date -->
<time datetime="2021-01-20">Jour de l'investiture</time>
<!-- Abréviation -->
<abbr title="HyperText Mark-Up Language">HTML (HyperText Mark-Up Language)</abbr>