Dashboard HTML CSS JavaScript Éditeur Documentation
Référence complète

Documentation HTML, CSS & JavaScript

Guide de référence complet pour toutes les balises HTML, propriétés CSS et fonctions JavaScript.

Structure HTML

Toute page HTML commence par la déclaration DOCTYPE et suit une structure de base avec les éléments <html>, <head> et <body>.

ÉlémentDescriptionExemple
<!DOCTYPE html>Déclare le document comme HTML5Première ligne de tout fichier HTML
<html>Élément racine contenant tout le document<html lang="fr">...</html>
<head>En-tête avec métadonnées, titre, liens CSS<head><title>Page</title></head>
<body>Corps du document, contenu visible<body><h1>Bonjour</h1></body>
<meta>Balise auto-fermante pour métadonnées<meta charset="UTF-8">
<title>Titre affiché dans l'onglet du navigateur<title>Mon Site</title>
<link>Lien vers une ressource externe (CSS, favicon)<link rel="stylesheet" href="style.css">
<style>Bloc de styles CSS intégrés<style>body { margin: 0; }</style>
<script>Inclut ou exécute du JavaScript<script src="app.js"></script>
<noscript>Contenu affiché si JS est désactivé<noscript>Activez JS</noscript>

Exemple complet

HTML
<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Mon Site</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <h1>Bienvenue !</h1>
    <script src="app.js"></script>
</body>
</html>

Titres (h1 - h6)

Les titres structurent le contenu en hiérarchie. <h1> est le titre principal (un seul par page), jusqu'à <h6>.

BaliseNiveauExemple
<h1>Titre principal<h1>Titre principal</h1>
<h2>Sous-titre de section<h2>Section</h2>
<h3>Sous-section<h3>Sous-section</h3>
<h4>Titre de groupe<h4>Groupe</h4>
<h5>Titre de sous-groupe<h5>Sous-groupe</h5>
<h6>Niveau le plus bas<h6>Détail</h6>
Astuce SEO

Utilisez un seul <h1> par page et respectez la hiérarchie (pas de saut de h2 à h4). Cela améliore l'accessibilité et le référencement.

Texte & Paragraphes

BaliseDescriptionExemple
<p>Paragraphe<p>Texte ici.</p>
<br>Saut de ligne (auto-fermante)Ligne 1<br>Ligne 2
<hr>Ligne horizontale de séparation<hr>
<pre>Texte préservant l'espacement<pre> espace </pre>

Images (img)

L'élément <img> est auto-fermé et affiche une image. L'attribut alt est obligatoire pour l'accessibilité.

AttributDescriptionValeurs
srcChemin vers l'imageURL ou chemin relatif
altTexte alternatif (obligatoire)Description de l'image
widthLargeur en pixelsNombre entier
heightHauteur en pixelsNombre entier
loadingChargement différélazy, eager
srcsetImages responsivesListe de sources avec densité
HTML
<img src="photo.jpg" alt="Description" width="300" height="200" loading="lazy">

<!-- Image responsive -->
<img
    src="photo-800.jpg"
    srcset="photo-400.jpg 400w, photo-800.jpg 800w, photo-1200.jpg 1200w"
    sizes="(max-width: 600px) 400px, 800px"
    alt="Paysage"
>
Important

Toujours inclure l'attribut alt pour les lecteurs d'écran. Utilisez loading="lazy" pour les images hors écran afin d'améliorer les performances.

Listes

BaliseDescriptionExemple
<ul>Liste à puces (unordered)<ul><li>Item</li></ul>
<ol>Liste numérotée (ordered)<ol><li>Item</li></ol>
<li>Élément de liste<li>Texte</li>
<dl>Liste de définitions<dl><dt><dd></dl>
<dt>Terme à définir<dt>HTML</dt>
<dd>Définition du terme<dd>Langage de balisage</dd>
HTML
<ul>
    <li>Pomme</li>
    <li>Orange</li>
</ul>

<ol start="5" type="A">
    <li>Premier</li>
    <li>Deuxième</li>
</ol>

<dl>
    <dt>HTML</dt>
    <dd>HyperText Markup Language</dd>
</dl>

Tableaux

Les tableaux affichent des données sous forme de lignes et colonnes.

BaliseDescription
<table>Conteneur principal du tableau
<thead>En-tête du tableau
<tbody>Corps du tableau
<tfoot>Pied de tableau
<tr>Ligne du tableau
<th>Cellule d'en-tête (gras)
<td>Cellule de données
AttributDescriptionExemple
colspanFusionner des colonnes<td colspan="2">
rowspanFusionner des lignes<td rowspan="3">
scopePortée de l'en-têtecol, row
HTML
<table>
    <thead>
        <tr>
            <th scope="col">Nom</th>
            <th scope="col">Âge</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Alice</td>
            <td>25</td>
        </tr>
        <tr>
            <td colspan="2">Total : 1 personne</td>
        </tr>
    </tbody>
</table>

Formulaires

Les formulaires permettent la collecte de données utilisateur.

Éléments de formulaire

BaliseDescription
<form>Conteneur du formulaire
<input>Champ de saisie (auto-fermant)
<label>Étiquette liée à un champ
<select>Liste déroulante
<option>Option dans une liste
<optgroup>Groupe d'options
<textarea>Zone de texte multi-lignes
<button>Bouton d'action
<fieldset>Groupe logique de champs
<legend>Titre d'un fieldset
<datalist>Suggestions prédéfinies pour un input
<output>Résultat d'un calcul

Types d'input

TypeDescriptionExemple
textTexte simple<input type="text">
passwordMot de passe masqué<input type="password">
emailSaisie d'email (validation auto)<input type="email">
numberNombre avec contrôles<input type="number" min="0" max="100">
telNuméro de téléphone<input type="tel">
urlSaisie d'URL<input type="url">
searchChamp de recherche<input type="search">
dateSélecteur de date<input type="date">
timeSélecteur d'heure<input type="time">
datetime-localDate et heure locales<input type="datetime-local">
monthSélecteur mois/année<input type="month">
weekSélecteur semaine<input type="week">
rangeCurseur (slider)<input type="range" min="0" max="100">
colorSélecteur de couleur<input type="color">
fileSélection de fichier<input type="file" accept="image/*">
hiddenChamp invisible<input type="hidden" value="abc">
checkboxCase à cocher<input type="checkbox">
radioBouton radio (sélection unique)<input type="radio" name="choix">

Attributs des inputs

AttributDescription
nameNom du champ (clé dans les données envoyées)
valueValeur par défaut du champ
placeholderTexte d'aide grisé
requiredChamp obligatoire
disabledChamp désactivé
readonlyChamp en lecture seule
min / maxValeurs min/max (nombre, date)
minlength / maxlengthLongueur min/max du texte
patternExpression régulière de validation
autofocusFocus automatique au chargement
autocompleteAutoriser l'autocomplétion
multipleAutoriser plusieurs valeurs
HTML
<form action="/submit" method="POST">
    <fieldset>
        <legend>Informations</legend>
        <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" placeholder="nom@example.com">

        <label for="mdp">Mot de passe :</label>
        <input type="password" id="mdp" name="mdp" minlength="8">

        <label for="pays">Pays :</label>
        <select id="pays" name="pays">
            <option value="">-- Choisir --</option>
            <option value="FR">France</option>
            <option value="BE">Belgique</option>
        </select>

        <textarea name="message" rows="4" cols="50"></textarea>
        <button type="submit">Envoyer</button>
    </fieldset>
</form>

Éléments sémantiques

Les éléments sémantiques donnent un sens au contenu, améliorant l'accessibilité et le SEO.

BaliseDescription
<header>En-tête d'une section ou de la page
<nav>Bloc de navigation
<main>Contenu principal (unique par page)
<section>Section thématique du contenu
<article>Contenu autonome (article, post)
<aside>Contenu secondaire (sidebar)
<footer>Pied d'une section ou de la page
<figure>Contenu illustré (image, graphique)
<figcaption>Légende d'une figure
<details>Contenu pliable/dépliable
<summary>Résumé d'un élément details
<mark>Texte surligné/mis en avant
<time>Date ou heure (machine-readable)
<progress>Barre de progression
<meter>Jauge / mesure scalaire
HTML
<header>
    <nav><a href="/">Accueil</a></nav>
</header>
<main>
    <article>
        <h2>Mon Article</h2>
        <time datetime="2026-01-15">15 janvier 2026</time>
        <p>Contenu...</p>
        <figure>
            <img src="photo.jpg" alt="Description">
            <figcaption>Légende</figcaption>
        </figure>
    </article>
    <aside><h3>Articles connexes</h3></aside>
</main>
<footer><p>&copy; 2026</p></footer>

Formatage de texte

BaliseDescriptionRendu
<strong>Texte important (gras sémantique)Gras
<b>Gras sans importance sémantiqueGras
<em>Accentuation (italique sémantique)Italique
<i>Italique sans importance sémantiqueItalique
<mark>Texte surlignéSurligné
<small>Texte de petite taillePetit
<del>Texte supprimé (barré)Supprimé
<ins>Texte inséré (souligné)Inséré
<s>Texte obsolète (barré)Obsolète
<sub>Indice (subscript)H2O
<sup>Exposant (superscript)x2
<code>Code en lignecode
<kbd>Entrée clavierCtrl+C
<samp>Sortie d'un programmeError
<var>Variable mathématiquex + y
<abbr>AbréviationHTML
<blockquote>Citation longueCitation en bloc
<q>Citation courteCitation inline
<cite>Titre d'une œuvreTitre cité

Médias

BaliseDescriptionAttributs clés
<video>Lecteur vidéo intégrésrc, controls, autoplay, muted, loop, poster
<audio>Lecteur audio intégrésrc, controls, autoplay, muted, loop
<source>Source alternative (dans video/audio)src, type
<iframe>Page web intégréesrc, width, height, allowfullscreen, loading
<svg>Graphiques vectoriels SVGviewBox, width, height
<canvas>Surface de dessin (via JS)width, height
<picture>Conteneur pour sources d'imageContient <source> et <img>
HTML
<!-- Vidéo -->
<video controls width="640" poster="thumb.jpg">
    <source src="video.mp4" type="video/mp4">
    <source src="video.webm" type="video/webm">
    Votre navigateur ne supporte pas la vidéo.
</video>

<!-- Audio -->
<audio controls loop>
    <source src="musique.mp3" type="audio/mpeg">
</audio>

<!-- Iframe (YouTube) -->
<iframe width="560" height="315" src="https://youtube.com/embed/ID"
    allowfullscreen loading="lazy"></iframe>

<!-- Canvas -->
<canvas id="monCanvas" width="400" height="300"></canvas>

<!-- SVG -->
<svg viewBox="0 0 100 100" width="100">
    <circle cx="50" cy="50" r="40" fill="purple"/>
</svg>

Attributs universels

AttributDescriptionExemple
idIdentifiant unique de l'élément<div id="header">
classClasse(s) CSS (une ou plusieurs)<div class="container active">
styleStyles CSS en ligne<p style="color: red;">
titleInfobulle au survol<span title="Info">
data-*Données personnalisées<div data-user-id="42">
hiddenMasque l'élément<div hidden>
tabindexOrdre de navigation clavier<button tabindex="0">
contenteditableRend l'élément éditable<div contenteditable>
draggableRend l'élément glissable<img draggable="true">
langLangue de l'élément<span lang="en">
Les data attributes

Les attributs data-* stockent des données personnalisées accessibles via JS : element.dataset.userId pour data-user-id="42".

Sélecteurs CSS

Les sélecteurs ciblent les éléments HTML pour leur appliquer des styles.

SélecteurDescriptionExemple
*Sélecteur universel* { margin: 0; }
typePar nom de balisep { color: red; }
.classPar classe.container { max-width: 1200px; }
#idPar ID unique#header { position: fixed; }
A BDescendantdiv p { }
A > BEnfant directnav > a { }
A + BFrère adjacenth2 + p { }
A ~ BFrères suivantsh2 ~ p { }
[attr]Avec l'attribut[target] { }
[attr="val"]Attribut = valeur[type="text"] { }
:hoverSurvol sourisa:hover { color: red; }
:activeClic en coursbutton:active { }
:focusFocus clavierinput:focus { }
:first-childPremier enfantli:first-child { }
:last-childDernier enfantli:last-child { }
:nth-child(n)Enfant position nli:nth-child(2n) { }
:nth-of-type(n)ne de son typep:nth-of-type(odd) { }
:not(sel)Sauf ce sélecteur:not(.hidden) { }
::beforePseudo-élément avanth2::before { content: "→"; }
::afterPseudo-élément aprèsa::after { content: " ↗"; }
::first-linePremière lignep::first-line { font-weight: bold; }
::first-letterPremière lettrep::first-letter { font-size: 2em; }
::selectionTexte sélectionné::selection { background: purple; }
Spécificité

Priorité : !important > inline > #id > .class > type > *. Utilisez le moins de spécificité possible.

Modèle de boîte (Box Model)

PropriétéDescriptionExemple
width / heightTaille du contenuwidth: 200px;
min-width / max-widthTaille min/maxmax-width: 1200px;
min-height / max-heightHauteur min/maxmin-height: 100vh;
paddingEspace intérieurpadding: 16px 24px;
borderBordureborder: 1px solid #ccc;
border-radiusArrondi des coinsborder-radius: 8px;
marginEspace extérieurmargin: 0 auto;
box-sizingInclure padding/border dans la taillebox-sizing: border-box;
overflowDébordementoverflow: hidden;
overflow-x / overflow-yDébordement par axeoverflow-x: auto;
CSS
* { box-sizing: border-box; }

.card {
    width: 300px;
    padding: 20px;
    margin: 16px 0;
    border: 1px solid #ddd;
    border-radius: 8px;
}

Flexbox

Modèle de disposition unidimensionnel pour aligner et distribuer l'espace entre les éléments.

PropriétéDescriptionValeurs courantes
displayActive Flexboxflex, inline-flex
flex-directionDirection des élémentsrow, column, row-reverse, column-reverse
justify-contentAlignement horizontalflex-start, center, space-between, space-around, space-evenly
align-itemsAlignement verticalflex-start, center, flex-end, stretch, baseline
align-selfAlignement d'un enfantMêmes valeurs que align-items
flex-wrapRenvoi à la lignenowrap, wrap, wrap-reverse
gapEspace entre élémentsgap: 16px;
flex-growAgrandissement1 (grandit), 0 (non)
flex-shrinkRéduction1 (rétrécit), 0 (non)
flex-basisTaille de baseauto, 0, 200px
flexRaccourci grow shrink basisflex: 1, flex: 0 1 auto
orderOrdre d'affichageNombre entier (défaut: 0)
CSS
.container {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
}
.sidebar { flex: 0 0 250px; }
.main    { flex: 1; }

Grid

Modèle bidimensionnel pour créer des mises en page en lignes et colonnes.

PropriétéDescriptionExemple
displayActive Griddisplay: grid;
grid-template-columnsDéfinit les colonnes200px 1fr 1fr
grid-template-rowsDéfinit les lignesauto 1fr auto
gapEspace entre cellulesgap: 20px;
grid-columnPosition de colonnegrid-column: 1 / 3;
grid-rowPosition de lignegrid-row: 1 / 2;
grid-areaNommage de zonegrid-area: header;
grid-template-areasLayout visuel nommé"header header" "sidebar main";
grid-auto-rowsTaille des lignes autominmax(100px, auto)
justify-itemsAlignement cellule Hstart, center, end, stretch
align-itemsAlignement cellule Vstart, center, end, stretch
justify-contentAlignement grille Hstart, center, space-between
align-contentAlignement grille Vstart, center, space-between
CSS
.layout {
    display: grid;
    grid-template-columns: 250px 1fr;
    gap: 32px;
}

.page {
    display: grid;
    grid-template-areas:
        "header  header"
        "sidebar main"
        "footer  footer";
    grid-template-columns: 250px 1fr;
}
.header  { grid-area: header; }
.sidebar { grid-area: sidebar; }
.main    { grid-area: main; }

.grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: 20px;
}
Unité fr

1fr 2fr donne 1/3 à la première colonne, 2/3 à la seconde.

Position

ValeurDescriptionDécalage
staticDéfaut (flux normal)Ignoré
relativeRelatif à sa positionDécalage visible, espace préservé
absoluteParent positioned le plus procheHors du flux normal
fixedFixé par rapport à la fenêtreReste en place au scroll
stickyAlternance relative/fixedSe fixe au scroll
CSS
.navbar {
    position: fixed;
    top: 0; left: 0; right: 0;
    z-index: 1000;
}
.sidebar {
    position: sticky;
    top: 72px;
    height: calc(100vh - 72px);
}
.overlay {
    position: fixed;
    top: 0; left: 0;
    width: 100%; height: 100%;
    background: rgba(0,0,0,0.5);
    z-index: 2000;
}

Responsive Design

BREAKPOINTAppareil@media
< 480pxMobile petit@media (max-width: 479px)
< 768pxMobile / Tablette@media (max-width: 767px)
< 1024pxTablette@media (max-width: 1023px)
< 1200pxDesktop@media (max-width: 1199px)
> 1200pxGrand écran@media (min-width: 1200px)
CSS
.grid {
    display: grid;
    grid-template-columns: 1fr;
}
@media (min-width: 768px) {
    .grid { grid-template-columns: 1fr 1fr; }
}
@media (min-width: 1024px) {
    .grid { grid-template-columns: 1fr 1fr 1fr; }
}

Animations et transitions

PropriétéDescriptionExemple
transitionTransition doucetransition: all 0.3s ease;
transition-propertyPropriétés à animerbackground, transform;
transition-durationDurée0.3s, 300ms
transition-timing-functionCourbeease, linear, ease-in-out
transition-delayDélai0.1s
animationApplique @keyframesanimation: fadeIn 0.5s ease forwards;
@keyframesDéfinit les étapes@keyframes fade { from { opacity:0; } }
transformForme/positionrotate(45deg) scale(1.2);

Transformations courantes

FonctionDescriptionExemple
translate(x, y)Déplacementtransform: translate(20px, -10px);
scale(x, y)Agrandissementtransform: scale(1.5);
rotate(angle)Rotationtransform: rotate(45deg);
skew(x, y)Inclinaisontransform: skew(5deg, 2deg);
matrix()Combinéetransform: matrix(1,0,0,1,0,0);
CSS
.btn {
    transition: all 0.25s ease;
}
.btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 16px rgba(139,92,246,0.3);
}

@keyframes fadeIn {
    from { opacity: 0; transform: translateY(20px); }
    to   { opacity: 1; transform: translateY(0); }
}
.card { animation: fadeIn 0.5s ease forwards; }

@keyframes spin {
    to { transform: rotate(360deg); }
}
.loader { animation: spin 1s linear infinite; }

Variables CSS (Custom Properties)

CSS
:root {
    --primary: #8b5cf6;
    --text: #f0f0ff;
    --bg: #0f0f1a;
    --radius: 8px;
    --spacing: 16px;
}
.card {
    background: var(--bg);
    color: var(--text);
    border-radius: var(--radius);
    padding: var(--spacing);
}
.box {
    color: var(--custom, #333);
}

Typographie

PropriétéDescriptionExemple
font-familyFamille de policesfont-family: 'Inter', sans-serif;
font-sizeTaille1rem, clamp(1rem, 3vw, 2rem)
font-weightÉpaisseur400, 700, 800
font-styleStylenormal, italic
line-heightInterligne1.6, 150%
letter-spacingEspace lettres0.5px, -0.02em
text-alignAlignementleft, center, right, justify
text-decorationDécorationnone, underline, line-through
text-transformCasseuppercase, lowercase, capitalize
text-overflowDépassementellipsis, clip
white-spaceEspacesnowrap, pre, pre-wrap
word-breakCasse motsbreak-all, break-word
text-shadowOmbre texte2px 2px 4px rgba(0,0,0,0.3);
directionSensltr, rtl

Couleurs et arrière-plans

PropriétéDescriptionExemple
colorCouleur textecolor: #fff;
background-colorCouleur fondbackground-color: rgba(0,0,0,0.5);
backgroundRaccourcibackground: url('img.jpg') center/cover;
background-imageImage de fondbackground-image: url('bg.png');
background-sizeTaille imagecover, contain
background-positionPositioncenter, top left
background-repeatRépétitionno-repeat, repeat-x
background-attachmentScrollfixed, scroll
opacityTransparence0.5
box-shadowOmbre0 4px 24px rgba(0,0,0,0.3);
backdrop-filterFiltre arrièrebackdrop-filter: blur(20px);
filterFiltre visuelfilter: grayscale(100%);
CSS
.gradient {
    background: linear-gradient(135deg, #8b5cf6, #a855f7);
}
.gradient-text {
    background: linear-gradient(135deg, #8b5cf6, #a855f7);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
}
.glass {
    background: rgba(255,255,255,0.05);
    backdrop-filter: blur(20px);
    border: 1px solid rgba(255,255,255,0.1);
}

Référence rapide CSS

PropriétéDescriptionValeurs courantes
displayAffichageblock, inline, flex, grid, none
visibilityVisibilitévisible, hidden
cursorCurseurpointer, default, not-allowed
z-indexEmpilementEntier (positioned uniquement)
object-fitAjustement imagecover, contain, fill
pointer-eventsInteractions sourisauto, none
clip-pathDécoupecircle(50%), polygon()
aspect-ratioRatio16/9, 1
user-selectSélectionnone, all
list-styleListesnone, disc, decimal
outlineContour2px solid purple;
appearanceApparence nativenone
CSS Fonctions utiles

calc() : calculs (calc(100% - 40px)). min() / max() : valeur bornée. clamp() : valeur entre min et max. var() : variable custom. url() : ressource externe.

Variables

Mot-cléPortéeRéassignableHérité
letBloc { }OuiNon
constBloc { }NonNon
varFonctionOuiNon
JavaScript
let nom = "Alice";        // Réassignable
const age = 25;            // Non réassignable
var ancien = true;         // À éviter

// Destructuring
const [a, b] = [1, 2];
const { nom: n, age: a } = { nom: "Bob", age: 30 };

// Template literals
const msg = `Bonjour ${nom}, ${age} ans`;

// Spread operator
const arr2 = [...arr, 3, 4];
const obj2 = { ...obj, nouveau: true };
const vs let

Utilisez const par défaut. let uniquement pour la réassignation. Évitez var.

Types de données

TypeDescriptionExemple
stringChaîne de caractères"Bonjour", 'Hello', `Template`
numberNombre42, 3.14, NaN, Infinity
booleanVrai / Fauxtrue, false
nullValeur absentelet x = null;
undefinedSans valeurlet x; // undefined
objectCollection clé-valeur{ nom: "Alice" }
arrayTableau ordonné[1, 2, 3]
functionFonction() => {}
symbolIdentifiant uniqueSymbol("id")
bigintGrand entier9007199254740991n
JavaScript
typeof "hello"    // "string"
typeof 42         // "number"
typeof true      // "boolean"
typeof null      // "object"  (bug historique)
typeof undefined // "undefined"
typeof []        // "object"
typeof {}        // "object"

Array.isArray([])      // true
"hello".length         // 5
42.toString()         // "42"
parseInt("42")       // 42
parseFloat("3.14")   // 3.14
String(42)           // "42"
Number("42")         // 42
Boolean(1)           // true

Opérateurs

CatégorieOpérateursDescription
Aritmétique+ - * / % **Addition, soustraction, multiplication, division, modulo, puissance
Affectation= += -= *= /= %=Affectation combinée
Comparaison== === != !==Égalité (faible/stricte), différence
Logique&& || !ET, OU, NON
Ternaire? :Condition inline
Nul coalescent??Valeur alternative si null/undefined
Optional chaining?.Accès sécurisé
Typetypeof instanceofVérification type
JavaScript
5 == "5"    // true  (conversion)
5 === "5"   // false (types différents)

const v = null ?? "défaut";  // "défaut"
const v2 = 0 ?? "défaut";    // 0

const ville = user?.address?.city;  // undefined si nul

const role = age >= 18 ? "majeur" : "mineur";

Conditions

StructureDescription
if / else if / elseCondition principale
switchMultiple valeurs
?: (ternaire)Condition inline
JavaScript
if (age >= 18) {
    console.log("Majeur");
} else if (age >= 16) {
    console.log("Presque majeur");
} else {
    console.log("Mineur");
}

switch (jour) {
    case "lundi":
    case "mardi":
        console.log("Début semaine");
        break;
    case "vendredi":
        console.log("Week-end !");
        break;
    default:
        console.log("Autre jour");
}

const r = score >= 10 ? "Réussite" : "Échec";

Boucles

BoucleUsageSyntaxe
forClassique avec compteurfor (let i = 0; i < 10; i++) {}
whileTant que condition vraiewhile (condition) {}
do...whileAu moins une foisdo {} while (condition);
for...ofValeurs d'un itérablefor (const item of array) {}
for...inClés d'un objetfor (const key in obj) {}
breakSort de la bouclebreak;
continueItération suivantecontinue;
JavaScript
for (let i = 0; i < 5; i++) {
    console.log(i);
}

const fruits = ["pomme", "banane", "cerise"];
for (const fruit of fruits) {
    console.log(fruit);
}

const user = { nom: "Alice", age: 25 };
for (const cle in user) {
    console.log(cle, user[cle]);
}

Fonctions

SyntaxeDescription
function nom() {}Déclaration de fonction
const nom = function() {}Expression de fonction
const nom = () => {}Fonction fléchée (arrow function)
param = valeurParamètres par défaut
...argsParamètres rest (tableau)
() => expressionRetour implicite
JavaScript
function saluer(nom) {
    return `Bonjour ${nom} !`;
}

const add = (a, b) => a + b;

const accueillir = (nom = "Visiteur") => `Bonjour ${nom}`;

const somme = (...nombres) => {
    return nombres.reduce((a, b) => a + b, 0);
};
somme(1, 2, 3); // 6

const executer = (fn) => fn();
executer(() => "Hello !");

Tableaux - Méthodes

Les méthodes de tableaux sont essentielles pour manipuler des collections de données.

MéthodeDescriptionRetourne
.push()Ajoute un élément en finNouvelle longueur
.pop()Retire le dernier élémentÉlément retiré
.shift()Retire le premier élémentÉlément retiré
.unshift()Ajoute un élément en débutNouvelle longueur
.splice()Ajoute/supprime à une positionÉléments supprimés
.slice()Extrait une portionNouveau tableau
.concat()Fusionne des tableauxNouveau tableau
.includes()Présence d'un élémenttrue / false
.indexOf()Index du premier trouvéNombre ou -1
.find()Premier élément satisfaisant le testÉlément ou undefined
.findIndex()Index du premier trouvéNombre ou -1
.filter()Filtre les élémentsNouveau tableau
.map()Transforme chaque élémentNouveau tableau
.forEach()Exécute pour chaqueundefined
.reduce()Réduit à une seule valeurValeur accumulée
.sort()Trie les élémentsTableau trié (muté)
.reverse()Inverse l'ordreTableau inversé (muté)
.flat()Aplatit un tableauNouveau tableau
.some()Au moins un passe le testtrue / false
.every()Tous passent le testtrue / false
.join()Joint en chaîneString
.keys()IndexIterator
.values()ValeursIterator
.entries()Paires [index, valeur]Iterator
Array.from()Crée depuis un itérableNouveau tableau
Array.isArray()Vérifie si tableautrue / false
JavaScript
const nums = [1, 2, 3, 4, 5];

// Filter : garde les pairs
const pairs = nums.filter(n => n % 2 === 0); // [2, 4]

// Map : double chaque valeur
const doubled = nums.map(n => n * 2); // [2, 4, 6, 8, 10]

// Reduce : somme
const sum = nums.reduce((acc, n) => acc + n, 0); // 15

// Find
const found = nums.find(n => n > 3); // 4

// Chaining
const result = nums
    .filter(n => n > 2)
    .map(n => n * 10)
    .reduce((a, b) => a + b, 0); // 120

// Sort
const letters = ["c", "a", "b"];
letters.sort(); // ["a", "b", "c"]

nums.sort((a, b) => b - a); // Décroissant

// Push / Pop
nums.push(6);   // Ajoute 6 en fin
nums.pop();     // Retire le dernier

// Slice
const sub = nums.slice(1, 3); // Éléments index 1 et 2

// Splice
nums.splice(1, 2); // Supprime 2 éléments à partir de l'index 1
nums.splice(1, 0, 99); // Insère 99 à l'index 1

// Join
"hello".split("").join("-"); // "h-e-l-l-o"

Objets

JavaScript
const user = {
    nom: "Alice",
    age: 25,
    saluer() {
        return `Je suis ${this.nom}`;
    }
};

// Accès
user.nom;          // "Alice"
user["age"];      // 25
user.saluer();   // "Je suis Alice"

// Ajouter / Modifier
user.email = "alice@mail.com";
user.age = 26;

// Supprimer
delete user.age;

// Vérifier
"nom" in user;         // true
user.hasOwnProperty("nom"); // true

// Clés / Valeurs
Object.keys(user);    // ["nom", "email"]
Object.values(user);  // ["Alice", "alice@mail.com"]
Object.entries(user); // [["nom","Alice"], ["email","alice@mail.com"]]

// Destructuring
const { nom, email } = user;

// Spread
const copie = { ...user, age: 30 };
MéthodeDescription
Object.keys(obj)Retourne un tableau des clés
Object.values(obj)Retourne un tableau des valeurs
Object.entries(obj)Retourne un tableau de paires [clé, valeur]
Object.assign(target, ...sources)Copie les propriétés
Object.freeze(obj)Empêche la modification
Object.keys(obj).lengthNombre de propriétés

DOM (Document Object Model)

Le DOM permet de manipuler le contenu HTML via JavaScript.

MéthodeDescriptionRetourne
getElementById("id")Cible par IDÉlément ou null
querySelector(".sel")Premier élément correspondantÉlément ou null
querySelectorAll(".sel")Tous les éléments correspondantsNodeList
getElementsByClassName("cls")Par classeHTMLCollection
getElementsByTagName("tag")Par baliseHTMLCollection
createElement("tag")Crée un élémentNouvel élément
createTextNode("text")Crée un nœud texteNœud texte
appendChild(el)Ajoute un enfantL'élément ajouté
prepend(el)Ajoute au débutL'élément ajouté
append(el)Ajoute à la finL'élément ajouté
insertBefore(new, ref)Insère avant un référentL'élément ajouté
removeChild(el)Supprime un enfantÉlément supprimé
replaceChild(new, old)Remplace un enfantAncien élément
cloneNode(deep)Clone un élémentCopie de l'élément
closest(".sel")Plus proche ancêtre correspondantÉlément ou null
matches(".sel")Vérifie si l'élément correspondtrue / false
PropriétéDescription
textContentTexte brut de l'élément
innerHTMLContenu HTML interne
innerTextTexte visible (avec style)
outerHTMLHTML complet de l'élément
classNameChaîne de classes
classListAPI de classes (add, remove, toggle, contains)
idID de l'élément
styleObjet de styles en ligne
datasetObjet des attributs data-*
parentNodeÉlément parent
childrenÉléments enfants
firstElementChildPremier enfant
lastElementChildDernier enfant
nextElementSiblingFrère suivant
previousElementSiblingFrère précédent
offsetWidth / offsetHeightTaille avec padding/border
clientWidth / clientHeightTaille avec padding (sans bordure/scroll)
JavaScript
// Sélectionner
const btn = document.querySelector("#myBtn");
const items = document.querySelectorAll(".item");

// Créer et ajouter
const div = document.createElement("div");
div.textContent = "Bonjour !";
div.classList.add("card");
document.body.appendChild(div);

// Classes
div.classList.add("active");
div.classList.remove("hidden");
div.classList.toggle("visible");
div.classList.contains("active"); // true

// Styles
div.style.color = "red";
div.style.backgroundColor = "#333";

// Data attributes
div.dataset.userId = "42";
console.log(div.dataset.userId); // "42"

// Parcourir
items.forEach(item => {
    console.log(item.textContent);
});

Événements

ÉvénementDescription
clickClic souris
dblclickDouble clic
mousedown / mouseupBouton enfoncé / relâché
mouseenter / mouseleaveSouris entre / quitte l'élément
mousemoveMouvement souris
mouseover /mouseoutSouris au-dessus / dehors
keydown / keyupTouche enfoncée / relâchée
keypressTouche pressée (obsolète)
submitEnvoi de formulaire
changeValeur modifiée et validée
inputModification de valeur (temps réel)
focus / blurFocus / perte de focus
scrollDéfilement
resizeRedimensionnement fenêtre
loadRessource chargée
DOMContentLoadedDOM prêt (sans images)
touchstart / touchendDébut / fin touche tactile
touchmoveMouvement tactile
drag / dragstart / dragendGlisser-déposer
copy / pasteCopier / Coller
JavaScript
const btn = document.querySelector("button");

// addEventListener
btn.addEventListener("click", (e) => {
    console.log(e.target);
    console.log(e.type);
    e.preventDefault(); // Empêche le comportement par défaut
});

// Clavier
document.addEventListener("keydown", (e) => {
    console.log(e.key);     // "Enter", "Escape", "a"...
    console.log(e.code);     // "Enter", "KeyA"...
    console.log(e.altKey);   // true si Alt enfoncé
    console.log(e.ctrlKey);  // true si Ctrl enfoncé
    console.log(e.shiftKey); // true si Shift enfoncé
});

// Supprimer un écouteur
function handler(e) { console.log("click"); }
btn.addEventListener("click", handler);
btn.removeEventListener("click", handler);

// Événement au document
document.addEventListener("DOMContentLoaded", () => {
    console.log("DOM prêt !");
});

JSON

JSON (JavaScript Object Notation) est un format d'échange de données universel.

MéthodeDescriptionExemple
JSON.stringify(obj)Objet vers chaîne JSON'{"nom":"Alice"}'
JSON.parse(str)Chaîne JSON vers objet{ nom: "Alice" }
JavaScript
// Sérialiser
const user = { nom: "Alice", age: 25 };
const json = JSON.stringify(user);
console.log(json); // '{"nom":"Alice","age":25}'

// Avec indentation
const pretty = JSON.stringify(user, null, 2);

// Désérialiser
const obj = JSON.parse(json);
console.log(obj.nom); // "Alice"

// Sauvegarder / Charger du localStorage
localStorage.setItem("user", JSON.stringify(user));
const saved = JSON.parse(localStorage.getItem("user"));

Async / Await & Fetch

JavaScript est asynchrone par nature. Ces outils gèrent les opérations qui prennent du temps (réseau, timers).

ConceptDescription
PromiseObjet représentant un résultat futur
asyncDéclare une fonction asynchrone
awaitAttend la résolution d'une Promise
fetch()Requête HTTP
setTimeout()Exécute après un délai
setInterval()Exécute à intervalle régulier
clearTimeout()Annule un setTimeout
clearInterval()Annule un setInterval
Promise.all()Attend toutes les promises
Promise.race()La première qui résout
Promise.allSettled()Attend que toutes soient terminées
JavaScript
// Promise
const maPromise = new Promise((resolve, reject) => {
    setTimeout(() => {
        resolve("Succès !");
        // reject(new Error("Erreur !"));
    }, 2000);
});

maPromise
    .then(result => console.log(result))
    .catch(err => console.error(err));

// Async / Await
async function chargerData() {
    try {
        const response = await fetch("https://api.example.com/data");
        const data = await response.json();
        console.log(data);
    } catch (err) {
        console.error("Erreur :", err);
    }
}

// Fetch POST
const response = await fetch("/api/users", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ nom: "Alice" })
});

// Promises en parallèle
const [users, posts] = await Promise.all([
    fetch("/api/users").then(r => r.json()),
    fetch("/api/posts").then(r => r.json())
]);
async/await

await ne fonctionne que dans une fonction async. Il simplifie la lecture du code asynchrone par rapport à .then().

Gestion d'erreurs

Mot-cléDescription
tryBloc de code à essayer
catch (err)Gère l'erreur si elle survient
finallyS'exécute toujours (avec ou sans erreur)
throwLance une erreur personnalisée
JavaScript
try {
    const data = JSON.parse(input);
} catch (err) {
    console.error("JSON invalide:", err.message);
} finally {
    console.log("Toujours exécuté");
}

// Lancer une erreur
function diviser(a, b) {
    if (b === 0) {
        throw new Error("Division par zéro !");
    }
    return a / b;
}

// Types d'erreurs
throw new TypeError("Type incorrect");
throw new ReferenceError("Variable non définie");
throw new RangeError("Valeur hors limites");
throw new SyntaxError("Syntaxe incorrecte");
Bonnes pratiques

N'utilisez jamais try/catch pour contrôler le flux. Utilisez-le uniquement pour les erreurs imprévues (réseau, JSON, accès DOM). Toujours catcher les erreurs dans les fonctions async.