Langage de feuilles de style

CSS

CSS est le langage qui contrôle l'apparence et la mise en page de votre HTML à l'écran. Voici ce que c'est, comment cela fonctionne et comment commencer à l'utiliser dès aujourd'hui.

beginner14 min readUpdated 15 sept. 2026
styles.css
css
/* styles.css */
:root {
  --brand: #2563eb;
}

.card {
  padding: 1.5rem;
  border-radius: 0.75rem;
  background: var(--brand);
  color: white;
}
Nom complet
Cascading Style Sheets
Créé par
Håkon Wium Lie, 1996
Type
Langage de feuilles de style
Standard
W3C Living Standard
Extension de fichier
.css

Pratique

Essayer le CSS en direct

Modifiez le HTML et le CSS pour voir vos changements en temps réel.

Essayer le CSS en direct

Modifiez le HTML et le CSS pour voir vos changements en temps réel.

Pourquoi c'est important

Pourquoi le CSS est important

Accessibilité

Le CSS contrôle la présentation visuelle — la taille des polices, l'espacement, les indicateurs de focus et les mises en page responsives dépendent tous de styles bien écrits qui rendent le contenu utilisable pour tous.

Contrôle du design

Des couleurs et de la typographie aux animations et à la mise en page, le CSS vous donne un contrôle précis sur l'apparence et le comportement de chaque élément de la page.

Performance

Un CSS propre et bien organisé se charge rapidement, s'affiche efficacement et est plus facile à maintenir — des feuilles de style plus légères pour des pages plus fluides.

Le tableau complet

Les trois concepts clés du CSS

Les sélecteurs choisissent les éléments, la cascade décide quelle règle l'emporte, et le box model contrôle l'espace qu'ils occupent.

Sélecteurs

Correspondance

Choisissent les éléments auxquels s'applique une règle — par balise, classe, attribut, état ou relation.

La cascade

Résolution

Quand des règles entrent en conflit, l'origine, la spécificité et l'ordre décident quelle déclaration l'emporte.

Le modèle de boîte

Taille

Chaque élément est une boîte de contenu, de padding, de bordure et de marge — c'est ainsi qu'il occupe l'espace.

Le CSS en un coup d'œil

Ce que le CSS vous apporte

Design visuel

Couleurs, polices, espacements et effets d'arrière-plan.

Systèmes de mise en page

Flexbox et CSS Grid pour des arrangements de page complexes.

Design responsive

Les media queries adaptent la mise en page à toutes les tailles d'écran.

Animations

Transitions et animations keyframe sans JavaScript.

Propriétés personnalisées

Variables CSS pour des valeurs réutilisables et thémables.

Support de l'accessibilité

Styles de focus, modes contraste élevé et réduction des mouvements.

Un bref aperçu

Des hacks de tableaux à la mise en page moderne

  1. 1996

    CSS1

    Håkon Wium Lie propose le CSS et le W3C publie la première spécification.

    96
  2. 1998

    CSS2

    Ajoute le positionnement, le z-index, les types de médias et un meilleur contrôle de la mise en page.

    98
  3. 2011

    CSS2.1

    Clarifie et corrige CSS2 — la version que la plupart des développeurs ont apprise en premier.

    11
  4. 2012

    Modules CSS3

    Division en modules indépendants — Flexbox, Grid, animations et autres sont déployés un par un.

    12
  5. 2017

    Arrivée de CSS Grid

    Le support des navigateurs atteint une masse critique et Grid transforme la mise en page des pages.

    17
  6. Aujourd'hui

    Living standard

    De nouvelles fonctionnalités comme les container queries, :has() et subgrid arrivent continuellement.

    Aujourd'hui

Le guide complet

CSS: Tout ce que vous devez savoir

Qu’est-ce que le CSS ?

CSS signifie Cascading Style Sheets (feuilles de style en cascade). C’est le langage standard utilisé pour contrôler l’apparence des éléments HTML à l’écran. Chaque couleur, police, décision d’espacement, disposition de mise en page et animation sur le web est définie par le CSS.

Alors que le HTML décrit ce qu’est le contenu — un titre, un paragraphe, une image — le CSS décrit comment il apparaît : la couleur de ce titre, la taille de la police, l’espace entourant le paragraphe et si l’image flotte à gauche ou s’insère dans une grille. Cette séparation est le cœur du développement web. Le HTML fournit la structure, le CSS fournit la présentation et JavaScript fournit le comportement. Chaque couche a un rôle précis, et les maintenir séparées rend les pages plus faciles à construire, à tester et à maintenir.

La meilleure façon de concevoir le CSS est de le voir comme la peinture et le mobilier d’une page. Le HTML est la maison — les murs, les pièces et les portes — et le CSS décide de la couleur des murs, de l’emplacement des meubles et de l’aspect général de l’ensemble. Sans CSS, chaque page ne serait que du texte noir sur fond blanc. Le CSS est ce qui rend le web visuellement riche.

Comment fonctionne le CSS

Le CSS fonctionne via un système de sélecteurs, de propriétés et de valeurs. Un sélecteur cible un élément HTML, une propriété est l’aspect que vous souhaitez modifier et une valeur est le réglage que vous lui attribuez :

/* style.css */
h1 {
  color: blue;
  font-size: 2rem;
}

Ici, h1 est le sélecteur — il indique au navigateur quel élément styliser. color et font-size sont des propriétés — les éléments que vous pouvez modifier. blue et 2rem sont les valeurs — les réglages que vous leur attribuez. L’ensemble du bloc, de l’accolade ouvrante à l’accolade fermante, est appelé bloc de déclaration ou ensemble de règles.

Lorsqu’un navigateur charge une page, il analyse le HTML pour créer le DOM, puis lui applique les règles CSS. Chaque règle indique : « trouve ces éléments et donne-leur cet aspect ». Le navigateur évalue chaque règle, résout les conflits via la cascade et la spécificité, puis affiche le résultat final. Ce processus se produit à chaque chargement de la page, ainsi qu’à chaque modification des styles.

Méthodes pour ajouter du CSS

Il existe trois façons d’inclure du CSS dans une page web, chacune ayant son propre cas d’utilisation :

Styles en ligne (Inline styles)

Appliquez le CSS directement à un élément en utilisant l’attribut style :

<!-- index.html -->
<p style="color: red; font-size: 1.2rem;">This text is red.</p>

Les styles en ligne sont utiles pour des expériences rapides ou des modifications ponctuelles, mais ils mélangent la présentation et la structure, et sont difficiles à maintenir à grande échelle. Évitez-les en production.

Feuille de style interne

Placez un bloc <style> à l’intérieur du <head> de votre document HTML :

<!-- index.html -->
<head>
  <style>
    h1 {
      color: navy;
    }
  </style>
</head>

Les styles internes fonctionnent bien pour les prototypes d’une seule page ou lorsqu’une page nécessite des styles uniques que nulle autre page n’utilise. Ils restent toutefois limités à un seul document, donc le partage de styles entre plusieurs pages nécessite des répétitions.

Feuille de style externe

Liez un fichier .css séparé à l’aide de l’élément <link> :

<!-- index.html -->
<head>
  <link rel="stylesheet" href="styles.css" />
</head>

C’est l’approche standard pour les sites web en production. Un seul fichier CSS peut styliser toutes les pages, le navigateur le met en cache après le premier chargement et votre HTML reste propre. La plupart des projets utilisent des feuilles de style externes.

Sélecteurs CSS

Les sélecteurs permettent d’indiquer au CSS quels éléments styliser. Maîtriser les sélecteurs est l’une des compétences les plus rentables en CSS, car des sélecteurs précis signifient moins de balisage, moins de surcharges et des feuilles de style plus propres.

Sélecteur d’élément

Cible toutes les instances d’un élément HTML :

/* style.css */
p {
  line-height: 1.6;
}

Sélecteur de classe

Cible les éléments possédant un attribut class spécifique. Les classes sont réutilisables et constituent le moyen le plus courant de styliser des groupes d’éléments :

/* style.css */
.card {
  padding: 1rem;
  border: 1px solid #e2e8f0;
}

Sélecteur d’ID

Cible un élément unique possédant un id spécifique. Les ID sont uniques au sein d’une page et ont une spécificité plus élevée que les classes :

/* style.css */
#hero {
  background: linear-gradient(135deg, #667eea, #764ba2);
}

Sélecteur d’attribut

Cible les éléments en fonction de leurs attributs ou des valeurs de ces attributs :

/* style.css */
a[target="_blank"] {
  color: #dc2626;
}

input[type="email"] {
  border-color: #3b82f6;
}

Sélecteur de pseudo-classe

Cible les éléments dans un état spécifique — au survol, focus, le premier enfant, ou le n-ième élément d’une liste :

/* style.css */
a:hover {
  text-decoration: underline;
}

li:first-child {
  font-weight: bold;
}

input:focus {
  outline: 2px solid #3b82f6;
}

Sélecteurs combinés

Les sélecteurs peuvent être combinés pour plus de précision. Un espace cible les descendants, un > cible les enfants directs et un + cible le frère suivant :

/* style.css */
nav a {
  color: white;
}

nav > ul {
  list-style: none;
}

h2 + p {
  margin-top: 0;
}

La cascade et la spécificité

Lorsque plusieurs règles CSS ciblent le même élément, le navigateur doit décider laquelle l’emporte. Ce processus est appelé la cascade, et il suit un ordre de priorité précis.

Hiérarchie de la spécificité

La spécificité est calculée selon quatre niveaux, évalués de gauche à droite :

  1. Styles en lignestyle="..." — priorité maximale
  2. IDs#header
  3. Classes, attributs et pseudo-classes.nav, [type="text"], :hover
  4. Éléments et pseudo-élémentsdiv, ::before — priorité minimale

Une règle avec un sélecteur d’ID l’emportera toujours sur une règle n’utilisant que des sélecteurs de classe, quel que soit le nombre de classes utilisées dans la seconde règle. En cas d’égalité de spécificité, c’est la règle qui apparaît en dernier dans le code source qui gagne.

La cascade

Au-delà de la spécificité, la cascade prend en compte :

  • L’origine — les styles par défaut du navigateur, les styles de l’auteur et les styles de l’utilisateur ont chacun un niveau. Les styles de l’auteur priment sur les styles par défaut du navigateur ; !important dans les styles utilisateur peuvent outrepasser les styles de l’auteur.
  • L’héritage — certaines propriétés comme color, font-family et line-height sont héritées par les éléments enfants. D’autres, comme margin, padding et border, ne le sont pas.
  • !important — l’ajout de !important à une déclaration écrase toutes les autres déclarations pour la même propriété, quelle que soit la spécificité. Utilisez-le avec parcimonie car cela brise la cascade naturelle et rend le débogage plus difficile.

Conseils pratiques

  • Maintenez une spécificité basse en privilégiant les classes aux IDs.
  • Évitez !important, sauf si vous créez une couche d’utilitaires ou si vous devez outrepasser une feuille de style tierce.
  • Lorsqu’un style ne s’applique pas, vérifiez la cascade : inspectez l’élément pour voir quelles règles correspondent et laquelle l’emporte.

Les bases du box model

Chaque élément HTML est une boîte rectangulaire, et le box model décrit comment sa taille est calculée. Il se compose de quatre couches, de l’intérieur vers l’extérieur :

  1. Content (Contenu) — le texte, l’image ou les éléments enfants à l’intérieur de la boîte.
  2. Padding (Marge interne) — l’espace transparent entre le contenu et la bordure.
  3. Border (Bordure) — une ligne visible entourant le padding.
  4. Margin (Marge externe) — l’espace transparent à l’extérieur de la bordure, qui éloigne l’élément de ses voisins.

Par défaut, width et height ne définissent que la zone de contenu. L’ajout de padding et de bordures augmente la taille totale de la boîte. La propriété box-sizing: border-box permet de modifier ce comportement afin que la largeur et la hauteur incluent le padding et la bordure, ce qui rend la mise en page beaucoup plus prévisible :

/* reset.css */
*,
*::before,
*::after {
  box-sizing: border-box;
}

Pour approfondir la manière dont le box model affecte le layout, consultez le guide dédié au box model.

Les bases de Flexbox

Flexbox est un système de mise en page unidimensionnel conçu pour organiser des éléments en ligne ou en colonne. Il simplifie l’alignement, l’espacement et la distribution de l’espace entre les éléments, même lorsque leurs dimensions sont inconnues ou dynamiques.

Pour activer flexbox, définissez display: flex sur un conteneur :

/* style.css */
.container {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
}

Les propriétés clés sont :

  • flex-direction — row, row-reverse, column ou column-reverse.
  • justify-content — l’alignement le long de l’axe principal (start, end, center, space-between, space-around).
  • align-items — l’alignement le long de l’axe secondaire (start, end, center, stretch).
  • gap — l’espace entre les éléments flex sans utiliser de marges.
  • flex-wrap — détermine si les éléments passent à la ligne suivante en cas de dépassement.

Flexbox est idéal pour les barres de navigation, les rangées de cartes, le centrage de contenu et toute mise en page où les éléments sont disposés sur une seule ligne ou colonne. Pour les mises en page bidimensionnelles, CSS Grid est le meilleur choix. Consultez le guide dédié à flexbox pour en savoir plus.

Les bases de CSS Grid

CSS Grid est un système de mise en page bidimensionnel qui gère simultanément les lignes et les colonnes. C’est l’outil de mise en page le plus puissant de CSS, conçu pour les structures de pages et les mises en page de composants complexes.

Pour activer la grille, définissez display: grid sur un conteneur et définissez les colonnes et les lignes :

/* style.css */
.page {
  display: grid;
  grid-template-columns: 250px 1fr 250px;
  grid-template-rows: auto 1fr auto;
  gap: 2rem;
}

Les propriétés clés sont :

  • grid-template-columns — définit les pistes de colonnes. Utilisez les unités fr, repeat() et auto-fit/auto-fill pour des grilles responsives.
  • grid-template-rows — définit les pistes de lignes.
  • gap — l’espace entre les éléments de la grille.
  • grid-area — place les éléments dans des régions nommées de la grille.
  • grid-column et grid-row — permet aux éléments de s’étendre sur plusieurs pistes.

Grid se marie parfaitement avec les media queries pour créer des mises en page responsives qui se réorganisent naturellement. Pour un tour d’horizon complet, consultez le guide dédié à CSS Grid.

Design adaptatif avec les media queries

Le design adaptatif (responsive design) signifie que votre page s’affiche et fonctionne correctement sur tous les appareils : téléphones, tablettes, ordinateurs portables et grands moniteurs. Les media queries sont l’outil utilisé par CSS pour appliquer des styles en fonction de la largeur, de la hauteur de la fenêtre d’affichage (viewport) ou d’autres caractéristiques de l’appareil.

/* responsive.css */
/* Base styles for mobile */
.container {
  padding: 1rem;
}

/* Tablet and above */
@media (min-width: 768px) {
  .container {
    padding: 2rem;
    max-width: 720px;
    margin: 0 auto;
  }
}

/* Desktop */
@media (min-width: 1024px) {
  .container {
    max-width: 960px;
  }
}

L’approche ci-dessus est appelée mobile-first : vous écrivez des styles de base pour les petits écrans et vous les améliorez progressivement avec des queries min-width. Cela permet d’obtenir un CSS plus léger, de meilleures performances sur mobile et une progression naturelle des mises en page, du plus simple au plus complexe.

D’autres fonctionnalités utiles des media queries incluent :

  • max-width — appliquer des styles en dessous d’un point de rupture (breakpoint).
  • prefers-color-scheme — détecter le mode sombre.
  • prefers-reduced-motion — respecter les préférences de l’utilisateur concernant les animations.
  • orientation — répondre à l’orientation portrait ou paysage.

Associez les media queries à des unités flexibles comme %, rem, em et fr pour des mises en page qui s’adaptent de manière fluide.

Propriétés personnalisées CSS

Les propriétés personnalisées CSS — également appelées variables CSS — vous permettent de stocker des valeurs réutilisables et de les référencer dans l’ensemble de votre feuille de style. Elles sont déclarées avec -- et accédées via var() :

/* variables.css */
:root {
  --color-primary: #2563eb;
  --color-text: #1e293b;
  --space-md: 1rem;
  --font-body: system-ui, sans-serif;
}

body {
  color: var(--color-text);
  font-family: var(--font-body);
}

.button {
  background: var(--color-primary);
  padding: var(--space-md);
}

Les propriétés personnalisées sont liées à l’élément sur lequel elles sont déclarées et se propagent vers les enfants, ce qui les rend idéales pour la gestion des thèmes. Vous pouvez les redéfinir à l’intérieur d’une media query, d’une classe ou d’un attribut de données pour changer de thème sans dupliquer vos règles :

/* variables.css */
[data-theme="dark"] {
  --color-primary: #60a5fa;
  --color-text: #f1f5f9;
}

Elles supportent également des valeurs de secours (fallback) : var(--color-primary, #2563eb). Les propriétés personnalisées sont l’une des fonctionnalités les plus pratiques du CSS moderne et devraient faire partie de chaque projet.

Bonnes pratiques

Un bon CSS ne consiste pas à mémoriser chaque propriété, mais à écrire des styles prévisibles, maintenables et faciles à faire évoluer. Ces habitudes s’appliquent à tout projet, quelle que soit sa taille :

  • Utilisez des feuilles de style externes pour tout ce qui dépasse le stade du prototype rapide.
  • Privilégiez les sélecteurs de classe aux sélecteurs d’élément ou d’ID pour le stylisage.
  • Maintenez une spécificité faible afin que les surcharges soient rares et intentionnelles.
  • Utilisez des propriétés personnalisées CSS pour les couleurs, l’espacement et la typographie.
  • Suivez une convention de nommage cohérente — BEM, classes utilitaires ou un système comme Tailwind CSS.
  • Écrivez des styles responsives “mobile-first” avec des min-width.
  • Utilisez box-sizing: border-box sur chaque projet.
  • Évitez !important — cela masque les bugs au lieu de les corriger.
  • Organisez vos styles de manière logique : styles de base, composants, utilitaires.
  • Testez sur plusieurs navigateurs et différentes tailles de viewport.
  • Utilisez l’inspecteur des DevTools du navigateur pour déboguer rapidement les problèmes de mise en page.

Erreurs courantes

  • Utiliser des styles en ligne au lieu de classes pour des ajustements ponctuels.
  • S’appuyer trop souvent sur !important pour forcer l’application des styles.
  • Écrire des sélecteurs trop spécifiques et impossibles à surcharger.
  • Oublier de définir box-sizing: border-box, ce qui entraîne des largeurs imprévisibles.
  • Dupliquer les valeurs de couleurs et d’espacement au lieu d’utiliser des propriétés personnalisées.
  • Ignorer le design adaptatif (responsive design) en supposant que tous les utilisateurs sont sur ordinateur.
  • Écrire des styles “desktop-first” avec max-width au lieu d’une approche “mobile-first”.
  • Mélanger les conventions de nommage ou n’avoir aucun système de nommage.
  • Oublier de tester le mode sombre ou l’option de réduction des animations.
  • Laisser des styles inutilisés dans la feuille de style, augmentant la taille du fichier sans raison.

Est-ce que le CSS vaut toujours la peine d’être appris en 2026 ?

Absolument. Le CSS n’est pas près de disparaître — chaque site web, application web et progressive web app s’appuie dessus pour le rendu. Le CSS moderne propose désormais les container queries, le sélecteur :has(), le subgrid, les cascade layers et le nesting natif. Il est plus puissant que jamais. Des frameworks comme Tailwind, Bootstrap et les bibliothèques CSS-in-JS abstraient le CSS mais ne le remplacent jamais ; maîtriser les fondamentaux vous rendra plus rapide et plus efficace avec n’importe lequel d’entre eux. En tant que premier langage de stylisation, il est imbattable : vous obtenez des résultats visuels en quelques minutes, la courbe d’apprentissage est douce et chaque compétence future en développement frontend bénéficiera d’une solide connaissance du CSS. Apprenez-le correctement une fois pour toutes, et vous l’utiliserez durant toute votre carrière.

Comment apprendre le CSS

Le CSS est facile à aborder pour débuter, mais demande un investissement constant pour être maîtrisé. Voici un parcours pratique :

  1. Apprenez le box model, les sélecteurs et la cascade.
  2. Créez une page simple avec des couleurs, des polices et des espacements.
  3. Apprenez flexbox et utilisez-le pour les barres de navigation, les rangées de cartes et le centrage.
  4. Apprenez CSS Grid pour les mises en page et les designs bidimensionnels.
  5. Ajoutez du design responsive avec les media queries.
  6. Utilisez les propriétés personnalisées pour créer un design system cohérent.
  7. Étudiez l’accessibilité — styles de focus, contrastes et réduction des animations (reduced motion).
  8. Réalisez des projets : une landing page, la mise en page d’un blog, un dashboard — jusqu’à ce que les patterns deviennent instinctifs.

Ensuite, explorez les animations, le Grid avancé, les container queries et les fonctionnalités modernes. Notre tutoriel interactif CSS vous accompagne à chaque étape avec des exercices pratiques.

Surcharger un style

Gardez une spécificité basse et utilisez des classes. !important est un dernier recours qui rend les futures modifications plus difficiles.

Préférer
.button--danger {
  background: #dc2626;
}
Éviter
button {
  background: #dc2626 !important;
}

Styliser un élément

Une classe réutilisable est plus facile à maintenir qu'un style en ligne dispersé dans le balisage.

Préférer
<a class="nav-link" href="/docs">Docs</a>
Éviter
<a style="color: #60a5fa; text-decoration: none"
   href="/docs">Docs</a>

FAQ

Foire aux questions

Keep learning

Related topics from the roadmap.

$ commencer à apprendre

Prêt à apprendre CSS Basics ?

Notre tutoriel interactif vous guide à travers CSS Basics pas à pas — avec des quiz et du vrai code que vous pouvez exécuter dans le navigateur.