Un client m'a appelé un jour, paniqué, parce que son site « ne marchait plus ». J'ouvre le fichier. Il avait copié un bloc de code JavaScript directement dans son HTML, en espérant que ça « change les couleurs ». Évidemment, ça ne changeait rien du tout. Et c'est là que j'ai compris quelque chose : le problème de la plupart des débutants n'est pas la technique. C'est qu'ils ne savent pas qui fait quoi entre HTML, CSS et JavaScript.
Une fois qu'on tient cette distinction en tête, tout le reste s'écroule de lui-même. Vous lisez un tutoriel, vous codez un peu, et plus rien ne vous paraît magique. Alors voilà la vraie question : quelle est la différence entre HTML, CSS et JavaScript, expliquée simplement ?
Points clés à retenir
- HTML décrit le contenu : les titres, les paragraphes, les images, les liens.
- CSS s'occupe de la présentation : couleurs, tailles, espacements, disposition.
- JavaScript ajoute le comportement : réactions au clic, animations, données chargées à la volée.
- HTML et CSS ne sont pas des langages de programmation : ils décrivent, ils ne calculent pas.
- Les trois vivent séparés dans des fichiers distincts, et c'est volontaire.
- Sans HTML, le CSS et le JavaScript n'ont tout simplement rien sur quoi s'appuyer.
La différence entre HTML, CSS et JavaScript, simplement
Prenons une maison. Pas l'analogie savante, juste la maison de quartier avec sa porte qui grince.
Les murs, les pièces, les fenêtres, la porte : c'est le HTML. Il définit ce qui existe et où ça se trouve. Sans lui, il n'y a pas de bâti.
La peinture, le papier peint, la couleur du carrelage, la position des meubles dans le salon : c'est le CSS. Il ne crée rien, mais il rend l'ensemble vivable — ou insupportable, selon le goût.
Et puis il y a l'électricité. Les interrupteurs, le thermostat, le portail qui s'ouvre à distance. C'est le JavaScript. La maison tient debout sans, mais vous sentez vite qu'il manque quelque chose.
Cette image m'accompagne depuis une formation que j'avais suivie en 2019 et honnêtement, je n'ai jamais trouvé mieux pour expliquer à quelqu'un qui n'a jamais écrit une ligne de code. Le déclic, chez mes élèves, arrive presque toujours au moment où on remplace « peinture » par « CSS ».
Pourquoi on garde les trois séparés
On pourrait tout mettre dans le HTML. Techniquement, ça fonctionne. Et c'est exactement ce que je faisais au début : je stylais chaque balise à la main avec un attribut style, parce que c'était plus rapide sur le moment.
Résultat, au bout de trois mois de projet : 40 % de mon CSS était dupliqué, changer une couleur de bouton me prenait une demi-heure, et je ne retrouvais plus rien.
La séparation sert à ça. Trois responsabilités, trois fichiers, trois endroits où chercher quand ça casse. Quand un titre s'affiche mal, vous ouvrez le CSS. Quand un bouton ne réagit pas, vous ouvrez le JavaScript. Vous ne relisez pas 2 000 lignes pour trouver une virgule.
- Maintenance : modifier la charte graphique se fait dans un seul fichier.
- Performance : le navigateur met le CSS en cache et le réutilise sur toutes les pages.
- Accessibilité : un lecteur d'écran se base sur le HTML, pas sur les couleurs.
- Coopération : un designer peut travailler sur le style pendant qu'un développeur code la logique.
HTML : le squelette de la page
HTML veut dire HyperText Markup Language. Retenez les deux mots importants : markup, c'est-à-dire balisage. On ne programme pas, on décrit. Chaque élément est une balise qui dit : « ceci est un titre », « ceci est une image », « ceci est une liste ».
Un fichier HTML minimal ressemble à ceci :
<h1>Ma boutique de vélos</h1>
<p>Réparation et vente depuis 1998.</p>
<img src="velo.jpg" alt="Un vélo rouge">
<a href="contact.html">Nous contacter</a> Il n'y a aucune logique là-dedans. Pas de condition, pas de boucle, pas de variable. Vous écrivez ce que vous voulez montrer, dans l'ordre où vous voulez le montrer, et le navigateur l'affiche tel quel.
Un détail que beaucoup ignorent : le HTML n'est pas un langage de programmation. C'est une source d'erreurs fréquente, et un recruteur le repère en dix secondes dans une conversation. Le HTML structure. Il ne calcule pas, il ne décide pas, il ne réagit pas.
Ce que le HTML fait vraiment bien
Il porte le sens. Une balise nav autour d'un menu, une balise article autour d'un billet, une balise footer en bas de page. Ces choix n'ont aucun effet visuel par défaut, mais ils disent aux machines — moteurs de recherche, lecteurs d'écran, navigateurs — de quoi il s'agit.
Sur un ancien projet, j'ai repris un site où tout était fait en div. Pas une seule balise sémantique. Notre référencement a progressé de manière visible après le passage aux bonnes balises, parce que Google comprenait enfin la hiérarchie des contenus. Ce n'est pas un gain spectaculaire, mais c'est gratuit, alors autant le faire.
CSS : le langage qui donne forme
CSS signifie Cascading Style Sheets, ou feuilles de style en cascade. Le mot « cascade » mérite qu'on s'y arrête deux minutes, parce qu'il explique 90 % des bugs de style que j'ai vus chez des débutants.
Quand plusieurs règles visent le même élément, le navigateur doit trancher. Il ne prend pas la première : il prend la plus spécifique, et à égalité, la dernière écrite. C'est tout. Ce n'est pas de la magie, c'est une règle de priorité. J'ai perdu une soirée entière sur un titre qui refusait de passer en rouge à cause de ça.
h1 {
color: #1a1a1a;
font-size: 2rem;
margin-bottom: 24px;
}
.bouton {
background: #e63946;
padding: 12px 20px;
border-radius: 6px;
} Vous remarquez la structure : un sélecteur (h1, .bouton), puis des propriétés avec leurs valeurs. C'est tout le CSS. Une suite de déclarations qui décrivent une apparence.
Comme le HTML, le CSS n'est pas un langage de programmation. Pas de boucle, pas de fonction, pas de condition — en tout cas, pas dans son usage courant. Il décrit une mise en forme, point.
CSS et JavaScript : la confusion classique
La question revient sans arrêt : CSS et JavaScript, est-ce la même chose ? Non, et la frontière est nette. Le CSS s'occupe du statique : à quoi ressemble la page quand elle s'affiche, avant que vous ne touchiez à rien.
Le JavaScript s'occupe du réactif : à quoi ressemble la page après une action. Un menu qui se déplie au clic, un panier qui se met à jour, un formulaire qui valide une adresse e-mail avant l'envoi. En théorie on peut animer un bouton en CSS pur, avec :hover. En pratique, dès qu'il faut compter, comparer ou décider, il faut du JavaScript.
Et c'est précisément là que le fossé se creuse. JavaScript, lui, est un vrai langage de programmation : variables, conditions, boucles, fonctions, objets. Vous pouvez y écrire un algorithme, envoyer une requête à un serveur, manipuler la page en direct.
Comparatif : qui fait quoi
Quand on m'envoie un fichier cassé, je pose toujours la même question : est-ce que c'est un problème de structure, de style ou de comportement ? Ce tableau sert à trancher.
| Critère | HTML | CSS | JavaScript |
|---|---|---|---|
| Rôle principal | Structure et contenu | Présentation visuelle | Comportement et interactivité |
| Langage de programmation ? | Non | Non | Oui |
| Extension du fichier | .html | .css | .js |
| Extension du fichier | .html | .css | .js |
| Sans lui, la page… | n'existe pas | reste brute, en noir et blanc | fonctionne, mais reste figée |
| Notion clé | balise | sélecteur et cascade | variable et fonction |
Un mot sur les fichiers liés. Dans le HTML, on appelle le CSS via une balise link dans l'en-tête, et le JavaScript via une balise script, le plus souvent juste avant la fermeture du body. C'est le point de jonction des trois. Si votre page s'affiche sans style, c'est presque toujours ce lien-là qui est cassé.
Peut-on créer un site web complet avec seulement du HTML ?
Oui, techniquement, on peut.
Vous écrivez vos fichiers, vous les déposez sur un hébergeur, et le site s'affiche. Cela fonctionne. J'ai vu des sites de clubs sportifs tourner comme ça pendant des années, avec un fond gris et des liens bleus soulignés.
Mais soyez lucide sur ce que ça implique : pas de couleur personnalisée sans repasser par les attributs HTML obsolètes, pas de mise en page moderne, pas de menu qui se déplie. Sur écran de téléphone, le résultat est souvent illisible, parce que sans CSS vous n'avez aucun contrôle sur la largeur des blocs.
Et pourtant. Si vous débutez, je défends l'idée de commencer par le HTML seul pendant deux ou trois jours. Pas plus. Vous comprenez la hiérarchie, les titres, les listes, les liens. Ensuite vous ajoutez le CSS, et là vous mesurez vraiment à quoi il sert. C'est la meilleure façon d'ancrer la distinction dans votre tête.
Quel langage apprendre en premier ?
HTML, puis CSS, puis JavaScript. Cet ordre n'est pas négociable, et je vais vous dire pourquoi — ce n'est pas une question de difficulté, c'est une question de dépendance.
Le JavaScript manipule des éléments HTML. Si vous ne savez pas ce qu'est un identifiant d'élément ou une classe, vous ne pouvez pas écrire une ligne de script utile. Vous allez copier du code, il va marcher par accident, et vous ne saurez pas pourquoi. Puis il cassera, et vous ne saurez pas pourquoi non plus.
J'ai fait l'erreur inverse au tout début : j'ai voulu « apprendre à coder » en attaquant par JavaScript, parce que c'était le mot qui faisait sérieux. Trois semaines perdues. Je ne comprenais rien à ce que je recopiais. Le jour où je suis revenu au HTML, tout s'est éclairé en une après-midi.
Trois erreurs que je vois tout le temps
La première est de croire que CSS et HTML sont concurrents. Ils ne le sont pas. Confondre les deux, c'est comme demander si les murs et la peinture remplissent la même fonction. Une phrase que j'entends souvent : « je mets la couleur dans la balise, c'est plus simple ». Ça marche pour un test. Ça ne survit pas à la deuxième page.
La deuxième : empiler du JavaScript pour corriger un problème de CSS. Un élément mal aligné ? On va le déplacer avec un script. Ça fonctionne, jusqu'au jour où la fenêtre change de taille et où tout part de travers. Résolvez chaque problème dans la couche qui en est responsable.
La troisième concerne les fichiers « gratuits » trouvés en ligne. On tombe parfois sur des documents intitulés cours HTML CSS PDF, ou CSS JavaScript PDF, avec des exemples mélangés. Certains sont très bien. D'autres datent d'une époque où l'on alignait les mises en page avec des tableaux — une méthode qu'on n'utilise plus et qui produit un code illisible aujourd'hui. Vérifiez toujours que la méthode enseignée est encore en usage.
Faut-il tout maîtriser avant de créer son premier site ?
Non. Vous pouvez publier quelque chose de correct avec un HTML solide, un CSS raisonnable, et zéro JavaScript. La plupart des sites vitrines n'ont besoin de rien de plus.
Les frameworks changent-ils cette logique ?
Non, ils la masquent. Derrière React ou Vue, à la fin, le navigateur reçoit toujours du HTML, du CSS et du JavaScript. Comprendre les trois de base rend les frameworks beaucoup moins opaques.
Si je devais résumer tout ça en une phrase : le HTML dit quoi, le CSS dit comment ça se présente, le JavaScript dit ce qui se passe ensuite. Trois questions différentes, trois métiers différents, un seul navigateur pour les faire tourner ensemble.
La prochaine fois qu'un élément refusera de bouger sur votre page, ne cherchez pas au hasard. Demandez-vous d'abord dans quelle couche se situe le problème. Dans mon expérience, cette seule habitude fait gagner plus de temps que n'importe quel tutoriel supplémentaire.