Comment nettoyer son PC de bureau
Publié le 15 octobre par Stéphane
Un nettoyage régulier prolonge la durée de vie…
HTML se traduit littéralement par « langage de balisage hypertexte ». Ce n'est pas un langage de programmation à proprement parler : on ne lui demande pas de calculer, mais de décrire la structure d'un document — un peu comme un plan d'architecte décrit les pièces d'une maison sans en dicter la décoration.
Chaque page web repose sur trois technologies complémentaires :
La version en vigueur aujourd'hui est HTML 5. Elle apporte des balises sémantiques modernes, la prise en charge native de l'audio et de la vidéo, et des formulaires enrichis.
.html et le recharger
immédiatement pour voir le résultat.
Une balise est un mot-clé placé entre chevrons
(< et >) qui indique au navigateur
comment interpréter le contenu qui la suit. On distingue deux grandes
familles : les balises par paire et les balises
auto-fermantes.
Ces balises fonctionnent par paire pour encadrer un contenu :
<nom>.
</nom>.
Exemple avec un titre de premier niveau :
<h1>Bienvenue chez AI29</h1>
Ici, <h1> ouvre l'élément,
</h1> le ferme,
et le texte entre les deux — Bienvenue chez AI29 —
est le contenu réellement affiché sur la page.
Certaines balises n'entourent pas de contenu : elles se suffisent à elles-mêmes. On les appelle auto-fermantes (ou « orphelines »). Elles servent typiquement à insérer un élément ponctuel : une image, un saut de ligne, un séparateur horizontal.
Exemple pour insérer un saut de ligne :
<br />
Ou pour insérer une image :
<img src="photo.jpg" alt="Ordinateur assemblé par AI29" />
/>) est facultative en HTML 5.
Écrire <br> ou
<br /> revient au même.
On garde la barre par cohérence visuelle avec les balises par paire.
Un attribut est une information supplémentaire que l'on attache à une balise pour préciser son comportement ou ses caractéristiques. Il se place toujours dans la balise ouvrante (ou dans la balise auto-fermante), jamais dans la balise fermante.
La syntaxe est simple :
<balise nom-attribut="valeur">
" ").Exemple concret — un lien hypertexte qui pointe vers une adresse :
<a href="https://ai29.tech" title="Site officiel AI29">Visiter le site</a>
Autre exemple — une image avec plusieurs attributs :
<img src="logo.png" alt="Logo AI29" width="200" height="200" />
id (identifiant unique),
class (regroupement pour le style),
title (info-bulle) et lang (langue du contenu).
Toute page HTML repose sur une structure minimale que le navigateur s'attend à retrouver. Ces quelques balises forment le squelette :
<!DOCTYPE html> — déclare que le document est en HTML 5 ;<html> — racine du document ;<head> — métadonnées invisibles (encodage, titre de l'onglet, etc.) ;<body> — contenu visible dans la fenêtre du navigateur.Mis bout à bout dans un fichier, cela donne :
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
</html>
Page blanche : le <body> est encore vide. Seul le <title> apparaît, dans l'onglet.
C'est le point de départ de toute nouvelle page :
un <head> qui contient
les métadonnées (encodage, viewport, titre de l'onglet…) et un
<body> encore vide,
prêt à recevoir le contenu visible.
charset="UTF-8" garantit un affichage correct des
caractères accentués (é, è, à, ç…).
viewport indique au navigateur mobile qu'il doit adapter
la largeur à celle de l'écran — sans ça, les téléphones affichent
une version « bureau » réduite illisible.
Un commentaire est un texte que l'on inscrit dans le code source pour l'expliquer ou pour laisser une note à un collègue (ou à toi-même dans six mois). Le navigateur les ignore complètement : ils n'apparaissent jamais dans la page rendue.
Syntaxe :
<!-- Ceci est un commentaire -->
Un commentaire peut aussi s'étendre sur plusieurs lignes :
<!--
Section « À propos » — à revoir avec Stéphane
avant la mise en ligne du site.
-->
Rien ne s'affiche : le navigateur ignore les deux commentaires.
À quoi servent-ils, concrètement ?
Pour structurer un texte, HTML propose six niveaux de titres et une balise dédiée au paragraphe.
<h1> à <h6>
Il existe six niveaux hiérarchiques, du plus important
(<h1>) au moins important
(<h6>) :
<h1>Titre principal de la page</h1>
<h2>Grande section</h2>
<h3>Sous-section</h3>
<h4>Sous-sous-section</h4>
<h5>Niveau intermédiaire</h5>
<h6>Niveau le plus bas</h6>
<h1> par page —
c'est le titre principal, celui qui résume le sujet.
Les titres suivants doivent respecter la hiérarchie logique
(on ne saute pas de h2 à h5).
Les moteurs de recherche et les lecteurs d'écran s'en servent
pour comprendre la structure du document.
<p>Un paragraphe se déclare avec la balise <p> :
<p>Le paragraphe est l'unité de base pour organiser du texte. Le navigateur ajoute automatiquement un espacement au-dessus et en dessous.</p>
Le paragraphe est l'unité de base pour organiser du texte. Le navigateur ajoute automatiquement un espacement au-dessus et en dessous.
<br>
Pour forcer un retour à la ligne à l'intérieur d'un
paragraphe, sans en créer un nouveau, on utilise la balise
auto-fermante <br /> :
<p>Vente, montage, réparation.<br />
Maintenance et conseil sur mesure.</p>
Vente, montage, réparation.
Maintenance et conseil sur mesure.
<br>
pour aérer une page. Cela mélange contenu et présentation.
Pour espacer, on utilisera plus tard le CSS (marges, padding).
HTML propose plusieurs balises pour enrichir le texte : mettre en valeur un mot, souligner un extrait important, indiquer une correction… La plupart ont une signification sémantique (elles décrivent la nature de l'accentuation), et non purement décorative.
<strong> — indique une
importance forte. Rendu par défaut en gras.
<em> — indique une
emphase (accent). Rendu par défaut en italique.
<mark> — surligne
un extrait pertinent (comme au feutre fluo).
<p>Le diagnostic est <strong>gratuit</strong>,
et le devis vous est remis <em>avant</em> toute intervention.</p>
Le diagnostic est gratuit, et le devis vous est remis avant toute intervention.
<s> — texte
<u> — souligné
(à utiliser avec précaution : ressemble à un lien) ;
<del> — texte
<ins> — texte
inséré par rapport à une version précédente.
Exemple :
<p>Nettoyage complet : <s>50 €</s> 40 € ce mois-ci (tarif fictif).</p>
<p>L'atelier ouvre le <del>lundi</del> <ins>mardi</ins> à 9 h.</p>
Nettoyage complet : 50 € 40 € ce mois-ci (tarif fictif).
L'atelier ouvre le lundi mardi à 9 h.
Pour écrire une formule chimique ou mathématique, on dispose de deux balises :
<sub> —
indice (en bas). Exemple : H2O
<sup> —
exposant (en haut). Exemple : E = mc2
<p>La formule de l'eau est H<sub>2</sub>O.</p>
<p>Un octet vaut 2<sup>8</sup> = 256 valeurs.</p>
La formule de l'eau est H2O.
Un octet vaut 28 = 256 valeurs.
<strong> et
<b> donnent tous deux du
gras à l'affichage, mais leur sens diffère :
strong = importance réelle,
b = simple mise en avant visuelle sans importance
supplémentaire (peu utilisé aujourd'hui). Même distinction entre
em (emphase) et i (italique décoratif).
Le lien hypertexte est probablement l'élément le plus emblématique du web : c'est lui qui permet de naviguer d'une page à une autre, d'un site à un autre, d'une section à une autre. Sans lui, le web ne serait qu'une collection de documents isolés.
La balise concernée est <a>
(pour anchor — ancre). Son attribut principal est
href (pour hypertext reference) : il contient
la destination du lien.
<a href="destination">Texte du lien</a>
Le texte du lien (entre les balises ouvrante et fermante)
est ce que l'utilisateur voit et sur quoi il clique. La
destination (dans href) est ce que le
navigateur ouvre au clic.
Lien vers un site externe — on utilise une URL complète :
<a href="https://ai29.tech">Site officiel AI29</a>
Lien vers une autre page du même site — chemin relatif :
<a href="../index.html">Retour à l'accueil</a>
Lien vers une ancre dans la même page — on préfixe l'identifiant par un dièse :
<a href="#haut">Retour en haut</a>
👉 Clique dessus : celui-ci fonctionne vraiment, car le titre de cette page porte l'identifiant haut.
À condition, bien sûr, qu'un élément de la page porte l'identifiant cible :
<h1 id="haut">Titre principal</h1>
Lien vers une adresse email — préfixe mailto: :
<a href="mailto:contact@ai29.tech">Nous écrire</a>
Lien vers un numéro de téléphone — préfixe tel: (pratique sur mobile) :
<a href="tel:+33612345678">Nous appeler</a>
Lien désactivé ici : le numéro de l'exemple est fictif.
L'attribut target contrôle l'endroit où s'ouvre la
destination. La valeur _blank demande au navigateur
d'ouvrir un nouvel onglet.
<a href="https://ai29.tech" target="_blank" rel="noopener">Ouvrir dans un nouvel onglet</a>
target="_blank", il est
fortement recommandé d'ajouter
rel="noopener". Sans ça, la page ouverte peut, dans
certains cas, prendre le contrôle de l'onglet d'origine (technique
dite du tabnabbing).
title
L'attribut title ajoute une info-bulle qui apparaît
au survol de la souris — utile pour donner un contexte
supplémentaire.
<a href="https://ai29.tech" title="L'Atelier Informatique du Finistère">AI29</a>
👉 Laisse la souris immobile sur le lien pour voir apparaître l'info-bulle.
Le web n'est pas fait que de texte : images, sons et vidéos enrichissent l'expérience. HTML 5 propose des balises dédiées pour chacun.
<img>
La balise <img> est
auto-fermante. Elle prend deux attributs
indispensables :
src (source) — le chemin ou l'URL vers
le fichier image ;
alt (alternative) — un texte descriptif
affiché en cas d'échec de chargement et lu par les lecteurs
d'écran.
<img src="images/ordinateur.jpg" alt="PC de bureau assemblé par AI29" />
Ici, le fichier n'existe pas : le navigateur affiche à sa place le texte de alt. C'est aussi ce texte que lit un lecteur d'écran.
alt est obligatoire.
Il rend le contenu accessible aux personnes malvoyantes qui
utilisent un lecteur d'écran, et sert de repli quand l'image
ne charge pas. Pour une image purement décorative, on peut
laisser un alt vide (alt=""), mais
on ne l'omet jamais.
Attributs utiles supplémentaires :
width et height — dimensions en pixels.
Les préciser aide le navigateur à réserver l'espace avant même
que l'image soit chargée (moins de « saut » visuel au
chargement).
loading="lazy" — dit au navigateur de ne charger
l'image que lorsqu'elle approche de l'écran (économie de
bande passante pour les longues pages).
title — info-bulle au survol.
<img src="images/atelier.jpg"
alt="Vue de l'atelier AI29 à Morlaix"
width="800" height="600"
loading="lazy" />
<figure>
Quand une image est accompagnée d'une légende, on les enveloppe
dans <figure> et on
ajoute la légende dans
<figcaption>.
<figure>
<img src="images/pc-sur-mesure.jpg" alt="Configuration gamer AI29" />
<figcaption>Une configuration gamer assemblée en atelier.</figcaption>
</figure>
<audio>
Pour intégrer un fichier audio, on utilise la balise
<audio> avec
l'attribut controls pour afficher le lecteur
intégré du navigateur.
<audio controls>
<source src="medias/message.mp3" type="audio/mpeg" />
Votre navigateur ne prend pas en charge la lecture audio.
</audio>
👉 Lance la lecture : le fichier de l'exemple est remplacé par un court bip, celui d'un PC qui démarre.
Le texte à l'intérieur de la balise (« Votre navigateur… ») sert de message de repli pour les navigateurs qui ne comprennent pas la balise.
<video>
Même logique pour la vidéo, avec la balise
<video> :
<video controls width="640" height="360">
<source src="medias/presentation.mp4" type="video/mp4" />
Votre navigateur ne prend pas en charge la lecture vidéo.
</video>
Aucune vidéo n'est chargée ici : on voit le lecteur du navigateur et une image d'attente (attribut poster).
Attributs utiles pour audio et video :
controls — affiche les boutons play, pause, volume ;autoplay — lecture automatique (à utiliser avec parcimonie) ;loop — lecture en boucle ;muted — démarre en sourdine.<source> avec des
formats différents (MP4, WebM, OGG…). Le navigateur choisit le
premier format qu'il sait lire. C'est un filet de sécurité pour
la compatibilité entre navigateurs.
HTML propose trois familles de listes, chacune adaptée à un usage précis :
<ul>) —
quand l'ordre des éléments n'a pas d'importance ;
<ol>) —
quand l'ordre compte (étapes, classement, procédure) ;
<dl>) —
pour associer des termes à leurs définitions.
<ul>
Chaque élément de la liste est enveloppé dans une balise
<li>
(list item). Le navigateur affiche une puce ronde
par défaut.
<ul>
<li>Vente</li>
<li>Montage</li>
<li>Réparation</li>
<li>Maintenance</li>
</ul>
list-style-type). En HTML pur, on garde
l'apparence par défaut du navigateur.
<ol>Même principe, mais les éléments sont automatiquement numérotés par le navigateur (1, 2, 3…).
<ol>
<li>Réception de votre matériel</li>
<li>Diagnostic gratuit</li>
<li>Devis détaillé (20 € déductibles)</li>
<li>Intervention après votre accord</li>
<li>Restitution et explications</li>
</ol>
La balise <ol> accepte plusieurs attributs utiles :
start — numéro de départ (ex. start="5"
commence à 5) ;
type — style de numérotation :
"1" (défaut), "A" (A, B, C…),
"a" (a, b, c…), "I" (I, II, III…),
"i" (i, ii, iii…) ;
reversed — numérote en ordre décroissant.
<ol type="A" start="3">
<li>Troisième option (affichée « C »)</li>
<li>Quatrième option (affichée « D »)</li>
</ol>
<dl>Adaptée aux glossaires, définitions, spécifications techniques. Elle repose sur trois balises :
<dl> — la liste elle-même (description list) ;<dt> — le terme à définir (description term) ;<dd> — sa définition (description details).<dl>
<dt>SSD</dt>
<dd>Disque de stockage à base de mémoire flash, plus rapide qu'un disque dur classique.</dd>
<dt>RAM</dt>
<dd>Mémoire vive dans laquelle le système et les logiciels travaillent en direct.</dd>
<dt>GPU</dt>
<dd>Processeur dédié au calcul graphique, indispensable pour le jeu et la création visuelle.</dd>
</dl>
Un même terme peut être suivi de plusieurs
<dd> (plusieurs
définitions ou précisions), et inversement plusieurs
<dt> peuvent partager
une même définition.
On peut placer une liste à l'intérieur d'un
<li> pour créer une
arborescence. Il faut simplement veiller à bien fermer les
balises dans le bon ordre.
<ul>
<li>Vente
<ul>
<li>Ordinateurs de bureau</li>
<li>Ordinateurs portables</li>
<li>Périphériques</li>
</ul>
</li>
<li>Réparation
<ul>
<li>Panne matérielle</li>
<li>Panne logicielle</li>
</ul>
</li>
</ul>
ul et ol :
rien n'empêche d'imbriquer une liste ordonnée dans une non
ordonnée (ou l'inverse). L'indentation dans le code source
(comme dans l'exemple ci-dessus) rend la structure lisible pour
l'humain — le navigateur, lui, ne s'en occupe pas.
<li> ne peut
être direct enfant que d'un
<ul>,
<ol> ou
<menu>.
Écrire un <li> tout seul, sans conteneur,
est invalide.
Un tableau HTML sert à présenter des données organisées en lignes et colonnes : tarifs, plannings, résultats, comparatifs de configurations… tout ce qui se prête naturellement à une lecture en grille.
<table> aux
vraies données tabulaires. Pour la mise en page,
on utilisera plus tard le CSS (Flexbox, Grid).
Un tableau se construit avec quatre balises principales :
<table> — le conteneur du tableau ;<tr> — une ligne (table row) ;<th> — une cellule d'en-tête (table header) ;<td> — une cellule de données (table data).Exemple — quelques tarifs indicatifs de dépannage :
<table>
<tr>
<th>Prestation</th>
<th>Durée</th>
<th>Tarif</th>
</tr>
<tr>
<td>Diagnostic en atelier</td>
<td>30 min</td>
<td>Gratuit</td>
</tr>
<tr>
<td>Nettoyage complet</td>
<td>1 h</td>
<td>40 €</td>
</tr>
</table>
| Prestation | Durée | Tarif |
|---|---|---|
| Diagnostic en atelier | 30 min | Gratuit |
| Nettoyage complet | 1 h | 40 € |
<tr>,
puis les cellules qu'elle contient, puis on ferme la ligne, et
on passe à la suivante.
<thead>, <tbody>, <tfoot>Pour les tableaux plus riches, on peut regrouper les lignes en trois zones sémantiques :
<thead> — l'en-tête (titres des colonnes) ;<tbody> — le corps du tableau (les données) ;<tfoot> — le pied (totaux, notes…).Visuellement, le rendu par défaut change peu — mais la structure est bien plus claire, et les lecteurs d'écran s'y repèrent mieux. Le CSS pourra plus tard figer l'en-tête au défilement.
<table>
<thead>
<tr>
<th>Composant</th>
<th>Quantité</th>
<th>Prix</th>
</tr>
</thead>
<tbody>
<tr>
<td>Boîtier ATX</td>
<td>1</td>
<td>75 €</td>
</tr>
<tr>
<td>SSD 1 To NVMe</td>
<td>1</td>
<td>90 €</td>
</tr>
</tbody>
<tfoot>
<tr>
<td>Total</td>
<td>–</td>
<td>165 €</td>
</tr>
</tfoot>
</table>
| Composant | Quantité | Prix |
|---|---|---|
| Boîtier ATX | 1 | 75 € |
| SSD 1 To NVMe | 1 | 90 € |
| Total | – | 165 € |
<caption>
La balise <caption>
donne un titre au tableau. Elle se place
juste après l'ouverture de
<table>, avant toute
autre balise. Elle est particulièrement importante pour
l'accessibilité : c'est ce que les lecteurs d'écran annoncent
en premier.
<table>
<caption>Composants disponibles en atelier</caption>
<tr>
<th>Référence</th>
<th>État</th>
</tr>
<tr>
<td>Écran 24″ Full HD</td>
<td>Neuf</td>
</tr>
</table>
| Référence | État |
|---|---|
| Écran 24″ Full HD | Neuf |
colspan et rowspanDeux attributs permettent d'étendre une cellule sur plusieurs colonnes ou plusieurs lignes :
colspan="N" — la cellule s'étend sur
N colonnes ;
rowspan="N" — la cellule s'étend sur
N lignes.
Attention à ne pas « ajouter » de cellules dans les autres lignes pour compenser la fusion : le navigateur s'en charge tout seul.
<table>
<caption>Planning atelier — semaine 1</caption>
<tr>
<th>Jour</th>
<th>Matin</th>
<th>Après-midi</th>
</tr>
<tr>
<th>Lundi</th>
<td colspan="2">Fermé</td>
</tr>
<tr>
<th>Mardi</th>
<td rowspan="2">Diagnostic</td>
<td>Réparation</td>
</tr>
<tr>
<th>Mercredi</th>
<td>Montage</td>
</tr>
</table>
| Jour | Matin | Après-midi |
|---|---|---|
| Lundi | Fermé | |
| Mardi | Diagnostic | Réparation |
| Mercredi | Montage | |
<td>
— la colonne « Matin » est déjà occupée par le
rowspan="2" de la cellule « Diagnostic ».
scope
Pour aider les lecteurs d'écran à associer chaque
<th> aux bonnes
cellules, on utilise l'attribut scope :
scope="col" — l'en-tête concerne toute la colonne ;scope="row" — l'en-tête concerne toute la ligne.<tr>
<th scope="col">Prestation</th>
<th scope="col">Tarif</th>
</tr>
<tr>
<th scope="row">Diagnostic</th>
<td>Gratuit</td>
</tr>
| Prestation | Tarif |
|---|---|
| Diagnostic | Gratuit |
Aucune différence visible : scope sert aux lecteurs d'écran.
<caption>,
une structure thead/tbody et des
scope sur les th garantit un tableau
correctement lu par les technologies d'assistance —
sans effort supplémentaire côté rendu visuel.
Un formulaire permet à l'utilisateur d'envoyer des données au site : recherche, contact, inscription, commande, demande de devis… C'est le principal point d'entrée d'un site interactif.
<form>
Tout formulaire est enveloppé dans une balise
<form>. Elle porte
deux attributs importants :
action — l'adresse à laquelle les données
seront envoyées (généralement une URL côté serveur) ;
method — la méthode HTTP utilisée pour l'envoi :
get (données visibles dans l'URL, utile pour la
recherche) ou post (données transmises dans le
corps de la requête, plus adapté aux formulaires sensibles).
<form action="/traiter-devis" method="post">
<!-- Les champs se placent ici -->
</form>
<input>
La balise <input> est
auto-fermante et couvre à elle seule la plupart
des champs, grâce à son attribut type.
Panorama des types les plus courants :
| type | Usage |
|---|---|
text |
Texte court sur une seule ligne (nom, prénom…) |
email |
Adresse email (validation basique intégrée) |
password |
Mot de passe (caractères masqués à la saisie) |
tel |
Numéro de téléphone (clavier numérique sur mobile) |
url |
Adresse web |
number |
Valeur numérique (avec flèches d'incrément) |
date |
Sélecteur de date |
checkbox |
Case à cocher (choix multiples possibles) |
radio |
Bouton radio (un seul choix parmi un groupe) |
file |
Sélection d'un fichier à téléverser |
submit |
Bouton d'envoi du formulaire |
hidden |
Champ invisible, transmis au serveur (token, id…) |
Exemple — un champ texte simple :
<input type="text" name="prenom" placeholder="Votre prénom" />
name est essentiel :
c'est ce nom qui identifie la donnée quand elle arrive au serveur.
Sans name, la valeur du champ n'est pas envoyée
du tout.
La plupart des inputs partagent une palette d'attributs :
name — identifiant côté serveur (obligatoire pour transmettre) ;id — identifiant côté HTML (pour le lier à un <label>) ;value — valeur pré-remplie ;placeholder — texte gris affiché tant que le champ est vide ;required — le champ doit être rempli pour envoyer ;disabled — champ inactif, non modifiable, non envoyé ;readonly — champ affiché mais non modifiable, envoyé quand même ;minlength / maxlength — longueur mini/maxi (texte) ;min / max — bornes numériques ou de date ;autocomplete — aide au remplissage automatique.<input type="email" name="email" id="email"
placeholder="vous@exemple.fr"
required autocomplete="email" />
required, disabled,
readonly ou checked n'ont pas besoin de
valeur : leur simple présence suffit à les activer.
<label>
Un champ isolé n'est pas utilisable sans indication. La balise
<label> associe un
texte descriptif à un champ, ce qui améliore l'accessibilité et
l'ergonomie (cliquer sur le label active le champ associé).
Deux syntaxes possibles :
Version A — le label pointe vers l'id du champ :
<label for="prenom">Prénom :</label>
<input type="text" id="prenom" name="prenom" />
👉 Clique sur « Prénom : » : le curseur se place dans le champ.
Version B — le label englobe le champ (pas besoin d'id) :
<label>
Prénom :
<input type="text" name="prenom" />
</label>
Les cases à cocher
(type="checkbox") permettent de sélectionner
plusieurs valeurs indépendantes.
<label><input type="checkbox" name="services" value="vente" /> Vente</label>
<label><input type="checkbox" name="services" value="montage" /> Montage</label>
<label><input type="checkbox" name="services" value="reparation" checked /> Réparation</label>
Les boutons radio
(type="radio") permettent de choisir une seule
valeur dans un groupe. Le regroupement se fait via
l'attribut name : tous les radios qui partagent
le même name forment un groupe exclusif.
<label><input type="radio" name="contact" value="email" checked /> Par email</label>
<label><input type="radio" name="contact" value="tel" /> Par téléphone</label>
<textarea>
Pour un texte long (message, description), on utilise
<textarea> — qui, elle,
n'est pas auto-fermante. La valeur pré-remplie
s'écrit entre les balises, pas dans un attribut
value.
<label for="message">Votre message :</label>
<textarea id="message" name="message" rows="5" placeholder="Décrivez votre besoin…"></textarea>
<select>
Le menu déroulant offre un choix parmi une liste d'options
prédéfinies. Il combine trois balises :
<select> (le menu),
<option> (chaque
choix) et éventuellement
<optgroup> pour grouper
les options.
<label for="machine">Type de machine :</label>
<select id="machine" name="machine">
<option value="">-- Choisir --</option>
<optgroup label="Fixe">
<option value="bureau">PC de bureau</option>
<option value="gamer">PC gamer</option>
</optgroup>
<optgroup label="Mobile">
<option value="portable">Ordinateur portable</option>
</optgroup>
</select>
multiple à
<select> permet de
choisir plusieurs options (Ctrl / Cmd + clic).
<button>
Les boutons se déclarent avec la balise
<button> ou avec un
<input> de type
submit, reset ou button.
Trois types de boutons :
type="submit" — envoie le formulaire (comportement par défaut) ;type="reset" — remet tous les champs à leur valeur initiale ;type="button" — bouton sans action par défaut (destiné à un usage JS).<button type="submit">Envoyer la demande</button>
<button type="reset">Effacer</button>
<button> vs <input type="submit"> :
les deux fonctionnent, mais <button> est plus
flexible car il peut contenir du HTML (icône + texte, mise en
forme…). On le préfère aujourd'hui.
<fieldset> et <legend>
Pour organiser un long formulaire en sections logiques, on peut
envelopper des groupes de champs dans
<fieldset>, avec un
titre de groupe dans
<legend>.
<fieldset>
<legend>Vos coordonnées</legend>
<label>Nom : <input type="text" name="nom" /></label>
<label>Email : <input type="email" name="email" /></label>
</fieldset>
Mettons tout bout à bout dans un formulaire réaliste de demande de devis :
<form action="/devis" method="post">
<fieldset>
<legend>Vos coordonnées</legend>
<!-- Chaque div.champ regroupe une étiquette et son champ -->
<div class="champ">
<label for="nom">Nom complet <span aria-hidden="true">*</span></label>
<input type="text" id="nom" name="nom" required />
</div>
<div class="champ">
<label for="email">Adresse email <span aria-hidden="true">*</span></label>
<input type="email" id="email" name="email" placeholder="vous@exemple.fr" required />
</div>
<div class="champ">
<label for="tel">Téléphone</label>
<input type="tel" id="tel" name="telephone" placeholder="06 12 34 56 78" />
</div>
</fieldset>
<fieldset>
<legend>Votre demande</legend>
<div class="champ">
<label for="type">Type de prestation</label>
<select id="type" name="prestation">
<option value="">-- Choisir --</option>
<option value="vente">Vente de matériel</option>
<option value="montage">Montage sur mesure</option>
<option value="reparation">Réparation</option>
<option value="maintenance">Maintenance</option>
</select>
</div>
<div class="champ">
<label for="date">Date souhaitée</label>
<input type="date" id="date" name="date" />
</div>
<div class="champ">
<label for="description">Description du besoin</label>
<textarea id="description" name="description" rows="4" placeholder="Détaillez ce que vous recherchez…"></textarea>
</div>
<div class="champ">
<span>Mode de contact préféré :</span>
<label><input type="radio" name="contact" value="email" checked /> Email</label>
<label><input type="radio" name="contact" value="tel" /> Téléphone</label>
</div>
<div class="champ">
<label>
<input type="checkbox" name="rgpd" required />
J'accepte que mes coordonnées soient utilisées uniquement pour traiter ma demande.
</label>
</div>
</fieldset>
<button type="submit">Envoyer la demande</button>
<button type="reset">Tout effacer</button>
</form>
HTML 5 a apporté un ensemble de balises dont le seul rôle est de décrire la nature d'une zone de la page. Elles ne changent rien à l'apparence par défaut, mais elles permettent au navigateur, aux moteurs de recherche et aux lecteurs d'écran de comprendre la structure du document.
<nav> plutôt
que <div class="menu"> ne change pas le rendu
pour un œil humain — mais un lecteur d'écran saura annoncer
« navigation », un moteur de recherche saura que la zone
contient des liens de navigation, et un développeur reprenant
ton code comprendra plus vite l'intention.
<header> — en-tête
La balise <header>
regroupe les éléments introductifs d'une page ou d'une section :
logo, titre, sous-titre, barre de navigation principale, moteur
de recherche, formule d'accueil…
<header>
<h1>L'Atelier Informatique du Finistère</h1>
<p>Vente, montage, réparation à Morlaix.</p>
</header>
Vente, montage, réparation à Morlaix.
Une page peut contenir plusieurs
<header> :
un pour la page entière (en tête du document), et un par
<article> ou
<section> pour
les introduire.
<nav> — navigation
<nav> délimite une
zone de navigation principale — typiquement le
menu du site. Elle ne s'utilise pas pour n'importe quelle liste
de liens (par exemple les liens de bas de page peuvent tout à
fait rester dans le <footer>).
<nav aria-label="Navigation principale">
<ul>
<li><a href="/">Accueil</a></li>
<li><a href="/services">Services</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
</nav>
Une simple liste de liens : <nav> n'ajoute aucune mise en forme (les couleurs viennent de l'habillage du cours). Liens inactifs ici.
aria-label pour que les lecteurs
d'écran les nomment clairement.
<main> — contenu principal
<main> délimite le
contenu unique et principal de la page — ce
qui la distingue des autres pages du site. Elle
ne doit apparaître qu'une seule fois par page, et
ne doit pas contenir de header, footer ou nav de site
(ces éléments partagés se placent en dehors).
<body>
<header>...</header>
<main>
<!-- Le contenu propre à cette page -->
</main>
<footer>...</footer>
</body>
<section> — regroupement thématique
<section> regroupe
un ensemble de contenus liés par un même thème.
Chaque section devrait naturellement pouvoir porter un titre
(<h2>,
<h3>…).
<section>
<h2>Nos services</h2>
<p>Description des services proposés…</p>
</section>
<section>
<h2>Notre atelier</h2>
<p>Situé à Morlaix, ouvert du mardi au samedi…</p>
</section>
Description des services proposés…
Situé à Morlaix, ouvert du mardi au samedi…
<article> — contenu autonome
<article> délimite
un contenu qui pourrait être extrait de la page
et exister par lui-même : un billet de blog, une fiche produit,
un commentaire, une actualité…
<article>
<header>
<h2>Comment nettoyer son PC de bureau</h2>
<p>Publié le 15 octobre par Stéphane</p>
</header>
<p>Un nettoyage régulier prolonge la durée de vie…</p>
<footer>
<p>Mots-clés : entretien, poussière, ventilateur</p>
</footer>
</article>
Publié le 15 octobre par Stéphane
Un nettoyage régulier prolonge la durée de vie…
<section> ou <article> ?
Bonne question pédagogique.
section
(ex. « Nos services », « Nos horaires »).
article
(ex. billet de blog, fiche produit, actu).
<article>,
chacun peut contenir plusieurs <section>
(introduction, développement, conclusion).
<aside> — contenu latéral
<aside> représente un
contenu connexe ou secondaire
par rapport à ce qui l'entoure : encadré, note, liens
complémentaires, publicité, biographie de l'auteur…
<article>
<h2>Choisir son SSD</h2>
<p>Le SSD est aujourd'hui incontournable…</p>
<aside>
<h3>Le saviez-vous ?</h3>
<p>Le premier SSD grand public est apparu en 2007.</p>
</aside>
</article>
Le SSD est aujourd'hui incontournable…
<footer> — pied de page
<footer> regroupe les
éléments de clôture d'une page ou d'une section : mentions
légales, contact, copyright, liens secondaires, informations sur
l'auteur…
<footer>
<p>© 2026 AI29 — L'Atelier Informatique du Finistère</p>
<p>
<a href="/mentions-legales">Mentions légales</a>
</p>
</footer>
Comme le <header>,
le <footer> peut
apparaître au niveau de la page mais aussi à l'intérieur
d'articles ou de sections.
Mises bout à bout, ces balises dessinent une structure claire d'une page moderne :
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>AI29 — Accueil</title>
</head>
<body>
<header>
<h1>AI29</h1>
<nav aria-label="Menu principal">
<ul>
<li><a href="/">Accueil</a></li>
<li><a href="/services">Services</a></li>
<li><a href="/contact">Contact</a></li>
</ul>
</nav>
</header>
<main>
<section>
<h2>Nos services</h2>
<p>Description…</p>
</section>
<section>
<h2>Derniers articles</h2>
<article>
<h3>Choisir son SSD</h3>
<p>Aperçu de l'article…</p>
</article>
</section>
<aside>
<h2>Nous contacter</h2>
<p>contact@ai29.tech</p>
</aside>
</main>
<footer>
<p>© 2026 AI29</p>
</footer>
</body>
</html>
Description…
Aperçu de l'article…
Les contours cuivre et les étiquettes sont ajoutés pour ce cours : sans CSS, ces zones sont invisibles et la page ressemble à une simple suite de titres et de paragraphes.
<div> pour ce qui
n'a pas de rôle particulier (voir chapitre suivant).
<div> et <span>Après tout ce panorama de balises spécialisées, il reste deux « jokers » sans aucune signification : les balises génériques. Elles sont neutres — ni titre, ni paragraphe, ni article — mais elles servent à regrouper des éléments pour les manipuler ensemble, notamment pour les styler avec CSS ou les cibler avec JavaScript.
Avant de plonger dans les deux balises, une notion à comprendre : en HTML, les éléments se comportent de deux manières.
<p>,
<h1>,
<section>,
<ul>.
<a>,
<strong>,
<em>,
<code>.
Pour bien voir la différence, ce rendu entoure chaque élément :
<h3>Réparation express</h3>
<p>Diagnostic <strong>gratuit</strong> et <a href="#generiques">devis détaillé</a> avant toute intervention.</p>
Diagnostic gratuit et devis détaillé avant toute intervention.
Bleu : éléments bloc, qui prennent toute la largeur. Cuivre : éléments en-ligne, qui suivent le texte.
<div> est la version
bloc du conteneur neutre.
<span> est sa version
en-ligne. C'est leur seule vraie différence.
<div> — le conteneur bloc
<div> (pour
division) regroupe plusieurs éléments dans un bloc
logique. Il n'apporte aucune information sémantique, mais il
sert de « boîte » à laquelle on peut appliquer un
style commun, une position, ou une visibilité conditionnelle.
<div class="carte-service">
<h3>Réparation</h3>
<p>Diagnostic gratuit, devis détaillé avant intervention.</p>
<a href="/reparation">En savoir plus</a>
</div>
La <div> elle-même est invisible : rien ne distingue encore la carte du reste. Le cours CSS lui donnera un fond, une bordure et une ombre.
Ici, la <div> permettra
plus tard, avec le CSS, de dessiner une vraie carte
(fond, bordure, ombre, arrondi…) autour du titre, du paragraphe
et du lien — comme un bloc unique.
<span> — le conteneur en-ligne
<span> est
l'équivalent de <div>
mais à l'intérieur du texte. Il permet de cibler un
mot, un chiffre ou un fragment sans casser la ligne.
<p>
Votre PC est prêt : nous avons remplacé le disque dur par un
<span class="mise-en-avant">SSD NVMe 1 To</span>
et ajouté <span class="mise-en-avant">16 Go de RAM</span>.
</p>
Votre PC est prêt : nous avons remplacé le disque dur par un SSD NVMe 1 To et ajouté 16 Go de RAM.
On pourra ensuite, avec le CSS, mettre en valeur les fragments
marqués mise-en-avant (couleur cuivre, gras…) sans
changer la structure du paragraphe.
<div> ne peut pas
se placer à l'intérieur d'un
<p> ou d'un
<span> — les blocs
ne s'imbriquent pas dans les éléments en-ligne. Le navigateur,
s'il rencontre ce cas, ferme automatiquement l'élément parent
avant d'ouvrir le bloc, ce qui produit un rendu inattendu.
class et id
Une <div> ou un
<span> tout nu ne
sert pas à grand-chose : c'est un conteneur invisible. La vraie
utilité vient quand on lui attache un identifiant :
class — étiquette réutilisable ; plusieurs
éléments peuvent porter la même classe, et un même élément
peut cumuler plusieurs classes (séparées par des espaces).
id — identifiant unique dans
la page ; un seul élément peut porter un id donné.
<div id="hero" class="banniere principale">
<h1>Bienvenue chez AI29</h1>
</div>
Ici, la <div> porte l'id unique
hero (pour la cibler avec une ancre
#hero par exemple) et deux classes,
banniere et principale, réutilisables
ailleurs.
carte-service,
bouton-primaire). C'est ce qu'on appelle le
kebab-case. Cette convention rend le CSS plus lisible
et cohérent.
<div> plutôt qu'une balise sémantique ?
Presque jamais. Le réflexe doit être :
« existe-t-il une balise sémantique qui décrit ce que je
fais ? ». Si oui, on la préfère. Le
<div> ne doit
apparaître que si aucune balise plus précise ne convient.
| Besoin | Balise à préférer |
|---|---|
| En-tête de page | <header> |
| Menu de navigation | <nav> |
| Contenu principal | <main> |
| Regroupement thématique | <section> |
| Billet, produit, actualité | <article> |
| Pied de page | <footer> |
| Encart latéral | <aside> |
| Rien de spécifique — juste grouper | <div> |
<div> et <span> sont des
outils de dernier recours quand le sens sémantique
importe peu. Ils prendront toute leur importance dans la partie
CSS pour organiser la mise en page.
Voilà : les fondamentaux du HTML sont couverts. Tu sais désormais :
La suite logique est CSS : mettre en couleur, positionner, animer, adapter à toutes les tailles d'écran. Une page comme celle que tu lis actuellement combine déjà HTML (pour le contenu) et un peu de CSS (pour la lisibilité) — on s'y attaque vraiment dans le cours CSS.
À bientôt pour la suite. 👋
↑ Retour au sommaire