TP1re année17 livrablesQuiz corrigé
HTML : ta première page web
Tous les sites du monde sont écrits dans la même langue de base : HTML. Aujourd'hui, tu écris ta première page — à la main, balise par balise — et tu la vois s'afficher dans le navigateur.
Par Josselyn C., prof de BTS SIO. Publié le , mis à jour le .
- Objectif
- comprendre HTML, écrire une page (titres, texte, listes, liens, images) et l'afficher
- On manipule
- un éditeur de texte (VS Code) + un navigateur, sur ton poste
- Pré-requis
- aucun. On part de « c'est quoi une page web ? »
- Pour qui
- SLAM et SISR, 1re année
- Durée
- environ 4 h
Compétences : C1.3 Développer la présence en ligne de l'organisation, C2.1 Concevoir et développer une solution applicative, C3.5 Assurer la cybersécurité d'une solution applicative
Rien à installer de spécial : un éditeur de texte et un navigateur suffisent.
Avant de commencer
Pourquoi commencer par HTML
Quand tu ouvres un site, ton navigateur reçoit un fichier HTML et l'affiche. C'est le squelette de toute page web : le texte, les titres, les images, les liens. Avant les jolis designs (CSS, prochaine séance) et l'interactivité (JavaScript), il y a toujours HTML. C'est la première brique du métier de développeur — et tu vas la poser toi-même.
Ce que tu sauras faire à la fin
| Élément | Tu sauras… |
|---|---|
| Structure d'une page | écrire le squelette HTML correct, propre et commenté |
| Titres & texte | structurer du contenu (titres, paragraphes, mise en valeur) |
| Listes | créer des listes à puces et numérotées |
| Liens, images & chemins | relier des pages, afficher des images, gérer les dossiers |
| Tableaux & structure | présenter des données et organiser la page (header/main/footer) |
| Une vraie page | assembler une page de présentation complète |
0. C'est quoi une page web ?
Une page web est un simple fichier texte portant l'extension .html. Ce fichier contient le contenu (textes, liens, images) entouré de balises qui disent au navigateur comment l'interpréter. Le navigateur lit le HTML et l'affiche joliment.
| Mot | Définition |
|---|---|
| HTML | le langage qui décrit le contenu et la structure d'une page web (HyperText Markup Language) |
| Balise (tag) | un mot entre chevrons < > qui marque un élément |
| Navigateur | le logiciel qui lit le HTML et l'affiche (Firefox, Chrome, Edge…) |
| Éditeur | le logiciel où l'on écrit le code (VS Code) |
Flag A1
Checkpoint
Avec tes mots : quel est le rôle du fichier HTML, et quel est le rôle du navigateur ?
Rends : ta réponse en 2 phrases.
1. Ton premier fichier HTML
Étape 1 — Créer le fichier
- Ouvre VS Code.
- Menu Fichier → Ouvrir le dossier…, crée un dossier
mon-siteet ouvre-le. - Dans VS Code, clique sur l'icône « Nouveau fichier » et nomme-le
index.html.
Étape 2 — Écrire une première ligne
<h1>Bonjour le web !</h1>
Étape 3 — Voir le résultat (deux façons)
Enregistre d'abord avec Ctrl+S. Ensuite, tu as le choix :
| Méthode | Comment | Quand |
|---|---|---|
| Double-clic | double-clique sur index.html dans l'explorateur de fichiers ; il s'ouvre dans le navigateur | simple, suffisant pour aujourd'hui |
| Live Server (VS Code) | installe l'extension « Live Server », puis clic droit sur le fichier → Open with Live Server | la page se rafraîchit toute seule à chaque Ctrl+S — très confortable |
Flag B1
Production
Crée ton index.html avec un titre <h1> de ton choix et ouvre-le dans le navigateur.
Rends : ton code et le texte affiché.
2. La structure d'une page
Une ligne, c'est un début, mais une vraie page HTML a un squelette standard. Le voici, à recopier et comprendre.
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Ma page</title>
</head>
<body>
<h1>Bonjour le web !</h1>
</body>
</html>
Tout vit dans <html>, qui se divise en deux : <head> (coulisses) et <body> (la scène visible).
Flag B2
Production
Remplace ton fichier par le squelette complet ci-dessus, avec TON titre d'onglet (<title>).
Rends : ton code, et le texte que tu vois dans l'onglet du navigateur.
3. Les balises : la règle du jeu
Tout HTML fonctionne avec des balises. Comprendre leur logique, c'est comprendre tout le reste.
Une balise s'ouvre, contient quelque chose, et se ferme (avec un /). La plupart vont par paires.
| Notion | Exemple |
|---|---|
| Balise paire | <p>texte</p> |
| Balise auto-fermante (sans contenu) | <br> (saut de ligne), <img> |
| Attribut (info en plus) | <a href="..."> — href est un attribut |
| Imbrication | <p>un <strong>mot</strong> fort</p> |
Flag A2
Checkpoint
Dans <a href="page.html">cliquez</a>, identifie : la balise ouvrante, l'attribut (et sa valeur), le contenu, la balise fermante.
Rends : les 4 éléments.
4. Du code lisible : indentation & commentaires
Un code qui marche, c'est bien. Un code lisible, c'est mieux : tu te reliras plus tard, et tes profs (et collègues) liront ton code. Deux outils pour ça : l'indentation et les commentaires.
L'indentation (décaler ce qui est « à l'intérieur »)
Quand une balise est à l'intérieur d'une autre, on la décale de 2 espaces vers la droite. Compare :
<body>
<header>
<h1>Titre</h1>
</header>
</body>
Sans indentation : difficile de voir qui contient quoi.
<body>
<header>
<h1>Titre</h1>
</header>
</body>
Avec indentation : on voit que h1 est dans header, dans body.
Les commentaires (des notes invisibles)
<!-- Ceci est un commentaire : il n'apparaît pas dans la page -->
<h1>Bonjour</h1>
Flag B3
Production
Reprends ton squelette du chapitre 2. Ré-indente-le proprement (chaque enfant décalé de 2 espaces) et ajoute un commentaire au-dessus du <body> qui dit, par exemple, <!-- contenu visible de ma page -->.
Rends : ton code indenté avec son commentaire.
5. Les titres
HTML a 6 niveaux de titres, du plus grand (h1) au plus petit (h6). Ils structurent le contenu comme les titres d'un document.
<h1>Titre principal</h1>
<h2>Sous-titre</h2>
<h3>Sous-sous-titre</h3>
Flag B4
Production
Dans ton <body>, écris un h1 (le titre de ta page perso) et deux h2 (« À propos », « Mes passions »).
Rends : ton code.
6. Paragraphes & mise en valeur
Les paragraphes
<p>Je m'appelle Marc et je suis en BTS SIO.</p>
<p>J'aime le développement et le réseau.</p>
Mettre en valeur
<p>C'est <strong>important</strong> et <em>à noter</em>.<br>
Et ça, c'est à la ligne.</p>
Le cas de <span>
<p>Mon pseudo est <span>DevMarc</span> sur le forum.</p>
Les caractères spéciaux
Certains caractères sont « réservés » par HTML : le < et le > servent aux balises, le & sert justement à écrire ces caractères. Pour les afficher comme du texte normal, on utilise des codes appelés entités.
<p>En C#, on écrit if (age < 18).</p>
<p>© 2026 — Tom & Marc</p>
Flag B5
Production
Sous ton titre, écris 2 paragraphes qui te présentent, avec au moins un mot en <strong>, un en <em>, et un <span> autour de ton prénom.
Rends : ton code et une description de ce que tu vois.
7. Les listes
Liste à puces (non ordonnée)
<ul>
<li>HTML</li>
<li>CSS</li>
<li>SQL</li>
</ul>
Liste numérotée (ordonnée)
<ol>
<li>Allumer le PC</li>
<li>Se connecter</li>
</ol>
Flag B6
Production
Ajoute à ta page une liste à puces de 3 compétences que tu veux acquérir, et une liste numérotée de 3 étapes de ta journée type.
Rends : ton code.
8. Les liens
Le lien (« hyperlien ») est ce qui fait le web : cliquer pour aller ailleurs.
<a href="https://example.fr">Le site de mon école</a>
Trois variantes utiles de href
| Variante | Exemple | Effet |
|---|---|---|
| Lien externe | href="https://mdn.dev" | ouvre un autre site |
| Lien interne | href="contact.html" | autre page du même site |
| Ancre (même page) | href="#section-competences" | saute à l'élément qui a id="section-competences" |
href="mailto:moi@example.fr" | ouvre le client mail avec l'adresse pré-remplie |
Pour les ancres, l'élément cible doit avoir un attribut id correspondant : <h2 id="section-competences">Compétences</h2>. Très utile sur une longue page pour faire un sommaire cliquable.
Flag B7
Production
Ajoute à ta page un lien vers un site que tu aimes (externe), et un lien vers une future page contact.html (interne).
Rends : ton code et ce qui se passe au clic sur le lien externe.
9. Les images
Pour afficher une image, on utilise <img> — une balise auto-fermante (pas de contenu, donc pas de balise fermante).
<img src="photo.jpg" alt="Ma photo de profil">
expl.
<img> — la balise image.
src="..." — la source : le chemin du fichier image (ici, dans le même dossier).
alt="..." — un texte alternatif : décrit l'image si elle ne se charge pas, et pour les lecteurs d'écran (accessibilité).
À l'écran
L'image s'affiche à sa taille réelle. Si le fichier est introuvable, c'est le texte du alt (ou une icône cassée) qui apparaît à la place.
Détail pro
choisir le bon format d'image
| Format | Extension | Quand l'utiliser | Poids typique (photo 1200px) |
|---|---|---|---|
| JPEG | .jpg / .jpeg | photos, dégradés, images complexes — compression avec légère perte de qualité | 80-200 Ko |
| PNG | .png | logos, icônes, captures d'écran — compression sans perte + fond transparent possible | 150-600 Ko |
| WebP | .webp | remplace JPEG et PNG — 25-35 % plus léger, supporté par tous les navigateurs modernes depuis 2020 | 50-150 Ko |
| SVG | .svg | logos vectoriels, icônes — poids minuscule (~1-5 Ko), net à toute résolution | 1-20 Ko |
| GIF | .gif | animations simples uniquement — à éviter pour les images fixes (PNG est toujours meilleur) | variable |
Règle d'or : une photo de profil sur ton site perso devrait peser moins de 150 Ko. Au-delà, la page est lente à charger (chaque 100 Ko supplémentaire = ~0,1 s sur une connexion 4G correcte).
Détail pro
width, height et l'attribut alt selon WCAG
Tu peux fixer les dimensions de l'image directement en HTML :
<img src="images/photo.jpg" alt="Photo de profil de Marc" width="300" height="300">
expl.
width="300" et height="300" — dimensions en pixels. Préciser les deux évite le « layout shift » (la page qui saute quand l'image se charge). Les navigateurs réservent l'espace à l'avance.
L'attribut alt selon l'accessibilité (WCAG 2.1, critère 1.1.1) :
| Type d'image | Bon alt | Mauvais alt |
|---|---|---|
| Photo de profil | alt="Portrait de Marc Dupont en BTS SIO" | alt="image" ou alt="" |
| Logo du site | alt="Logo de mon école" | alt="logo" |
| Image purement décorative | alt="" (vide intentionnel) | un texte qui décrit visuellement sans sens |
Un lecteur d'écran (NVDA, VoiceOver) lit l'alt à voix haute. alt="image.jpg" est inutile pour un utilisateur aveugle.
Erreur courante
l'image ne s'affiche pas (icône cassée)
Symptôme : un petit carré cassé au lieu de la photo.
Cause : le src ne correspond à aucun fichier (mauvais nom, mauvais dossier, ou l'image n'est pas là).
Solution : vérifie que le fichier image est bien là et que le nom (avec l'extension .jpg/.png) est exactement le même (la casse compte). On creuse les chemins au chapitre suivant.
Flag B8
Production
Mets une image dans ton dossier mon-site et affiche-la dans ta page avec un alt descriptif.
Rends : ton code et confirme que l'image s'affiche (sinon, quel était le souci ?).
10. Les chemins : où sont mes fichiers ?
Quand tu écris src="photo.jpg" ou href="contact.html", tu donnes un chemin : tu dis au navigateur où aller chercher le fichier, en partant de la page actuelle. Bien ranger ses fichiers, c'est la moitié du métier.
Organiser son dossier
Range tes images dans un sous-dossier images/. Ton dossier ressemble alors à ça :
mon-site/
├── index.html <-- ta page d'accueil
├── contact.html <-- une autre page
└── images/
└── photo.jpg <-- tes images
Les trois cas à connaître
| Où est le fichier ? | Ce que tu écris |
|---|---|
| Même dossier que la page | src="photo.jpg" |
Dans un sous-dossier images/ | src="images/photo.jpg" |
| Dans le dossier parent (un niveau au-dessus) | src="../photo.jpg" |
expl.
images/photo.jpg — « descends dans le dossier images, puis prends photo.jpg ».
../ — « remonte d'un dossier » (deux points + slash).
On utilise toujours des slashs / (jamais des antislashs \) dans les chemins web.
Erreur courante
antislash ou chemin de ton disque
Symptôme : l'image marche chez toi mais nulle part ailleurs, ou pas du tout.
Cause : tu as collé un chemin façon C:\Users\moi\photo.jpg ou utilisé des \.
Solution : utilise un chemin relatif au site avec des / : images/photo.jpg. Ainsi le site reste déplaçable et publiable.
Flag C1
Debug
Tu as rangé ta photo dans mon-site/images/ mais ton code dit encore <img src="photo.jpg"> : l'image ne s'affiche plus.
Corrige le chemin pour qu'elle réapparaisse.
Rends : la ligne <img> corrigée et une phrase expliquant l'erreur.
11. Structurer la page
Pour organiser le contenu, on le regroupe dans des conteneurs. Le plus simple est <div> ; les balises sémantiques disent en plus à quoi sert chaque zone.
<header>
<h1>Mon portfolio</h1>
</header>
<main>
<p>Le contenu principal de la page.</p>
</main>
<footer>
<p>© 2026 - Marc</p>
</footer>
expl.
<header> — l'en-tête de la page (titre, logo).
<main> — le contenu principal.
<footer> — le pied de page (mentions, contact).
<div> — un conteneur générique, sans sens particulier (utile pour grouper et styliser avec le CSS).
À l'écran
Visuellement, rien ne change beaucoup pour l'instant (les contenus s'empilent). Ces balises servent à organiser ; c'est le CSS qui leur donnera plus tard une vraie mise en page (bandeau, colonnes…).
Pourquoi le sémantique compte
Un <header> est plus clair qu'un <div> anonyme : pour toi, pour les autres développeurs, pour Google et les lecteurs d'écran.
À contenu égal, on préfère la balise qui dit ce que c'est. <div> reste utile quand aucune balise sémantique ne convient.
Le menu de navigation
Quand ton site a plusieurs pages, on regroupe les liens de navigation dans un <nav>, souvent placé dans le <header>.
<nav>
<a href="index.html">Accueil</a>
<a href="contact.html">Contact</a>
</nav>
expl.
<nav> — la zone des liens de navigation (le menu). À l'intérieur, de simples <a> vers tes pages. C'est ce qui permet au visiteur de circuler entre tes pages.
Comment ça marche
bloc vs en ligne
Deux familles de balises :
Bloc (p, h1, ul, div, header…) : prend toute la largeur et passe à la ligne. On les empile.
En ligne (strong, em, a, span, img) : reste dans le texte, sans casser la ligne.
C'est pour ça qu'un <strong> ne fait pas sauter de ligne, contrairement à un <p>.
| Balise | Type | Ce qu'elle signifie | Rôle typique |
|---|---|---|---|
header | bloc | en-tête (de page ou de section) | logo, titre principal, nav |
nav | bloc | zone de navigation | menu principal |
main | bloc | contenu principal (unique par page) | le corps de la page |
section | bloc | section thématique avec un titre | regrouper des chapitres ou rubriques |
article | bloc | contenu autonome, republié ailleurs | un article de blog, une fiche produit |
aside | bloc | contenu secondaire lié à la page | encadré « en savoir plus », pub |
footer | bloc | pied de page | copyright, liens légaux |
div | bloc | aucun sens — conteneur générique | grouper pour le CSS quand aucune balise sémantique ne convient |
span | en ligne | aucun sens — conteneur générique en ligne | cibler un bout de texte pour le CSS |
a | en ligne | lien | naviguer |
strong | en ligne | importance forte | gras sémantique |
em | en ligne | emphase | italique sémantique |
Section et article — quand les utiliser ?
Sur une vraie page structurée, <section> et <article> remplacent les <div> quand le contenu a un sens propre.
<main>
<section>
<h2>À propos</h2>
<p>Je m'appelle Marc, je suis en BTS SIO.</p>
</section>
<section>
<h2>Mes projets</h2>
<article>
<h3>GSB Ordonnances</h3>
<p>Application C# de gestion des ordonnances médicales.</p>
</article>
<article>
<h3>Portfolio Web</h3>
<p>Ce site que tu consultes en ce moment.</p>
</article>
</section>
</main>
expl.
<section> — une rubrique thématique. Doit toujours contenir un titre (h2, h3…). Si ton contenu n'a pas de titre, utilise plutôt un <div>.
<article> — un contenu autonome : tu pourrais le copier dans un autre site et il aurait toujours du sens. Chaque carte de projet, chaque billet de blog = un <article>.
Règle pratique : div → quand aucune autre balise sémantique ne convient. Si une balise dit ce que c'est (section, article, aside…), préfère-la.
Flag B9
Production
Réorganise ta page avec un <header> (ton titre), un <main> (tes paragraphes, listes, image) et un <footer> (ton nom + l'année).
Rends : ton code structuré.
12. Les tableaux
Un tableau présente des données en lignes et colonnes (un planning, une liste de logiciels…). Il s'assemble avec quatre balises.
<table>
<tr>
<th>Logiciel</th>
<th>Usage</th>
</tr>
<tr>
<td>VS Code</td>
<td>Écrire du code</td>
</tr>
<tr>
<td>Firefox</td>
<td>Tester la page</td>
</tr>
</table>
expl.
<table> — le tableau entier.
<tr> (table row) — une ligne.
<th> (table header) — une cellule d'en-tête (en gras, centrée).
<td> (table data) — une cellule de donnée normale.
À l'écran
Un tableau de 2 colonnes : une ligne d'en-tête « Logiciel / Usage » en gras, puis deux lignes de données. Brut (sans bordures stylées) pour l'instant — le CSS l'embellira.
Structurer proprement : thead, tbody, caption
Pour un vrai tableau professionnel, on sépare l'en-tête du corps avec <thead> et <tbody>, et on ajoute un titre avec <caption> :
<table>
<caption>Logiciels utilisés en BTS SIO</caption>
<thead>
<tr>
<th>Logiciel</th>
<th>Usage</th>
</tr>
</thead>
<tbody>
<tr>
<td>VS Code</td>
<td>Écrire du code</td>
</tr>
<tr>
<td>Firefox</td>
<td>Tester la page</td>
</tr>
</tbody>
</table>
expl.
<caption> — titre du tableau, affiché au-dessus. Les lecteurs d'écran le lisent en premier pour savoir de quoi parle le tableau.
<thead> — groupe la ligne d'en-tête. Quand on imprime ou qu'on fait défiler un grand tableau, cette ligne peut se répéter automatiquement en haut de chaque page.
<tbody> — groupe les lignes de données. CSS peut les cibler séparément (ex. tbody tr:nth-child(even) pour le zébrage).
Fusionner des cellules : colspan et rowspan
colspan fusionne des cellules à l'horizontale (sur plusieurs colonnes) ; rowspan fusionne à la verticale (sur plusieurs lignes).
<tr>
<th colspan="2">Logiciels et usages</th>
</tr>
expl.
colspan="2" — cette cellule occupe 2 colonnes. Si ton tableau a 2 colonnes et que tu mets colspan="2", la cellule prend toute la largeur. Attention : la ligne suivante doit alors avoir 2 cellules normales (sinon le tableau s'affiche de travers).
Le bon nombre de cellules par ligne
Chaque <tr> doit avoir le même nombre de cellules (<td>/<th>) que les autres, sinon le tableau s'affiche de travers (cellules décalées ou manquantes).
Flag B10
Production
Ajoute à ta page un tableau qui liste 3 logiciels que tu utilises et leur usage (1 ligne d'en-tête + 3 lignes de données).
Rends : ton code et une description de l'affichage.
13. Espionner le HTML d'un vrai site
Toutes les pages que tu visites sont du HTML, comme la tienne. Le navigateur a un outil pour le voir en direct : l'inspecteur.
Ouvrir l'inspecteur
- Va sur un site que tu connais (par ex.
https://wikipedia.orgou un autre). - Appuie sur
F12(ou clic droit sur un élément → Inspecter). - Un panneau s'ouvre : à gauche/au-dessus la page, dans l'onglet Éléments (ou Inspecteur) le code HTML de la page.
expl.
En survolant une ligne de code dans le panneau, la zone correspondante se surligne dans la page. Tu retrouves les balises que tu viens d'apprendre : <h1>, <p>, <a href>, <img>, <header>…
À l'écran
Une cascade de balises imbriquées et indentées, exactement comme ton fichier — juste beaucoup plus longue. Tu peux déplier/replier les balises avec les petites flèches.
Et si je modifie le code dans l'inspecteur ?
Tu peux double-cliquer sur un texte et le changer : la page se modifie sous tes yeux. Pas de panique, c'est uniquement chez toi et temporaire : tu ne touches pas au vrai site, et un F5 remet tout en place.
Les autres onglets de l'inspecteur — détail pro
L'onglet Éléments n'est que le premier. L'inspecteur contient aussi :
| Onglet | Ce qu'il montre | Utilité pour un dev web |
|---|---|---|
| Console | les erreurs JavaScript et les messages de la page | voir les erreurs (texte rouge) ; en HTML pur, on ne l'utilise pas encore, mais note qu'une erreur JS peut empêcher tout le JavaScript de la page de fonctionner |
| Network (Réseau) | tous les fichiers chargés par la page (HTML, CSS, images, polices…) | vérifier qu'une image se charge bien (statut 200 = OK, 404 = fichier introuvable), voir le poids de chaque ressource, mesurer le temps de chargement |
| Sources | les fichiers source de la page | lire le HTML/CSS/JS original, poser des breakpoints JS |
| Lighthouse | audit automatique (performance, accessibilité, SEO, bonnes pratiques) | obtenir un score /100 sur chaque axe avec des recommandations concrètes |
Valider son HTML : le W3C Validator
En dehors de l'inspecteur, il existe un outil officiel pour vérifier que ton HTML est syntaxiquement correct selon le standard : validator.w3.org.
Il suffit de coller ton code (option « Direct Input ») ou de donner l'URL de ta page : il signale chaque balise mal fermée, chaque attribut inconnu, chaque DOCTYPE manquant. Les erreurs sont numérotées et indiquent le numéro de ligne exact.
Un pro valide son HTML avant de mettre en ligne. Un score « 0 erreur, 0 avertissement » est la cible.
Document checking completed. No errors or warnings to show.
Flag D1
Investigation
Ouvre l'inspecteur (F12) sur un site de ton choix, trouve le <h1> de la page (ou un titre).
Rends : le nom du site, le texte de ce titre, et une autre balise apprise aujourd'hui que tu as repérée dans son code.
14. Une page complète, commentée
Avant de te lancer, voici une page entière qui réunit tout ce que tu as appris : un modèle de référence. Lis-la en repérant chaque balise — tu dois maintenant toutes les reconnaître.
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Léa Martin — Portfolio BTS SIO</title>
</head>
<body>
<!-- bandeau du haut -->
<header>
<h1>Léa Martin</h1>
<nav>
<a href="index.html">Accueil</a>
<a href="contact.html">Contact</a>
</nav>
</header>
<!-- contenu principal -->
<main>
<section>
<h2>À propos</h2>
<p>Je suis <strong>étudiante</strong> en BTS SIO,
passionnée de <em>développement web</em>.</p>
<img src="images/lea.jpg" alt="Portrait de Léa Martin, étudiante en BTS SIO"
width="200" height="200">
</section>
<section>
<h2>Compétences</h2>
<ul>
<li>HTML</li>
<li>CSS</li>
</ul>
</section>
<p>Mon site préféré :
<a href="https://developer.mozilla.org" target="_blank"
rel="noopener noreferrer">MDN Web Docs</a></p>
</main>
<!-- pied de page -->
<footer>
<p>© 2026 — Léa Martin</p>
</footer>
</body>
</html>
expl.
Tout y est — et en version pro :
- Le squelette complet (
doctype,charset,viewport,titledescriptif). - Un
headeravec sonnav, unmainavec deuxsection(chacune avec son titre), unfooter. - L'image avec
altdescriptif +width/heightpour éviter le layout shift. - Le lien externe avec
target="_blank" rel="noopener noreferrer"(sécurité). - L'indentation cohérente (2 espaces par niveau) et les commentaires.
C'est exactement la cible du mini-projet — avec TES contenus à la place de ceux de Léa.
À l'écran
De haut en bas : « Léa Martin » en grand, puis « À propos » avec un paragraphe (deux mots en gras/italique) et une photo, puis « Compétences » avec deux puces, un lien bleu « MDN », et tout en bas « © 2026 — Léa Martin ».
Flag A3
Checkpoint
Dans le modèle ci-dessus, combien y a-t-il de balises <h2> ? Quelle balise contient l'image ? Quelle entité produit le symbole © ?
Rends : tes 3 réponses.
15. Mini-projet : ta page de présentation
On assemble tout : une vraie page perso, première pierre de ton futur portfolio (qu'on enrichira puis qu'on déploiera en ligne dans les prochaines séances).
Le cahier des charges
- Le squelette HTML complet (doctype, head avec title + charset, body), indenté et avec au moins un commentaire.
- Un
<header>avec ton nom en<h1>. - Un
<main>avec : un<h2>« À propos » + 2 paragraphes (dont du<strong>/<em>) ; un<h2>« Compétences » + une liste ; ta photo rangée dansimages/(<img>avecaltet le bon chemin) ; un lien externe. - Un
<footer>avec ton nom et l'année.
Flag B11
Mini-projet (production)
Réalise ta page de présentation complète et ouvre-la dans le navigateur.
Rends : ton code HTML complet, et une description (ou capture) de la page affichée.
Garde ce fichier : il servira de base au portfolio.
Flag E1
Extension (bonus)
Va plus loin selon ton envie :
1. Crée une 2e page contact.html et relie-la à ta page d'accueil (lien interne dans les deux sens).
2. Ajoute un tableau de tes logiciels (chapitre 12) à ta page.
Rends : ce que tu as ajouté et son code.
Pour finir
Ton antisèche — balises + bonne pratique
| Je veux… | Balise / Syntaxe | Détail pro |
|---|---|---|
| un titre | <h1> … <h6> | un seul h1 par page ; hiérarchie stricte pour le SEO + WCAG |
| un paragraphe | <p> | bloc : passe automatiquement à la ligne avec espace |
| du gras / de l'italique | <strong> / <em> | sémantique (importance / emphase), pas juste visuel |
| un saut de ligne | <br> | balise auto-fermante, dans un <p> existant |
| un bout de texte ciblé | <span> | en ligne, sans sens propre — pour le CSS |
| une liste à puces / numérotée | <ul><li> / <ol><li> | tout élément va obligatoirement dans un <li> |
| un lien externe (nouvel onglet) | <a href="https://..." target="_blank" rel="noopener noreferrer"> | rel="noopener noreferrer" = sécurité obligatoire |
| un lien interne / ancre / email | href="page.html" / href="#id" / href="mailto:..." | chemin relatif pour interne |
| une image | <img src="..." alt="..." width="..." height="..."> | alt descriptif (WCAG 1.1.1) + dimensions pour éviter le layout shift |
| un tableau structuré | <table><caption><thead><tbody><tr><th><td> | colspan/rowspan pour fusionner des cellules |
| structurer (sémantique) | <header> <nav> <main> <section> <article> <aside> <footer> | préférer la balise sémantique à <div> quand elle existe |
| un conteneur générique | <div> (bloc) / <span> (en ligne) | quand aucune balise sémantique ne convient |
| un commentaire | <!-- … --> | invisible à l'écran, mais visible dans le code source |
| adapté aux mobiles | <meta name="viewport" content="width=device-width, initial-scale=1"> | dans le <head>, toujours |
Vérifie tes acquis
Exercice Réussi À revoir
Réponds par écrit avant de regarder le corrigé. Compte 1 point par réponse complète.
- Quelle est la différence entre le
<head>et le<body>? - Pourquoi faut-il toujours mettre
<!DOCTYPE html>en première ligne ? - Qu'est-ce qu'un attribut ? Donne un exemple avec ses guillemets.
- Quelle balise pour un lien ? Pour une image ?
- Différence entre
<ul>et<ol>? - À quoi sert l'attribut
altd'une image et pour qui est-il important ? - Comment écrit-on le chemin d'une image rangée dans un sous-dossier
images/? - Tu veux ouvrir un lien dans un nouvel onglet sans risque de sécurité. Quelle est la syntaxe complète ?
- Quelle balise utilise-t-on pour une rubrique thématique avec titre ? Pour un contenu autonome (fiche produit, article) ?
- Que fait
<meta name="viewport" content="width=device-width, initial-scale=1">?
Voir le corrigéMasquer le corrigé de l'exercice
1. <head> = les coulisses : infos pour le navigateur (titre d'onglet, encodage, viewport…), rien d'affiché. <body> = la scène : tout ce que le visiteur voit. 99 % du contenu va dans le <body>.
2. Sans <!DOCTYPE html>, le navigateur entre en quirks mode (mode de compatibilité des années 90) : marges, tailles, tableaux s'affichent différemment et de façon imprévisible. Avec, il applique les règles HTML5 standards.
3. Un attribut est une info en plus dans la balise ouvrante, écrite nom="valeur". Exemple : <a href="contact.html"> — href est l'attribut, "contact.html" est sa valeur.
4. Lien : <a href="...">. Image : <img src="..." alt="...">.
5. <ul> = liste à puces (ordre sans importance, ex. liste de compétences). <ol> = liste numérotée (ordre qui compte, ex. étapes d'une procédure).
6. L'attribut alt décrit l'image en texte. Important pour : (a) l'accessibilité — les lecteurs d'écran (NVDA, VoiceOver) le lisent à voix haute pour les utilisateurs aveugles ; (b) le SEO — Google l'utilise pour comprendre l'image ; (c) le cas où l'image ne charge pas — le texte apparaît à la place.
7. src="images/photo.jpg" — le nom du sous-dossier suivi d'un / puis du nom du fichier. Toujours des slashs /, jamais des antislashs \.
8. <a href="https://site.fr" target="_blank" rel="noopener noreferrer">Texte</a>. Le rel="noopener noreferrer" coupe l'accès à window.opener et protège contre le reverse tabnapping.
9. Rubrique thématique : <section> (toujours avec un titre h2/h3). Contenu autonome : <article> (fiche produit, billet de blog — pourrait être republié seul).
10. Elle dit au navigateur mobile d'adapter la largeur de la page à celle de l'écran (au lieu d'afficher une page de bureau compressée). Indispensable pour tout site consulté sur smartphone.
Tu avais trouvé ?
Tu es bloqué ? La checklist
Les accents s'affichent en charabia ? → ajoute <meta charset="utf-8"> dans le <head>.
Tout le texte est géant ? → une balise (souvent un titre) n'est pas fermée.
L'image ne s'affiche pas ? → vérifie le nom, l'extension et le chemin (images/...) du src.
Le code s'affiche en toutes lettres ? → ton fichier est en .txt, pas en .html.
Une partie de la page a disparu ? → un commentaire <!-- n'est pas refermé par -->.
Les modifs n'apparaissent pas ? → as-tu enregistré (Ctrl+S) et rafraîchi (F5) ?
Un mot incompris ? → glossaire ci-dessous.
Glossaire
| Mot | Définition |
|---|---|
| HTML | le langage qui décrit le contenu et la structure d'une page web |
| Balise (tag) | un marqueur entre < > ; souvent par paire (ouvrante / fermante) |
| Attribut | une info en plus dans une balise, écrite nom="valeur" (ex. href, src, alt) |
| head / body | les coulisses (infos) / la scène (contenu visible) |
| Sémantique | une balise qui dit ce qu'elle contient (header, main, footer) |
| Auto-fermante | balise sans contenu ni fermeture (<br>, <img>) |
| Chemin relatif | l'emplacement d'un fichier par rapport à la page (images/photo.jpg, ../) |
| Indentation | le décalage du code « enfant » de 2 espaces, pour la lisibilité |
| Commentaire | une note invisible dans le code (<!-- … -->) |
| Inspecteur | l'outil du navigateur (F12) qui montre le HTML d'une page |
La prochaine fois
Ta page est correcte mais « brute ». À la prochaine séance, on la rend belle avec le CSS : couleurs, polices, mise en page. Garde bien ton index.html !
Compétences mobilisées
référentiel BTS SIO SLAM
Bloc 2 · Concevoir et développer une solution applicative (C2.1)
→ Développer des applications en respectant les standards de programmation
(structuration sémantique HTML5, indentation, bonnes pratiques d'accessibilité WCAG, chemin relatif)
Bloc 1 · C1.3 — Développer la présence en ligne de l'organisation
→ Configurer des serveurs web pour héberger des sites (amorce : produire le contenu HTML structuré d'une page ; la mise en ligne et la configuration serveur seront traitées dans une séance ultérieure)
Bloc 3 · C3.5 — Assurer la cybersécurité d'une solution applicative
→ Prendre en compte la sécurité dans un projet de développement
(sécurité rel="noopener noreferrer", confidentialité des liens sortants, sensibilisation W3C Validator)