<!DOCTYPE html> <!-- Déclaration doctype HTML5 -->
<html lang="fr"> <!-- ĂlĂ©ment racine avec langue -->
<head> <!-- Métadonnées du document -->
<meta charset="UTF-8"> <!-- Encodage des caractĂšres -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Titre de la Page</title> <!-- Titre de l'onglet du navigateur -->
</head>
<body> <!-- Contenu visible de la page -->
<!-- Le contenu va ici -->
</body>
</html>
<meta name="description" content="Description de la page"> <!-- Description SEO -->
<meta name="keywords" content="html, css, javascript"> <!-- Mots-clés SEO -->
<meta name="author" content="Votre Nom"> <!-- Informations auteur -->
<link rel="stylesheet" href="styles.css"> <!-- CSS externe -->
<link rel="icon" href="favicon.ico"> <!-- Favicon -->
<script src="script.js"></script> <!-- JavaScript externe -->
<style>/* CSS interne */</style> <!-- CSS interne -->
<h1>Titre Principal</h1> <!-- Plus grand titre -->
<h2>Titre de Section</h2> <!-- DeuxiĂšme niveau -->
<h3>Sous-section</h3> <!-- TroisiĂšme niveau -->
<h4>Sous-sous-section</h4> <!-- QuatriĂšme niveau -->
<h5>Titre Mineur</h5> <!-- CinquiĂšme niveau -->
<h6>Plus Petit Titre</h6> <!-- Plus petit titre -->
<p>Texte de paragraphe</p> <!-- Paragraphe -->
<span>Texte en ligne</span> <!-- Conteneur en ligne -->
<div>Conteneur bloc</div> <!-- Conteneur bloc -->
<br> <!-- Saut de ligne -->
<hr> <!-- Ligne horizontale -->
<strong>Texte en gras</strong> <!-- Importance forte -->
<em>Texte en italique</em> <!-- Emphase -->
<b>Gras</b> <!-- Gras (sans signification sémantique) -->
<i>Italique</i> <!-- Italique (sans signification sémantique) -->
<u>Souligné</u> <!-- Texte souligné -->
<mark>Surligné</mark> <!-- Texte surligné -->
<small>Petit texte</small> <!-- Texte plus petit -->
<del>Texte supprimé</del> <!-- Texte supprimé -->
<ins>Texte inséré</ins> <!-- Texte inséré -->
<sub>Indice</sub> <!-- Indice -->
<sup>Exposant</sup> <!-- Exposant -->
<a href="https://example.com">Lien Externe</a> <!-- Lien externe -->
<a href="page.html">Lien Interne</a> <!-- Lien interne -->
<a href="#section">Lien d'Ancrage</a> <!-- Lien d'ancrage -->
<a href="mailto:email@example.com">Email</a> <!-- Lien email -->
<a href="tel:+1234567890">Téléphone</a> <!-- Lien téléphone -->
<a href="#" download="fichier.pdf">Télécharger</a> <!-- Lien de téléchargement -->
<!-- Attribut target avec valeurs acceptées -->
<a href="#" target="_blank">Nouvel onglet</a> <!-- _blank: nouvel onglet -->
<a href="#" target="_self">MĂȘme fenĂȘtre</a> <!-- _self: mĂȘme fenĂȘtre (dĂ©faut) -->
<a href="#" target="_parent">FenĂȘtre parent</a> <!-- _parent: fenĂȘtre parent -->
<a href="#" target="_top">FenĂȘtre principale</a> <!-- _top: fenĂȘtre principale -->
<a href="#" target="monCadre">Cadre nommé</a> <!-- nom personnalisé -->
<img src="image.jpg" alt="Description"> <!-- Image de base -->
<img src="image.jpg" alt="Description" width="300" height="200">
<img src="image.jpg" alt="Description" style="width: 100%;">
<!-- Attributs d'image étendus -->
<img src="image.jpg" alt="Description" title="Info-bulle">
<img src="image.jpg" alt="Description" loading="lazy"> <!-- lazy | eager -->
<img src="image.jpg" alt="Description" decoding="async"> <!-- sync | async | auto -->
<img src="image.jpg" alt="Description" crossorigin="anonymous"> <!-- anonymous | use-credentials -->
<figure> <!-- Image avec légende -->
<img src="image.jpg" alt="Description">
<figcaption>Légende de l'image</figcaption>
</figure>
<ul> <!-- Liste non ordonnée -->
<li>ĂlĂ©ment de liste 1</li>
<li>ĂlĂ©ment de liste 2</li>
<li>ĂlĂ©ment de liste 3</li>
</ul>
<ol> <!-- Liste ordonnée -->
<li>Premier élément</li>
<li>DeuxiÚme élément</li>
<li>TroisiÚme élément</li>
</ol>
<dl> <!-- Liste de définitions -->
<dt>Terme 1</dt>
<dd>Définition 1</dd>
<dt>Terme 2</dt>
<dd>Définition 2</dd>
</dl>
<table>
<caption>Titre du tableau</caption> <!-- Titre du tableau -->
<thead> <!-- En-tĂȘte du tableau -->
<tr>
<th scope="col">En-tĂȘte 1</th> <!-- scope: col | row | colgroup | rowgroup -->
<th scope="col">En-tĂȘte 2</th>
<th scope="col">En-tĂȘte 3</th>
</tr>
</thead>
<tbody> <!-- Corps du tableau -->
<tr>
<th scope="row">Ligne 1</th> <!-- En-tĂȘte de ligne -->
<td>Données 1</td>
<td>Données 2</td>
</tr>
<tr>
<th scope="row">Ligne 2</th>
<td colspan="2">Données fusionnées</td> <!-- Fusion de colonnes -->
</tr>
<tr>
<td rowspan="2">Données hautes</td> <!-- Fusion de lignes -->
<td>Données 3</td>
<td>Données 4</td>
</tr>
</tbody>
<tfoot> <!-- Pied de tableau -->
<tr>
<th scope="row">Total</th>
<td>100</td>
<td>200</td>
</tr>
</tfoot>
</table>
<!-- Groupement de colonnes -->
<table>
<colgroup>
<col style="background-color: yellow;"> <!-- Style pour colonne 1 -->
<col span="2" style="background-color: cyan;"> <!-- Style pour colonnes 2-3 -->
</colgroup>
<!-- ... contenu du tableau ... -->
</table>
<form action="/submit" method="post" enctype="multipart/form-data">
<!-- Types d'input -->
<input type="text" name="nom" placeholder="Votre nom">
<input type="email" name="email" required>
<input type="password" name="motdepasse" minlength="8">
<input type="number" name="age" min="18" max="99" step="1">
<input type="range" name="volume" min="0" max="100" value="50">
<input type="date" name="naissance">
<input type="time" name="heure">
<input type="datetime-local" name="rendezvous">
<input type="month" name="mois">
<input type="week" name="semaine">
<input type="color" name="couleur" value="#ff0000">
<input type="file" name="fichier" accept=".pdf,.doc,.docx">
<input type="file" name="images" accept="image/*" multiple>
<input type="url" name="site">
<input type="tel" name="telephone">
<input type="search" name="recherche">
<input type="hidden" name="token" value="abc123">
<!-- Boutons input -->
<input type="submit" value="Envoyer">
<input type="reset" value="Réinitialiser">
<input type="button" value="Bouton" onclick="alert('Cliqué')">
<input type="image" src="submit.png" alt="Envoyer">
<!-- Cases Ă cocher et boutons radio -->
<input type="checkbox" id="newsletter" name="newsletter" checked>
<label for="newsletter">S'abonner Ă la newsletter</label>
<input type="radio" id="homme" name="genre" value="homme">
<label for="homme">Homme</label>
<input type="radio" id="femme" name="genre" value="femme" checked>
<label for="femme">Femme</label>
<!-- Zone de texte avec attributs -->
<textarea name="message" rows="4" cols="50"
placeholder="Votre message..."
maxlength="500"
required></textarea>
<!-- Liste déroulante -->
<select name="pays" required>
<option value="">Choisissez un pays</option>
<optgroup label="Europe">
<option value="fr" selected>France</option>
<option value="de">Allemagne</option>
</optgroup>
<optgroup label="Amérique">
<option value="us">Ătats-Unis</option>
<option value="ca">Canada</option>
</optgroup>
</select>
<!-- Liste déroulante multiple -->
<select name="langues" multiple size="3">
<option value="fr">Français</option>
<option value="en">Anglais</option>
<option value="es">Espagnol</option>
</select>
<!-- Liste de données -->
<input list="navigateurs" name="navigateur">
<datalist id="navigateurs">
<option value="Chrome">
<option value="Firefox">
<option value="Safari">
<option value="Edge">
</datalist>
<!-- Groupement de champs -->
<fieldset>
<legend>Informations personnelles</legend>
<input type="text" name="prenom" placeholder="Prénom">
<input type="text" name="nom" placeholder="Nom">
</fieldset>
<!-- Boutons -->
<button type="submit">Envoyer</button> <!-- submit | reset | button -->
<button type="reset">Réinitialiser</button>
<button type="button" onclick="alert('Test')">Test</button>
</form>
<!-- Attributs de formulaire -->
<form method="post" action="/submit"
enctype="application/x-www-form-urlencoded" <!-- application/x-www-form-urlencoded | multipart/form-data | text/plain -->
autocomplete="on" <!-- on | off -->
novalidate <!-- Désactive la validation HTML5 -->
target="_blank"> <!-- _blank | _self | _parent | _top -->
</form>
<header>En-tĂȘte de page</header> <!-- Section d'en-tĂȘte -->
<nav>Menu de navigation</nav> <!-- Navigation -->
<main>Contenu principal</main> <!-- Contenu principal -->
<section>Section de contenu</section> <!-- Section de contenu -->
<article>Contenu d'article</article> <!-- Article -->
<aside>Contenu latéral</aside> <!-- Barre latérale -->
<footer>Pied de page</footer> <!-- Section de pied de page -->
<!-- Vidéo avec attributs étendus -->
<video controls width="640" height="480"
autoplay muted loop
poster="preview.jpg"
preload="metadata"> <!-- none | metadata | auto -->
<source src="video.mp4" type="video/mp4">
<source src="video.webm" type="video/webm">
<track kind="subtitles" src="subtitles_fr.vtt" srclang="fr" label="Français">
<track kind="captions" src="captions_en.vtt" srclang="en" label="English">
Votre navigateur ne supporte pas la vidéo.
</video>
<!-- Audio avec attributs -->
<audio controls autoplay loop muted
preload="auto"> <!-- none | metadata | auto -->
<source src="audio.mp3" type="audio/mpeg">
<source src="audio.ogg" type="audio/ogg">
Votre navigateur ne supporte pas l'audio.
</audio>
<!-- Iframe avec attributs de sécurité -->
<iframe src="https://example.com"
width="300" height="200"
frameborder="0" <!-- 0 | 1 -->
scrolling="auto" <!-- auto | yes | no -->
sandbox="allow-scripts allow-same-origin" <!-- Restrictions de sécurité -->
loading="lazy" <!-- lazy | eager -->
referrerpolicy="no-referrer"> <!-- Politique de referrer -->
</iframe>
<div id="id-unique">ĂlĂ©ment avec ID</div> <!-- Identifiant unique -->
<div class="ma-classe autre-classe">Classes</div> <!-- Classes CSS -->
<div style="color: red; font-size: 16px;">CSS en ligne</div>
<div title="Texte d'info-bulle">Survolez pour l'info-bulle</div>
<div lang="fr">Contenu en français</div> <!-- Langue du contenu -->
<div dir="ltr">Texte de gauche Ă droite</div> <!-- ltr | rtl | auto -->
<!-- Attributs de données personnalisées -->
<div data-user-id="123">Données utilisateur</div>
<div data-config='{"theme": "dark"}'>Configuration JSON</div>
<!-- Attributs d'état -->
<div hidden>ĂlĂ©ment masquĂ©</div>
<div contenteditable="true">Texte modifiable</div> <!-- true | false -->
<div draggable="true">ĂlĂ©ment dĂ©plaçable</div> <!-- true | false | auto -->
<div spellcheck="false">Pas de vérification orthographique</div> <!-- true | false -->
<div translate="no">Ne pas traduire ce texte</div> <!-- yes | no -->
<!-- Attributs d'accessibilité ARIA -->
<div role="button" aria-label="Fermer">Ă</div>
<div aria-hidden="true">Masqué aux lecteurs d'écran</div>
<div aria-expanded="false">Menu fermé</div>
<div aria-describedby="help-text">Champ avec aide</div>
<!-- Attributs globaux d'événements -->
<div onclick="alert('Cliqué')">Cliquez-moi</div>
<div onmouseover="this.style.color='red'">Survolez-moi</div>
<input onchange="console.log(this.value)">
<form onsubmit="return validateForm()"></form>
<!-- Attributs de sécurité -->
<form autocomplete="off"> <!-- on | off -->
<input autocomplete="new-password"> <!-- Valeurs spécifiques d'autocomplete -->
<script nonce="random123"></script> <!-- Nonce pour CSP -->