1. Structurer un document HTML complet

Une page web bien construite ne se résume pas à un empilement de balises quelconques. HTML5 propose des balises sémantiques : chacune indique clairement le rôle du bloc qu'elle contient (en-tête, navigation, contenu principal, pied de page...). Ce découpage rend le code plus lisible, plus facile à styliser en CSS, et plus accessible aux lecteurs d'écran et aux moteurs de recherche.

HTML<!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <title>Ma page</title> <link rel="stylesheet" href="style.css"> </head> <body> <header> <h1>Mon site</h1> <nav> <ul> <li><a href="#accueil">Accueil</a></li> <li><a href="#a-propos">À propos</a></li> <li><a href="#contact">Contact</a></li> </ul> </nav> </header> <main> <section id="accueil"> <h2>Bienvenue</h2> <p>Voici la section principale de la page.</p> </section> <article> <h2>Un article</h2> <p>Contenu autonome, qui aurait un sens même isolé.</p> </article> </main> <footer> <p>&copy; 2026 Mon site — tous droits réservés</p> </footer> <script src="script.js"></script> </body> </html>

Les balises sémantiques essentielles

BaliseRôle
<header>En-tête de page (ou d'une section) : logo, titre, navigation
<nav>Bloc regroupant les liens de navigation du site
<main>Contenu principal et unique de la page (un seul par page)
<section>Section thématique regroupant un ensemble de contenus liés
<article>Contenu autonome, qui aurait un sens seul (article, actualité, fiche)
<aside>Contenu complémentaire, en marge du sujet principal (barre latérale)
<footer>Pied de page : contacts, copyright, mentions légales

2. Listes, tableaux, formulaires et menus

Au-delà de la structure générale, HTML fournit des balises spécialisées pour organiser des contenus précis : énumérer des éléments, présenter des données en grille, ou collecter des informations saisies par l'utilisateur.

Les listes

Une liste non ordonnée (à puces) utilise <ul> ; une liste ordonnée (numérotée) utilise <ol>. Dans les deux cas, chaque élément est un <li>.

HTML<!-- Liste non ordonnée --> <ul> <li>HTML</li> <li>CSS</li> <li>JavaScript</li> </ul> <!-- Liste ordonnée --> <ol> <li>Écrire la structure HTML</li> <li>Habiller la page avec CSS</li> <li>Ajouter l'interactivité avec JavaScript</li> </ol>

Les tableaux

Un tableau s'écrit avec <table>, ses lignes avec <tr>, ses cellules d'en-tête avec <th> et ses cellules ordinaires avec <td>.

HTML<table> <thead> <tr> <th>Langage</th> <th>Rôle</th> </tr> </thead> <tbody> <tr> <td>HTML</td> <td>Structure</td> </tr> <tr> <td>CSS</td> <td>Mise en page</td> </tr> </tbody> </table>

Les formulaires

Un formulaire <form> contient des champs de saisie <input> (texte, email, nombre...) et des listes déroulantes <select>. Chaque champ doit être associé à un <label> pour rester accessible.

HTML<form action="/envoyer" method="post"> <label for="nom">Nom :</label> <input type="text" id="nom" name="nom" required> <label for="email">Email :</label> <input type="email" id="email" name="email" required> <label for="niveau">Niveau :</label> <select id="niveau" name="niveau"> <option value="seconde">Seconde</option> <option value="premiere" selected>Première</option> <option value="terminale">Terminale</option> </select> <button type="submit">Valider</button> </form>

Un menu de navigation

Un menu se construit tout simplement avec un <nav> contenant une liste <ul>/<li> de liens : c'est la combinaison la plus utilisée sur le web.

HTML<nav class="menu"> <ul> <li><a href="index.html">Accueil</a></li> <li><a href="cours.html">Cours</a></li> <li><a href="exercices.html">Exercices</a></li> <li><a href="contact.html">Contact</a></li> </ul> </nav>

3. CSS pour la mise en page

Une fois le contenu structuré en HTML, CSS permet de l'agencer visuellement : espacements, bordures, couleurs de fond. Tout repose sur un principe simple à retenir : le modèle de boîte.

Définition
Le modèle de boîte (box model) considère chaque élément HTML comme une boîte composée de quatre couches, de l'intérieur vers l'extérieur : le contenu (texte, image...), le padding (espace intérieur, entre le contenu et la bordure), la border (la bordure elle-même) et le margin (espace extérieur, entre la boîte et ses voisines).
CSS.carte { margin: 20px; /* espace EXTÉRIEUR, autour de la boîte */ padding: 16px; /* espace INTÉRIEUR, entre le bord et le contenu */ border: 2px solid #4338CA; /* bordure autour de la boîte */ background-color: #EEF2FF; /* couleur de fond */ border-radius: 12px; /* coins arrondis */ }
Exemple — mise en page d'une carte
Avec ces quelques propriétés, un simple <div> devient une carte visuelle avec bordure arrondie, fond coloré et espacement propre autour du texte :
HTML<div class="carte"> <h3>Chapitre 6</h3> <p>Maîtrise experte de la programmation web</p> </div>
Avec la règle CSS .carte définie ci-dessus, ce bloc apparaît encadré, arrondi, sur fond bleu clair, avec de l'air tout autour du texte et entre les cartes voisines.

4. Qu'est-ce que JavaScript ?

Définition
JavaScript est un langage de programmation qui s'exécute directement dans le navigateur de l'internaute. Contrairement à HTML et CSS, qui décrivent un état figé de la page, JavaScript permet de la rendre interactive et dynamique : réagir à un clic, valider un formulaire avant l'envoi, modifier un texte affiché, faire apparaître ou disparaître un élément — tout cela sans recharger la page.
Exemple — trois langages, trois rôles
  • HTML : le contenu — le texte, les images, la structure des éléments
  • CSS : le style — les couleurs, les tailles, les espacements, la mise en page
  • JavaScript : le comportement — ce qui se passe quand on clique, on tape, on survole un élément
Sur une même page, les trois langages travaillent ensemble : HTML pose les fondations, CSS habille la maison, JavaScript y installe l'électricité et les interrupteurs.

5. Premiers scripts JavaScript

Un script JavaScript s'écrit entre des balises <script></script>, le plus souvent juste avant la fermeture de </body>. Voici trois actions de base à maîtriser.

Afficher une alerte

JavaScript<script> alert("Bienvenue sur mon site !"); </script>

Réagir à un clic

La méthode addEventListener("click", ...) permet d'attacher une fonction à un élément : cette fonction s'exécute à chaque clic sur cet élément.

HTML + JavaScript<button id="mon-bouton">Clique-moi</button> <script> const bouton = document.getElementById("mon-bouton"); bouton.addEventListener("click", function() { alert("Tu as cliqué sur le bouton !"); }); </script>

Modifier le contenu d'un élément

document.getElementById(...) permet de récupérer un élément par son identifiant ; sa propriété textContent (ou innerHTML pour insérer du HTML) permet ensuite de changer son contenu.

HTML + JavaScript<h1 id="titre">Titre original</h1> <button id="changer">Changer le titre</button> <script> document.getElementById("changer").addEventListener("click", function() { document.getElementById("titre").textContent = "Titre modifié par JavaScript !"; }); </script>

🧠 À retenir

  • Un document HTML complet s'organise avec les balises sémantiques <header>, <nav>, <main>, <section>, <article>, <aside> et <footer>.
  • Les listes (<ul>, <ol>), les tableaux (<table>) et les formulaires (<form>, <input>, <select>) structurent des contenus précis.
  • Un menu de navigation se construit avec <nav> contenant une liste <ul>/<li> de liens.
  • Le modèle de boîte CSS s'organise en quatre couches : contenu, padding, border, margin.
  • Les propriétés margin, padding, border et background-color permettent de mettre en page n'importe quel élément.
  • JavaScript est un langage qui s'exécute dans le navigateur pour rendre une page interactive et dynamique.
  • HTML = contenu, CSS = style, JavaScript = comportement : trois langages complémentaires et indissociables.
1

Un formulaire de contact simple

Facile

Écris le code HTML d'un formulaire simple demandant à l'utilisateur son nom et son adresse email, avec un bouton permettant de valider le formulaire. Chaque champ doit être associé à une étiquette (<label>).

Correction
HTML<form action="/envoyer" method="post"> <label for="nom">Nom :</label> <input type="text" id="nom" name="nom" required> <label for="email">Email :</label> <input type="email" id="email" name="email" required> <button type="submit">Valider</button> </form>

L'attribut required rend chaque champ obligatoire : le formulaire ne peut pas être envoyé s'ils sont vides.

2

Styliser une carte avec CSS

Facile

On dispose du bloc HTML suivant :

HTML<div class="carte"> <h3>Bienvenue</h3> <p>Ceci est une carte d'information.</p> </div>

Écris la règle CSS .carte qui donne à ce bloc : une bordure arrondie, un fond coloré, et une marge extérieure pour l'espacer des autres éléments de la page.

Correction
CSS.carte { margin: 24px; padding: 18px; border: 2px solid #4338CA; border-radius: 14px; background-color: #EEF2FF; }

border-radius arrondit les coins, background-color colore le fond, et margin crée l'espace extérieur qui sépare la carte du reste de la page. padding évite que le texte ne touche les bords.

3

Une alerte au clic

Moyen

On dispose du bouton HTML suivant :

HTML<button id="btn-info">En savoir plus</button>

Écris le script JavaScript qui affiche une boîte de dialogue (alert()) contenant le message « Ce chapitre porte sur HTML, CSS et JavaScript ! » lorsque l'utilisateur clique sur ce bouton.

Correction
JavaScript<script> const btnInfo = document.getElementById("btn-info"); btnInfo.addEventListener("click", function() { alert("Ce chapitre porte sur HTML, CSS et JavaScript !"); }); </script>

On récupère d'abord le bouton avec document.getElementById("btn-info"), puis on lui attache un écouteur d'événement de type "click". La fonction fournie en second argument s'exécute à chaque clic.

4

Mini-projet — un titre qui change au clic

Difficile

Construis une petite page contenant un titre <h1 id="titre"> affichant « Chapitre 6 » et un bouton <button id="basculer"> affichant « Changer le titre ».

Écris ensuite le script JavaScript qui, à chaque clic sur le bouton, fait basculer le texte du titre entre « Chapitre 6 » et « Maîtrise experte de la programmation web » (le titre doit revenir au premier texte si on clique une deuxième fois, et ainsi de suite).

Correction
HTML<h1 id="titre">Chapitre 6</h1> <button id="basculer">Changer le titre</button>
JavaScript<script> const titre = document.getElementById("titre"); const bouton = document.getElementById("basculer"); bouton.addEventListener("click", function() { if (titre.textContent === "Chapitre 6") { titre.textContent = "Maîtrise experte de la programmation web"; } else { titre.textContent = "Chapitre 6"; } }); </script>

À chaque clic, on teste le texte actuel du titre avec une condition if : s'il vaut « Chapitre 6 », on le remplace par le second texte, sinon on revient au premier. C'est ainsi qu'on obtient un basculement (« toggle ») entre deux états.

QCM

10 questions · Correction immédiate

0Score
0/10Répondues
Question 1/10

Quelle balise HTML5 sert à regrouper les liens de navigation d'un site ?

Question 2/10

Quelle balise doit contenir le contenu principal et unique d'une page (un seul par page) ?

Question 3/10

Quelle est la différence entre <ul> et <ol> ?

Question 4/10

Dans un tableau HTML, quelle balise représente une ligne ?

Question 5/10

Dans <input type="email" name="email" required>, à quoi sert l'attribut required ?

Question 6/10

Quelle affirmation décrit correctement la différence entre margin et padding ?

Question 7/10

Que produit la règle CSS suivante : border-radius: 12px; ?

Question 8/10

Quel est le rôle principal de JavaScript sur une page web ?

Question 9/10

Que se passe-t-il au clic sur ce bouton ? document.getElementById("btn").addEventListener("click", function() { alert("Bonjour !"); });

Question 10/10

Que fait cette instruction ? document.getElementById("titre").textContent = "Nouveau titre";