La balise racine de toute page web. Elle enveloppe tout le contenu HTML du document. L'attribut lang indique la langue de la page.
<html lang="fr">
...contenu...
</html>
Contient les métadonnées de la page : titre, encodage, styles CSS, scripts. Ces infos ne sont pas visibles mais essentielles au navigateur et au SEO.
<head>
<title>Mon site</title>
</head>
Contient tout le contenu visible de la page : textes, images, liens, boutons. Tout ce que l'utilisateur voit est dans <body>.
<body>
<h1>Bonjour !</h1>
</body>
Représente l'en-tête de la page ou d'une section. Contient généralement le logo, la navigation principale, le titre du site.
<header>
<nav>Menu</nav>
</header>
Représente le pied de page. Contient généralement les liens légaux, le copyright, les coordonnées et les liens secondaires.
<footer>
<p>© 2024 MonSite</p>
</footer>
Contient le contenu principal de la page. Il ne doit y avoir qu'un seul <main> par page - utile pour l'accessibilité et le SEO.
<main>
<article>...</article>
</main>
Délimite une section thématique de la page. Idéal pour séparer un héros, une présentation, une galerie ou un contact.
<section id="contact">
...
</section>
Représente un contenu autonome et réutilisable : un article de blog, une fiche produit, un commentaire. Excellent pour le SEO.
<article>
<h2>Mon article</h2>
</article>
Contenu secondaire lié au contenu principal : encadré, barre latérale, publicité, liens connexes. Souvent affiché sur le côté.
<aside>
<p>À lire aussi...</p>
</aside>
Contient les liens de navigation principaux. Aide les moteurs de recherche et les lecteurs d'écran à identifier les menus de navigation.
<nav>
<a href="/">Accueil</a>
</nav>
Conteneur générique de type bloc. N'a pas de sens sémantique - utilisez-le quand aucune balise sémantique ne convient. Très utilisé avec CSS.
<div class="carte">
Contenu...
</div>
Conteneur générique de type en ligne. Permet de styliser une portion de texte sans créer de nouveau bloc. Incontournable avec CSS.
<p>Texte <span class="rouge">coloré</span></p>
Les six niveaux de titres HTML. <h1> est le plus important (unique par page pour le SEO), jusqu'à <h6>, le moins important.
<h1>Titre principal</h1>
<h2>Sous-titre</h2>
<h3>Section</h3>
La balise de paragraphe. Tout bloc de texte courant doit être dans un <p>. Le navigateur ajoute automatiquement de l'espace avant et après.
<p>Ceci est un paragraphe de texte.</p>
Met en évidence un texte avec une importance forte. Le texte apparaît en gras. A un sens sémantique (importance) contrairement à <b>.
<p>C'est <strong>très important</strong>.</p>
Indique une emphase sur le texte. Affiché en italique. A une valeur sémantique d'accentuation, contrairement à la balise <i>.
<p>C'est <em>vraiment bien</em>.</p>
Insère un saut de ligne à l'intérieur d'un texte. C'est une balise auto-fermante (pas de </br>). À utiliser avec modération.
<p>Ligne 1<br>Ligne 2</p>
Trace une ligne horizontale de séparation thématique. Balise auto-fermante. Utile pour diviser visuellement des sections de contenu.
<p>Partie 1</p>
<hr>
<p>Partie 2</p>
Représente une citation longue extraite d'une autre source. L'attribut cite peut indiquer l'URL source. Affiché indenté par défaut.
<blockquote cite="https://...">
<p>Citation ici.</p>
</blockquote>
Affiche du code informatique en ligne avec une police à chasse fixe (monospace). Pour des blocs de code, combinez avec <pre>.
<p>Utilisez <code>console.log()</code></p>
Crée un lien hypertexte vers une URL, une ancre ou une adresse mail. L'attribut href est obligatoire. target="_blank" ouvre dans un nouvel onglet.
<a href="https://balisehtml.com"
target="_blank">
Visiter le site
</a>
Balise dans <head> qui lie des ressources externes. Sert principalement à importer des feuilles de style CSS. Balise auto-fermante.
<link rel="stylesheet"
href="style.css">
Crée une liste non ordonnée (à puces). Chaque élément est dans une balise <li>. Idéale pour des listes où l'ordre n'a pas d'importance.
<ul>
<li>HTML</li>
<li>CSS</li>
</ul>
Crée une liste ordonnée (numérotée). Les éléments sont numérotés automatiquement. Utiliser quand l'ordre est important (étapes, classements).
<ol>
<li>Étape 1</li>
<li>Étape 2</li>
</ol>
Définit un élément d'une liste. Doit toujours être enfant de <ul>, <ol> ou <menu>. Peut contenir n'importe quel contenu HTML.
<li>Un élément de liste</li>
Liste de définitions. <dt> est le terme, <dd> est sa définition. Parfait pour des glossaires, des FAQ ou des métadonnées.
<dl>
<dt>HTML</dt>
<dd>Langage de balisage</dd>
</dl>
Intègre une image. src est le chemin de l'image, alt fournit un texte alternatif (obligatoire pour l'accessibilité et le SEO). Balise auto-fermante.
<img src="photo.jpg"
alt="Description de l'image"
/>
Intègre une vidéo directement dans la page. Supporte controls, autoplay, muted, loop. Ajoutez plusieurs <source> pour la compatibilité.
<video controls width="640">
<source src="film.mp4">
</video>
Intègre un fichier audio. L'attribut controls affiche les commandes de lecture. Supporte les formats MP3, WAV, OGG.
<audio controls>
<source src="son.mp3">
</audio>
Regroupe un média (image, vidéo, code) avec sa légende. <figcaption> fournit une description visible. Améliore l'accessibilité.
<figure>
<img src="img.jpg" alt="...">
<figcaption>Légende</figcaption>
</figure>
Intègre une page externe dans la page courante. Utilisé pour les cartes Google Maps, les vidéos YouTube, les formulaires tiers.
<iframe
src="https://youtube.com/embed/..."
>
</iframe>
Crée un formulaire interactif. L'attribut action définit où envoyer les données, method définit le mode d'envoi (GET ou POST).
<form action="/envoi" method="post">
...champs...
</form>
Champ de saisie. Le type change son comportement : text, email, password, number, checkbox, radio, file…
<input type="email"
name="email"
placeholder="votre@mail.fr">
Étiquette associée à un champ de formulaire. L'attribut for doit correspondre à l'id du champ. Améliore l'accessibilité et l'UX.
<label for="nom">Votre nom :</label>
<input id="nom" type="text">
Zone de texte multiligne. Utile pour les messages longs, les commentaires. Les attributs rows et cols définissent sa taille initiale.
<textarea name="message"
rows="5"></textarea>
Crée une liste déroulante de choix. Chaque option est dans une balise <option>. Peut permettre une sélection multiple avec l'attribut multiple.
<select name="pays">
<option value="fr">France</option>
<option value="be">Belgique</option>
</select>
Crée un bouton cliquable. Le type submit envoie le formulaire, reset réinitialise, button pour JS. Peut contenir du HTML (icônes).
<button type="submit">
Envoyer ✉️
</button>
Crée un tableau de données. Contient <thead> (en-tête), <tbody> (corps) et <tfoot> (pied). Pour les données, pas pour la mise en page.
<table>
<thead>...</thead>
<tbody>...</tbody>
</table>
<tr> = ligne, <th> = cellule d'en-tête (gras, centré), <td> = cellule de données. L'attribut colspan fusionne des colonnes.
<tr>
<th>Nom</th>
<th>Âge</th>
</tr>
<tr>
<td>Alice</td>
<td>24</td>
</tr>