CSS externe
MaintenanceÀ privilégier
Un fichier .css séparé pour les pages réelles, les projets qui évoluent et les styles réutilisables.
Pour intégrer du CSS dans une page HTML, la méthode la plus propre consiste presque toujours à créer un fichier style.css, puis à le relier dans le <head> avec une balise <link rel="stylesheet" href="...">. Les styles inline et la balise <style> peuvent dépanner, mais ils ne doivent pas devenir la base d’un site que vous allez maintenir.
Le piège vient rarement de la syntaxe seule. Il vient plutôt d’un chemin de fichier faux, d’un style placé au mauvais endroit, d’une règle écrasée par la cascade ou d’un cache qui affiche encore l’ancienne version. L’objectif n’est donc pas seulement de “mettre du CSS”, mais de garder une page lisible, testable et facile à corriger quand le design évolue.
Le bon choix se fait avant la première propriété, parce que chaque méthode laisse une trace différente dans le projet. Il existe trois façons courantes d’ajouter du CSS : dans un attribut style="", dans une balise <style> placée dans le <head>, ou dans un fichier externe. Les trois fonctionnent, mais elles n’ont pas le même coût quand la page doit évoluer, être relue ou servir de base à d’autres écrans.
Pour une page d’exercice, un bloc inline peut montrer rapidement ce que fait une propriété. Pour une maquette isolée, une balise <style> évite de multiplier les fichiers. Mais dès qu’une page doit être relue, partagée, versionnée ou déclinée, la feuille externe devient plus sûre. Elle centralise les règles et évite de chercher une couleur ou une marge au milieu du HTML.
La meilleure méthode dépend surtout de la durée de vie de la page.
À privilégier
Un fichier .css séparé pour les pages réelles, les projets qui évoluent et les styles réutilisables.
Cas limité
Pratique pour un prototype ou une page unique, moins propre quand plusieurs pages partagent les mêmes règles.
Dépannage
Utile pour tester une propriété ou un cas très ponctuel, à éviter comme méthode principale.
Cette décision paraît simple, mais elle évite beaucoup de dette. Un fichier CSS bien nommé se retrouve facilement. Une règle inline copiée sur dix éléments devient pénible à corriger. Si vous changez un bouton dans tout le site, vous voulez modifier une classe CSS, pas dix bouts de HTML.
Commencez par un chemin que vous pouvez expliquer à voix haute.
La structure la plus lisible consiste à placer votre page HTML à la racine du projet, puis votre feuille de style dans un dossier css. Vous obtenez par exemple index.html et css/style.css. Dans ce cas, la balise à placer dans le <head> est directe, et le diagnostic reste simple si le fichier ne se charge pas.
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Ma page</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<h1>Bonjour</h1>
</body>
</html>
La balise <link> ne ferme pas un bloc de contenu : elle indique au navigateur qu’il doit charger une ressource externe. L’attribut rel="stylesheet" décrit la relation avec la page, et href donne l’emplacement du fichier. Si le fichier est dans le même dossier que la page, écrivez href="style.css". S’il est dans un dossier assets/css, écrivez href="assets/css/style.css".
Ce chemin se lit toujours depuis la page HTML qui contient la balise. C’est une nuance importante. Si votre fichier index.html est à la racine, css/style.css signifie “entre dans le dossier css, puis charge style.css”. Si votre page est dans un sous-dossier pages, le même chemin ne pointe plus au même endroit. Il faut alors remonter d’un niveau avec ../css/style.css, ou revoir l’organisation pour éviter les chemins trop fragiles.
| Organisation du projet | Balise link probable | Point à vérifier |
|---|---|---|
index.html et style.css dans le même dossier | href="style.css" | Le nom du fichier doit être strictement identique. |
index.html à la racine, CSS dans /css/ | href="css/style.css" | Le dossier css est au même niveau que la page. |
Page dans /pages/, CSS dans /css/ | href="../css/style.css" | Les deux points remontent d’un niveau avant d’entrer dans css. |
| Site servi depuis un domaine complet | href="/css/style.css" | Le slash initial part de la racine du site, pas du dossier de la page. |
Pour apprendre, privilégiez les chemins courts et explicites. Plus un projet débute avec des dossiers imbriqués, plus vous risquez de croire que le CSS est mauvais alors que le navigateur ne le charge jamais. Un dossier simple est moins impressionnant, mais il facilite le diagnostic.
Dans le fichier CSS, vous pouvez ensuite cibler les éléments HTML ou, mieux, des classes explicites. Commencez simple, avec quelques règles visibles qui prouvent que le fichier est bien chargé.
body {
font-family: system-ui, sans-serif;
margin: 0;
color: #172033;
background: #f8fafc;
}
.bouton-principal {
display: inline-block;
padding: 0.75rem 1rem;
border-radius: 0.5rem;
background: #0f766e;
color: white;
}
Évitez de commencer avec une architecture trop ambitieuse. Un dossier css, un fichier style.css, des classes claires et quelques commentaires utiles suffisent pour apprendre. Les découpages en plusieurs fichiers viendront quand vous aurez de vraies familles de styles : base, layout, composants, pages ou thèmes.
Si vous chargez plusieurs feuilles CSS, l’ordre devient une décision. Une feuille de base peut définir la typographie et les variables, puis une feuille de composants peut gérer les boutons, cartes ou formulaires. Une feuille de page peut ensuite ajuster un écran précis. Mais si vous mettez les exceptions avant la base, vous risquez de les écraser sans comprendre pourquoi. Dans un petit projet, un seul fichier clair vaut souvent mieux que trois fichiers mal ordonnés.
La balise <style> a sa place quand le contexte est court, contrôlé et assumé. Elle se place dans le <head> et contient directement des règles CSS. Elle est pratique quand vous testez une idée, préparez une démo autonome ou écrivez un exemple que quelqu’un doit copier en un seul fichier. Elle évite le problème du chemin, puisque le CSS est dans le document HTML, mais elle déplace la difficulté vers la maintenance.
<style>
body {
font-family: Arial, sans-serif;
}
.alerte {
border-left: 4px solid #0f766e;
padding: 1rem;
}
</style>
Sa limite apparaît dès que deux pages partagent le même design. Vous copiez alors les règles d’un fichier à l’autre, puis les versions divergent. Un changement de couleur devient une chasse aux doublons, et une correction faite dans une page peut être oubliée dans une autre. Pour un projet réel, gardez donc la balise <style> comme outil de test, pas comme organisation durable.
Le style dans l’attribut HTML doit rester une exception, pas un réflexe.
Un bouton, une carte ou un menu doit recevoir une classe, pas dix attributs copiés.
Les media queries et états interactifs se gèrent beaucoup mieux dans une feuille externe.
Un HTML encombré de styles inline devient difficile à relire, contrôler et corriger.
Le style inline garde une utilité pour un test très ciblé ou une valeur calculée par un outil. Mais pour apprendre proprement, entraînez-vous à nommer des classes. C’est ce qui vous permettra ensuite de modifier un composant sans casser toute la page.
Le responsive se prépare au même endroit que le reste du design : dans la feuille CSS.
Intégrer une feuille CSS ne sert pas seulement à changer les couleurs. C’est aussi là que vous préparez le comportement de la page sur mobile, tablette et ordinateur. Le HTML doit rester compréhensible sans style, mais le CSS doit rendre la lecture confortable selon la largeur de l’écran. C’est pour cela que la balise meta viewport dans le <head> et les règles CSS travaillent ensemble, au lieu de multiplier des rustines HTML.
Pour un premier projet, partez d’une mise en page mobile simple, puis élargissez progressivement. Une colonne, des marges raisonnables, des images fluides et des boutons faciles à toucher donnent déjà une base solide. Vous pouvez ensuite ajouter une media query quand l’écran devient assez large.
.conteneur {
width: min(100% - 2rem, 960px);
margin-inline: auto;
}
@media (min-width: 768px) {
.grille {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1.5rem;
}
}
Cette logique garde le CSS lisible. Vous ne créez pas deux sites séparés, un mobile et un desktop. Vous écrivez une base commune, puis vous ajoutez des améliorations quand l’espace le permet. Là encore, la feuille externe aide beaucoup : les règles responsive restent regroupées, au lieu d’être dispersées dans des attributs HTML impossibles à maintenir.
Sur une page publiée, testez au moins trois largeurs : mobile étroit, tablette ou petit laptop, puis écran large. Si une section déborde, le problème vient souvent d’une largeur fixe, d’une image non contrainte ou d’un mot/code trop long. Corrigez dans le CSS plutôt que de bricoler le HTML, car la structure doit rester stable. La structure doit rester stable ; c’est la présentation qui s’adapte.
Pourquoi un style chargé ne s’affiche-t-il pas ? La réponse est souvent dans la cascade.
Une feuille CSS peut être parfaitement reliée et pourtant donner un résultat inattendu. Quand plusieurs règles ciblent le même élément, le navigateur doit décider laquelle gagne. Il regarde notamment l’origine de la règle, son importance, sa spécificité et son ordre d’apparition. Autrement dit, un fichier chargé ne garantit pas qu’une règle gagne.
Un sélecteur de classe comme .bouton est plus précis qu’un simple sélecteur d’élément comme button. Un style inline est encore plus prioritaire dans beaucoup de situations. Et si deux règles de même force visent la même propriété, la dernière déclarée peut l’emporter. Ce comportement est normal, mais il peut donner l’impression que “le CSS ne marche pas”.
button {
background: gray;
}
.bouton-principal {
background: #0f766e;
}
Dans cet exemple, un bouton qui porte la classe bouton-principal prendra le fond vert, car la classe est plus spécifique que le sélecteur d’élément. Si une autre règle plus bas cible la même classe avec une nouvelle couleur, elle peut modifier le résultat. Le bon réflexe consiste à inspecter l’élément réel dans le navigateur et à regarder quelle règle est barrée.
Avant d’ajouter !important, vérifiez ces points dans l’inspecteur.
Le fichier CSS est-il bien chargé en 200 dans l’onglet Réseau ?
Impact décision : Si le fichier est en 404, aucune règle ne pourra s’appliquer.
Le sélecteur correspond-il vraiment à l’élément inspecté ?
Impact décision : Une classe mal écrite suffit à rendre la règle invisible.
Une règle plus précise écrase-t-elle votre propriété ?
Impact décision : L’inspecteur montre souvent la règle gagnante et les déclarations barrées.
Une règle chargée après modifie-t-elle la même propriété ?
Impact décision : L’ordre des fichiers et des blocs CSS compte quand la force est comparable.
N’utilisez !important qu’en dernier recours. Il peut débloquer un cas précis, mais il rend la suite plus difficile, car il force les prochaines corrections à devenir encore plus spécifiques. Dans une petite page, il vaut mieux corriger le sélecteur, l’ordre des règles ou la structure HTML.
Quand aucun style ne s’applique, commencez par le plus banal : le navigateur ne trouve peut-être pas le fichier. Ouvrez les outils de développement, rechargez la page et regardez l’onglet Réseau. Si style.css répond en 404, le problème est le chemin. Si le fichier répond en 200 mais les règles ne changent rien, le problème est probablement le ciblage ou la cascade. Tant que cette distinction n’est pas faite, vous risquez de corriger au mauvais endroit.
Vérifiez aussi la casse. Sur certains environnements, Style.css et style.css ne désignent pas le même fichier. Un nom qui fonctionne sur votre machine peut donc échouer une fois publié. Gardez des noms simples, en minuscules, sans espaces : style.css, main.css, layout.css.
Le cache est l’autre suspect courant. Le navigateur peut afficher une ancienne version de la feuille. Utilisez un rechargement forcé, testez en navigation privée ou ajoutez temporairement une petite modification très visible. En production, on utilise parfois un paramètre de version ou un système de build, mais pour un apprentissage HTML/CSS, un vrai rechargement suffit souvent à trancher.
Regardez aussi la console. Une erreur MIME, un fichier servi avec un mauvais type ou un blocage de sécurité peut empêcher le navigateur d’utiliser la feuille comme prévu. Sur un simple fichier local ouvert en double-clic, certains chemins semblent fonctionner différemment de ce que vous verrez une fois le site servi par un vrai serveur.
Si le comportement devient étrange, lancez un petit serveur local ou utilisez l’aperçu de votre éditeur pour vous rapprocher des conditions réelles.
À suivre dans cet ordre avant de réécrire toute la page.
Cette méthode évite les corrections au hasard. Vous ne changez pas dix choses en même temps ; vous isolez le point de rupture. C’est plus lent pendant cinq minutes, mais beaucoup plus fiable dès que la page contient plusieurs sections, plusieurs fichiers et des règles qui se répondent. Elle donne aussi une trace de raisonnement : si le fichier charge, vous passez au sélecteur ; si le sélecteur correspond, vous passez à la cascade ; si la cascade est correcte, vous regardez le cache ou l’ordre des fichiers.
Le vrai test arrive quand vous relisez le fichier une semaine plus tard. Une fois le fichier relié, la suite se joue dans l’organisation : regroupez les règles par intention de mise en page, de la base générale aux composants, puis aux exceptions de page. Les noms de classes doivent décrire le rôle de l’élément plutôt que l’apparence du moment. .card-produit ou .menu-principal vieillissent mieux que .bloc-vert si la couleur change.
Gardez aussi le HTML sobre. Le HTML porte la structure : titres, paragraphes, listes, boutons, sections. Le CSS porte la présentation. Quand ces responsabilités restent séparées, vous pouvez modifier le design sans réécrire le contenu. C’est la vraie raison de préférer une feuille externe.
Ajoutez des commentaires seulement quand ils aident vraiment. Un commentaire comme “bouton vert” n’apporte rien si la règle s’appelle déjà .bouton-principal. En revanche, un commentaire qui explique pourquoi une marge compense un header fixe, pourquoi une valeur doit rester synchronisée avec un composant, ou pourquoi un sélecteur paraît volontairement plus précis, peut éviter une régression. Le CSS doit rester lisible par quelqu’un qui découvre le projet sans connaître vos décisions initiales.
Quand le fichier grandit, ne découpez pas au hasard. Attendez d’identifier des ensembles stables : variables et reset, layout, composants, pages. Le découpage doit réduire la complexité, pas la déplacer. Si vous passez plus de temps à chercher dans quel fichier se trouve une règle qu’à la comprendre, revenez à une organisation plus simple.
Pour un petit projet, une base simple suffit : un fichier index.html, un dossier css, un fichier style.css et, si besoin, un dossier images. Ajoutez des fichiers CSS séparés seulement quand vous avez une raison claire : thème, composants nombreux, pages différentes ou intégration dans un framework.
La bonne pratique n’est donc pas la méthode la plus sophistiquée. C’est celle que vous pourrez expliquer rapidement : “ma page HTML charge cette feuille, cette feuille contient ces familles de règles, et je peux vérifier dans le navigateur ce qui s’applique”. Avec cette base, intégrer une feuille CSS devient un geste fiable, pas une source de surprises.
C’est moins spectaculaire qu’un framework. C’est plus facile à maintenir.
, avant la fermeture , afin que le navigateur connaisse la feuille de style pendant le chargement de la page.style.css est dans un dossier css placé à côté de la page HTML, utilisez css/style.css. S’il est dans le même dossier que la page, utilisez style.css.