Les différences entre HTML, CSS et JavaScript — ce que dessine la couche serveur Web

Cet article fait partie du cours Les bases de l'informatique, qui construit depuis zéro les connaissances informatiques pratiques indispensables pour programmer et faire du vibe coding.
HTML fixe ce qu'il y a à l'écran, CSS son apparence, et JavaScript sa réaction à ce que tu fais. Des schémas montrent comment les trois deviennent un seul écran.

Cet article traite des trois éléments qui composent la couche serveur Web : HTML, CSS et JavaScript.

On les écrit à des endroits séparés — index.html, style.css et script.js — parce que ce qu'ils décident est différent.

Ce que décide chacun des trois fichiers
index.htmlstyle.cssscript.jsCe qu'il y atypes et ordreL'apparencecouleur/taille/placeLa réactionaux actionsPlacer le bouton« Réserver »Bouton bleuà coins arrondisSi pressé,afficher un texteArrive en 1erRécupéré en 2eRécupéré en 2e
La colonne de gauche donne le fichier, celle du milieu ce qu'il décide, et celle de droite un exemple pour le bouton « Réserver ». Tout à droite, l'ordre dans lequel le navigateur les lit. Les trois lignes décident des choses différentes à propos d'un seul et même bouton.

Les trois fichiers n'arrivent pas ensemble.

Le navigateur reçoit les trois fichiers, et c'est lui qui les charge et les exécute.

HTML écrit ce qu'il y a à l'écran, par types de composants et par ordre

HTML (HyperText Markup Language : le langage qui écrit ce qu'il y a à l'écran, par types de composants et par ordre) s'écrit dans index.html.

Chaque composant de l'écran est un élément (element), les noms et les réglages attachés à un élément sont des attributs (attribute), et les signes qui marquent le début et la fin d'un élément sont des balises (tag).

L'index.html du formulaire de réservation est fait de ces trois choses.

<form>
  <input type="date">
  <button type="button" id="reserve" class="action">Réserver</button>
  <p id="message"></p>
</form>

id et class sont les noms qui serviront plus tard à CSS et à JavaScript pour choisir un composant.

Un id ne s'utilise qu'une seule fois par page, alors qu'une class peut être posée sur autant d'éléments que tu veux.

Les éléments peuvent s'imbriquer, et l'élément button se trouve à l'intérieur de l'élément form.

L'imbrication dans index.html
élément html — la page entière
élément head — non affiché à l'écran
  • Le titre de la page
  • Les noms de fichiers style.css et script.js
élément body — affiché à l'écran
  • Le titre « Réservation »
élément form — le formulaire de réservation
  • élément input — le champ de date
  • élément button — le bouton « Réserver »
  • élément p — un emplacement au contenu vide
Le cadre extérieur est l'élément html de la page entière. L'élément head contient des informations qui n'apparaissent pas à l'écran, et seul ce que tu écris dans l'élément body s'affiche.

L'élément head contient le titre de la page et les noms des fichiers utilisés, et seul l'intérieur de l'élément body apparaît à l'écran.

index.html écrit seulement ce qu'il y a

Tout ce que tu écris dans index.html, c'est ce qu'il y a à l'écran.

Une balise indique le type de chaque composant, et tu écris le contenu ainsi que l'ordre dans lequel les composants se suivent ; les id et class posés sur la balise ouvrante sont les noms qui serviront plus tard à un autre fichier pour choisir ce composant.

CSS regroupe l'apparence des éléments dans un fichier séparé

CSS (Cascading Style Sheets : le langage qui écrit comment montrer les éléments HTML, sous forme de règles de couleur, de taille et de placement) ne décide que l'apparence.

style.css a la forme suivante.

.action {
  background-color: #2a6f97;
  color: white;
  border-radius: 8px;
}

Le .action du début indique à quels éléments la règle s'applique.

Les trois lignes entre accolades s'appliquent à tous les éléments dont la class est action.

Dans style.css, tu alignes de nombreuses règles de ce genre.

Les règles alignées dans style.css
style.css
Règles pour body
  • Couleur de fond de la page entière
  • Taille du texte
Règles pour .action — les éléments dont la class est action
  • Couleur de fond #2a6f97
  • Couleur du texte white
  • Arrondi des coins 8px
Règles pour #message — l'élément dont l'id est message
  • Couleur du texte
  • Marge du haut
Un seul fichier contient les règles, une par cible, alignées les unes après les autres. Ce qui se trouve entre chaque paire d'accolades est l'apparence appliquée à cette cible.

Quand un même écran comporte trois boutons, le nombre de corrections à faire pour changer la couleur dépend de l'endroit où tu as écrit l'apparence.

Où l'apparence est écriteEndroits à corriger pour changer la couleurRésultat sur les trois boutons
L'attribut style de chaque buttonCorriger 3 endroitsSi tu en oublies un, les couleurs ne correspondent plus
.action dans style.cssCorriger 1 endroitLes trois passent à la même couleur
#reserve dans style.cssCorriger 1 endroitSeul celui qui porte l'id change

Tu peux aussi écrire l'apparence dans l'attribut style d'un élément, mais tu répètes alors le même changement autant de fois qu'il y a d'éléments.

Regroupe-la dans style.css et il n'y a qu'un seul endroit à corriger.

style.css choisit par le nom et décide de l'apparence

Tout ce que fait style.css, c'est énumérer quels composants sont montrés de quelle façon.

Le composant est choisi par le nom de class ou d'id posé dans index.html, et style.css n'ajoute pas de composants et ne réécrit pas le texte.

JavaScript réagit aux actions et réécrit l'écran

Un écran fait uniquement de HTML et de CSS ne change plus de contenu une fois affiché.

Afficher un texte quand le bouton est pressé, c'est le travail de JavaScript dans la couche serveur Web.

script.js a la forme suivante.

const button = document.querySelector("#reserve");
button.addEventListener("click", () => {
  document.querySelector("#message").textContent = "Ta réservation a été envoyée";
});

Le document de la première ligne est le nom qui désigne la page entière chargée par le navigateur.

Le #reserve qui suit est la façon d'écrire pour choisir l'élément dont l'id est reserve, et le signe placé devant le nom indique s'il s'agit d'une class ou d'un id.

Les trois fichiers sont reliés par les noms posés dans index.html.

Les noms posés dans index.html et la façon de les écrire pour choisir
===class="action".actionRègles d'apparencedans style.cssid="reserve"#reserveClic enregistrédans script.jsid="message"#messageCible réécritepar script.js
Les deux cases reliées par un double trait portent le même nom. À gauche, le nom écrit dans index.html ; au milieu, la façon de l'écrire pour choisir ; à droite, l'endroit où cette forme est utilisée.

L'addEventListener de la deuxième ligne enregistre ce qu'il faut faire lors d'un click.

Le () => { } qui suit est la forme dans laquelle tu écris, entre les accolades, le code à exécuter quand le bouton est pressé.

Une action de l'utilisateur que le navigateur signale au programme, comme ce clic, est un événement (event).

Le clic n'est pas le seul type d'événement.

Quelle que soit l'action, c'est le navigateur qui la détecte
Presser un boutonSaisir du textedans un champEnvoi du formulaireLe navigateurle détecteLe code enregistrés'exécuteclickinputsubmit
Les flèches partant des trois cases de gauche convergent vers le centre. Le texte de chaque flèche est le nom de l'événement, et le code de script.js est appelé ensuite.

Tu enregistres à l'avance ce qu'il faut faire pour chaque événement.

Le changement de couleur au passage de la souris vient du CSS, et l'envoi du formulaire est fait par le navigateur.

script.js arrive lui aussi dans le navigateur de l'utilisateur et son contenu est lisible, donc tu n'y écris pas de valeurs que les autres ne doivent pas voir.

script.js ne s'exécute qu'une fois appelé

Tout ce que fait script.js, c'est enregistrer à l'avance : quand ceci est pressé, fais cela.

Le code que le navigateur appelle au moment de la pression réécrit des composants de l'écran, mais le contenu d'index.html ne change pas, et comme script.js arrive dans le navigateur de l'utilisateur, tu n'y écris pas de valeurs que les autres ne doivent pas voir.

Le navigateur construit le DOM depuis le HTML, applique le CSS et dessine, puis JavaScript le réécrit

Le navigateur n'affiche pas le texte du HTML tel quel : il assemble l'imbrication des éléments sous forme de données.

Ce sont ces données qui forment le DOM (Document Object Model : des données qui rangent les éléments en gardant leur imbrication).

Ce que tu vois à l'écran est un dessin de ce DOM.

Le code enregistré par script.js attend lui aussi dans la même mémoire du navigateur que le DOM.

Le DOM construit dans la mémoire du navigateur
Mémoire du navigateur de l'utilisateur
DOM — imbrication des éléments construite depuis index.html
élément body — la partie affichée à l'écran
  • élément button — contenu « Réserver »
  • élément p — contenu vide
  • Les deux gardent leur id et leur class
Code enregistré par script.js
  • Lors d'un click, réécrire le contenu du p
La même imbrication que dans index.html est assemblée dans la mémoire du navigateur. Le code enregistré par script.js attend dans cette même mémoire.

Les trois fichiers arrivent séparément et se réunissent en un seul DOM à l'intérieur du navigateur.

La page que tu vois à l'écran est un dessin de ce DOM.

Appliquer le CSS au DOM, calculer les positions et les tailles, puis dessiner, c'est le rendu (rendering).

Ce que le navigateur fait du DOM à chaque arrivée et à chaque pression
index.htmlarrivestyle.cssarriveLe boutonest presséRechargerConstruire le DOMdepuis les élémentsAppliquer les règlesau DOM et dessinerscript.js réécritle DOMReconstruire le DOMdepuis le HTMLRien n'estencore dessinéBouton bleu affichéTexte affiché dans pp redevient vide
De haut en bas, dans l'ordre chronologique. À gauche, ce qui s'est passé ; au milieu, ce que fait alors le navigateur ; à droite, l'écran ensuite. Tout en bas, la partie réécrite disparaît.

Seul le DOM dans la mémoire du navigateur est réécrit.

L'index.html arrivé, comme les fichiers posés sur le serveur public, restent tels quels.

Le contenu que tu veux garder est envoyé à la couche serveur d'application et enregistré dans la couche base de données.

L'écriture du JavaScript et la pratique dans le navigateur sont traitées dans le cours d'introduction à JavaScript.

L'écran est un dessin du DOM

Le navigateur assemble l'imbrication des composants depuis l'index.html reçu, puis leur donne couleur et taille avec les règles de style.css et les dessine.

Ce que script.js réécrit, c'est cette version assemblée : en rechargeant, elle est réassemblée depuis les fichiers arrivés et le contenu réécrit disparaît.

QUIZ

Vérification des connaissances

Répondez à chaque question une par une.

Question 1Quel fichier corriges-tu pour changer la couleur de fond du bouton de réservation ?

Question 2Sur quoi CSS et JavaScript s'appuient-ils pour choisir un élément HTML ?

Question 3Quand JavaScript réécrit le texte d'un bouton, qu'est-ce qui change ?