Objectifs d’apprentissage
- écrire la structure minimale d’un document HTML ;
- choisir les éléments selon leur sens plutôt que leur apparence ;
- créer liens, images, listes et formulaires accessibles ;
- comprendre le rôle du
head, des métadonnées et de l’attributlang; - éviter les erreurs qui rendent une page difficile à utiliser ou à maintenir.
1. La structure minimale
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Mon projet</title>
</head>
<body>
<h1>Titre principal</h1>
<p>Mon premier contenu.</p>
</body>
</html><!doctype html> indique un document HTML moderne. L’attribut lang="fr" aide notamment les lecteurs d’écran à prononcer correctement le contenu. Le head contient les métadonnées ; le body, le contenu affiché.
2. La sémantique : le bon élément pour le bon rôle
Un élément HTML doit décrire ce que représente le contenu. Un bouton doit être un <button>, un lien une balise <a>, un titre un élément <h1> à <h6>. Cette discipline apporte gratuitement une partie du comportement clavier, de l’accessibilité et de la compréhension machine.
<header>
En-tête d’une page ou d’une section.
<nav>
Groupe principal de liens de navigation.
<main>
Contenu principal unique de la page.
<article> / <section>
Contenu autonome ou regroupement thématique.
3. Titres, paragraphes et hiérarchie
Les titres structurent le document. Le plus important n’est pas leur taille visuelle mais leur relation logique. Utilise généralement un h1 principal puis des h2 pour les grandes sections, et descends de niveau lorsque le contenu est réellement imbriqué.
h3 parce qu’il « a la bonne taille ». La taille appartient au CSS ; le niveau du titre appartient à la structure.4. Liens et images
Un bon texte de lien doit annoncer la destination : « Lire le guide CSS » est plus utile que « cliquez ici ». Pour les images, l’attribut alt décrit la fonction ou l’information portée par l’image.
<a href="/cours/css.html">Lire le cours CSS</a>
<img src="diagramme.png" alt="Schéma des couches d’une application web">Une image purement décorative peut avoir alt="" afin de ne pas ajouter du bruit aux technologies d’assistance.
5. Listes et tableaux
Utilise <ul> pour une liste sans ordre, <ol> lorsqu’il existe une séquence, et les éléments de tableau uniquement pour de vraies données tabulaires.
<table>
<caption>Résultats</caption>
<thead>
<tr><th scope="col">Nom</th><th scope="col">Score</th></tr>
</thead>
<tbody>...</tbody>
</table>6. Formulaires accessibles
Chaque champ doit avoir un libellé compréhensible. Le name identifie la donnée envoyée, le type décrit le type d’entrée, et les attributs natifs comme required, minlength ou autocomplete peuvent améliorer l’expérience.
<label for="email">Adresse e-mail</label>
<input id="email" name="email" type="email" autocomplete="email" required>Un placeholder ne doit pas remplacer un vrai label : il disparaît pendant la saisie et peut être difficile à interpréter.
7. Le <head> : titre, viewport et métadonnées
Le titre de page doit être spécifique. La métadonnée viewport évite un rendu desktop réduit sur mobile. Une description peut aider à présenter la page dans certains moteurs de recherche, même si elle ne garantit pas l’extrait affiché.
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Cours HTML pour débuter.">8. Accessibilité : commencer par le HTML natif
- conserver un ordre de source logique ;
- rendre les actions utilisables au clavier ;
- utiliser de vrais boutons et liens ;
- associer les labels aux champs ;
- écrire des textes alternatifs pertinents ;
- ne pas dépendre uniquement de la couleur pour transmettre une information.
MDN insiste sur ce principe : un HTML sémantique apporte déjà de nombreux mécanismes d’accessibilité intégrés au navigateur.
9. Déboguer son HTML
Lis d’abord la structure dans les outils développeur du navigateur. Vérifie les balises mal imbriquées, les liens cassés, les images sans alternative et l’ordre des titres. Les validateurs HTML peuvent ensuite compléter cette vérification.
Change le contenu, vois le résultat
Modifie le titre puis applique-le à l’aperçu.
Bonjour, explorateur du web !
Le HTML donne une structure au contenu.
Exercice — crée une page de profil
Construis uniquement en HTML une page contenant : un en-tête, une navigation, un main, une section « À propos », une liste de compétences, une image avec texte alternatif, un lien vers un projet et un formulaire de contact avec labels. Ne pense pas encore au CSS.
Créer une page accessible sans dépendance
HTML décrit des rôles et une hiérarchie. Un titre principal <h1> indique le sujet, <main> délimite le contenu principal et une balise <button> correspond à une action. Un lien sert à naviguer ; un formulaire doit associer chaque champ à un label visible. Commencer par le HTML natif réduit la quantité de JavaScript nécessaire.
Pratique pas à pas
- Crée un fichier index.html dans un dossier de pratique, puis copie la structure ci-dessous.
- Ouvre le fichier dans un navigateur ; vérifie le titre de l’onglet, l’ordre des titres et le lien.
- Parcours la page uniquement au clavier avec Tab et Entrée. Ajoute ensuite une image avec un alt utile et un vrai formulaire de contact avec un label.
Exemple à essayer
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Mon premier portfolio</title>
</head>
<body>
<header><a href="#contenu">Aller au contenu</a></header>
<main id="contenu">
<h1>Mes projets</h1>
<p>Je découvre le développement web.</p>
<a href="projets.html">Voir mes projets</a>
</main>
</body>
</html>
Ce que tu dois observer : La page reste compréhensible sans feuille CSS. Le navigateur affiche un titre, un paragraphe et un lien avec un comportement de clavier natif.
Erreur fréquente : Utiliser des div partout ou employer un lien vide pour simuler un bouton : cela nuit à la navigation et à l’accessibilité.
Vérifie que tu as compris
Quel élément sert à l’action « Envoyer » dans un formulaire ?
Un bouton de type submit dans le formulaire : <button type="submit">Envoyer</button>.
Pourquoi faut-il utiliser des labels et du texte alternatif adaptés ?
Ils rendent les contrôles et images compréhensibles, notamment pour les lecteurs d’écran.
Ressources de référence
W3Schools — HTML TutorialW3Schools — AccessibilitéMDN — Votre premier site WebUne fois l’atelier réalisé et les questions comprises, valide cette étape dans ton parcours.
À retenir
- HTML décrit la structure et le sens.
- La sémantique améliore accessibilité, maintenance et compréhension machine.
- Le CSS ne doit pas corriger une structure HTML mal choisie.
- Un formulaire accessible commence par des labels et des contrôles natifs adaptés.
Teste ta compréhension
Pourquoi préférer un vrai <button> à un <div> cliquable ?
