Marché
Tarifs
Se connecterCommencer
Guide pratiqueCSS et web
CSS et web

box-shadow en CSS : des ombres douces et superposées réalistes

Une seule ombre grise en box-shadow est le moyen le plus rapide de donner à une interface un air de modèle tout fait. Les vraies ombres sont plusieurs ombres à la fois, teintées, et plus discrètes qu’on ne le croit.

GradientlyCompte Gradiently vérifié·1 octobre 2026·6 min de lecture
Couverture : Tape Cliff · GR·CY1K·VC

L’essentiel en bref

  • La propriété CSS box-shadow accepte un mot-clé inset facultatif, deux décalages, un rayon de flou, un rayon d’étendue et une couleur.
  • Une ombre unique paraît artificielle parce qu’un objet réel projette à la fois une ombre de contact nette et une ombre large et douce.
  • Superposer trois à cinq ombres, chacune avec environ le double du décalage et du flou de la précédente et une faible opacité, donne une ombre douce et crédible.
  • Teinter l’ombre vers la teinte du fond paraît plus naturel que le noir pur sur des surfaces colorées ou chaudes.
  • Animer box-shadow force un nouveau rendu à chaque image : faites plutôt varier l’opacité d’un pseudo-élément qui porte l’ombre la plus grande.
Sur cette page
La syntaxe de box-shadowPourquoi une ombre unique paraît fausseComment superposer des ombres box-shadowUne échelle d’élévation pour une interfaceLes ombres sur fonds colorés et sombresAnimer box-shadow sans saccadesQuand se passer d’ombre

Une ombre CSS avec box-shadow s’écrit box-shadow: 0 4px 12px rgb(0 0 0 / 0.15) : un décalage horizontal, un décalage vertical, un rayon de flou, une étendue facultative et une couleur. Cette ombre unique suffit pour un prototype rapide, mais elle paraît rarement réelle. Les ombres qui convainquent l’œil sont superposées : plusieurs ombres sur un même élément, chacune plus grande et plus légère que la précédente, teintées selon la surface en dessous.

La syntaxe de box-shadow

css
/* inset? | offset-x | offset-y | blur | spread | color */
.card { box-shadow: 0 4px 12px 0 rgb(0 0 0 / 0.15); }

/* Negative spread tucks the shadow under the box */
.card { box-shadow: 0 12px 24px -8px rgb(0 0 0 / 0.25); }

/* Inset: a shadow inside the box, like a pressed well */
.well { box-shadow: inset 0 2px 4px rgb(0 0 0 / 0.12); }

/* Spread only: a hairline that follows border-radius */
.chip { box-shadow: 0 0 0 1px rgb(15 23 42 / 0.08); }

/* Several shadows, comma separated, first on top */
.card { box-shadow: 0 1px 2px rgb(0 0 0 / 0.1), 0 8px 16px rgb(0 0 0 / 0.08); }
L’ombre suit toujours border-radius : c’est pourquoi une ombre faite seulement d’étendue dessine un filet arrondi net sans changer la mise en page.
insetDésactivé

Effet

Dessine l’ombre à l’intérieur de la bordure plutôt qu’à l’extérieur
Décalages x et y

Par défaut

Obligatoires

Effet

Déplacent l’ombre. Une lumière venant d’en haut implique un y positif
Flou0

Effet

Adoucit le bord. Plus la valeur est grande, plus le fondu s’étale
Étendue0

Effet

Agrandit ou réduit l’ombre avant le flou. Négative, elle la rentre
Couleurcurrentcolor

Effet

Utilisez une couleur avec alpha ; les ombres opaques font autocollant
ValeurPar défautEffet
insetDésactivéDessine l’ombre à l’intérieur de la bordure plutôt qu’à l’extérieur
Décalages x et yObligatoiresDéplacent l’ombre. Une lumière venant d’en haut implique un y positif
Flou0Adoucit le bord. Plus la valeur est grande, plus le fondu s’étale
Étendue0Agrandit ou réduit l’ombre avant le flou. Négative, elle la rentre
CouleurcurrentcolorUtilisez une couleur avec alpha ; les ombres opaques font autocollant
L’étendue est la valeur que la plupart des gens négligent et celle qui corrige le plus. Une petite étendue négative empêche un grand flou de déborder sur les côtés.

Pourquoi une ombre unique paraît fausse

Posez un livre sur une table et regardez son ombre. Juste au bord, là où il touche, l’ombre est sombre et nette. Plus loin, elle devient large et légère, car la lumière contourne l’objet depuis de nombreuses directions. Une seule box-shadow ne peut être que l’une de ces choses à la fois : serrée et dure, ou large et floue. Dans les deux cas, l’œil remarque qu’il manque quelque chose.

Ombre unique

  • Un flou moyen en noir à 25 %
  • Un halo gris tout autour de la carte
  • Difficile de dire à quelle hauteur flotte la carte
  • Paraît sale sur les fonds colorés

Ombre superposée

  • Quatre ombres, chacune plus légère et plus large
  • Dense près du bord, aérienne au loin
  • La hauteur se lit d’un coup d’œil
  • Teintée pour se poser naturellement sur sa surface

Comment superposer des ombres box-shadow

La méthode est simple : commencez petit et net, puis doublez le décalage et le flou à chaque couche supplémentaire, en gardant chaque couche légère. Les opacités s’additionnent là où les couches se chevauchent, si bien que chaque valeur peut être étonnamment faible.

  1. 1

    Commencez par une ombre de contact

    0 1px 1px à environ 8 % d’opacité. C’est la ligne sombre juste sous le bord.

  2. 2

    Doublez à chaque couche

    Puis 0 2px 2px, 0 4px 4px, 0 8px 8px. Le décalage et le flou grandissent ensemble, si bien que la lumière semble venir d’en haut.

  3. 3

    Gardez chaque couche légère

    Entre 5 et 10 % chacune. Si le résultat paraît lourd, retirez la plus grande couche avant d’assombrir quoi que ce soit.

  4. 4

    Teintez la couleur

    Remplacez le noir par une version profonde de la teinte du fond, comme un bleu marine sur des pages bleues ou un brun sur de la crème.

css
:root {
  /* Shadow colour as channels, so opacity can vary per layer */
  --shadow-color: 222 47% 11%;

  --shadow-sm:
    0 1px 1px hsl(var(--shadow-color) / 0.08),
    0 2px 2px hsl(var(--shadow-color) / 0.06);

  --shadow-md:
    0 1px 1px hsl(var(--shadow-color) / 0.08),
    0 2px 2px hsl(var(--shadow-color) / 0.07),
    0 4px 4px hsl(var(--shadow-color) / 0.06),
    0 8px 8px hsl(var(--shadow-color) / 0.05);

  --shadow-lg:
    0 1px 1px hsl(var(--shadow-color) / 0.07),
    0 2px 2px hsl(var(--shadow-color) / 0.07),
    0 4px 4px hsl(var(--shadow-color) / 0.06),
    0 8px 8px hsl(var(--shadow-color) / 0.06),
    0 16px 16px hsl(var(--shadow-color) / 0.05),
    0 32px 32px hsl(var(--shadow-color) / 0.04);
}

.card { box-shadow: var(--shadow-md); }
.dialog { box-shadow: var(--shadow-lg); }
Une échelle d’élévation en trois niveaux sous forme de propriétés personnalisées. Changez --shadow-color une fois et toutes les ombres du système suivent.

Stocker les ombres dans des variables en fait des design tokens, ce qui garde cohérents toutes les cartes, menus et boîtes de dialogue. Les variables CSS pour les thèmes et les design tokens montrent comment les brancher dans un thème complet.

Une échelle d’élévation pour une interface

L’ombre signale la hauteur : elle doit donc signifier la même chose partout. Choisissez trois ou quatre niveaux et attribuez-leur des rôles. Tout ce qui flotte plus haut reçoit une ombre plus grande et plus douce, jamais simplement plus sombre.

0aucune, ou un filet d’étendue de 1px

À utiliser pour

Champs, lignes de tableau, cartes plates sur une page teintée
1--shadow-sm

À utiliser pour

Cartes au repos, boutons qui doivent sembler cliquables
2--shadow-md

À utiliser pour

Cartes survolées, menus déroulants, fenêtres contextuelles
3--shadow-lg

À utiliser pour

Boîtes de dialogue, panneaux, tout ce qui passe au-dessus d’une page assombrie
NiveauTokenÀ utiliser pour
0aucune, ou un filet d’étendue de 1pxChamps, lignes de tableau, cartes plates sur une page teintée
1--shadow-smCartes au repos, boutons qui doivent sembler cliquables
2--shadow-mdCartes survolées, menus déroulants, fenêtres contextuelles
3--shadow-lgBoîtes de dialogue, panneaux, tout ce qui passe au-dessus d’une page assombrie
Quatre niveaux couvrent presque toutes les interfaces. Au-delà, on ne parvient plus à les distinguer.

Les ombres sur fonds colorés et sombres

Les ombres noires pures deviennent grises et ternes sur une surface colorée, comme le noir mélangé à la peinture l’affadit. Prenez plutôt la couleur de l’ombre dans le fond : une ombre bleu canard profond sur une page menthe, un prune sombre sur une page lilas. Sur un fond en dégradé, prenez l’arrêt le plus sombre du dégradé et utilisez-le à faible opacité.

Trois couleurs de page, chacune avec la couleur d’ombre qui lui convient. Utilisez les tons d’ombre à 5 à 10 % par couche.

En mode sombre, les ombres disparaissent presque, faute de lumière à bloquer. Montrez plutôt la hauteur en rendant les surfaces surélevées un peu plus claires, et gardez un léger filet sur le bord. Le design en mode sombre passe en revue les couleurs de surface. Pour les panneaux qui flottent au-dessus d’images, un backdrop-filter sépare souvent mieux les couches qu’une ombre plus lourde.

Animer box-shadow sans saccades

Modifier box-shadow au survol oblige le navigateur à redessiner l’ombre à chaque image de la transition. Sur un bouton, ça va. Sur une grille de cinquante cartes, ça saccade. La solution classique consiste à placer l’ombre la plus grande sur un pseudo-élément et à faire varier son opacité, que le navigateur peut composer à moindre coût.

css
.card {
  position: relative;
  box-shadow: var(--shadow-sm);
}

.card::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  box-shadow: var(--shadow-lg);
  opacity: 0;
  transition: opacity 200ms ease-out;
  pointer-events: none;
}

.card:hover::after { opacity: 1; }

@media (prefers-reduced-motion: reduce) {
  .card::after { transition: none; }
}
Les deux ombres sont peintes une seule fois. Le survol ne change que l’opacité, donc rien n’est redessiné pendant la transition.

Ce qui coûte du temps de rendu est détaillé dans les performances des dégradés CSS, et la même approche par couches convient aux boutons dans les boutons en dégradé CSS.

Quand se passer d’ombre

Les ombres séparent une surface de ce qui se trouve derrière. Si le fond est un dégradé riche ou une photo, une ombre marquée lui fait concurrence. Souvent, un fond plus calme apporte plus à la carte que n’importe quelle ombre. Les Marks de Gradiently sont conçus pour cela : chacun est un fond vivant avec ses propres couleurs, sa lumière et son grain, et les mots que vous y posez restent lisibles parce que le Mark s’apaise derrière eux, sans encadré ni ombre pour faire le travail.

Trouvez un dégradé qui n’est qu’à vous

Parcourez des milliers de Marks, créez avec n’importe lequel gratuitement, et réservez celui qui vous ressemble.

Parcourir le Marché

Les questions qu’on nous pose

Quelles sont les valeurs de box-shadow en CSS ?

Un inset facultatif, un décalage horizontal, un décalage vertical, un rayon de flou, un rayon d’étendue et une couleur, par exemple 0 4px 12px 0 rgb(0 0 0 / 0.15).

Comment créer une ombre douce en CSS ?

Superposez trois à cinq ombres en doublant le décalage et le flou à chaque fois, à 5 à 10 % d’opacité chacune. Teintez-les vers la couleur du fond.

Comment ajouter plusieurs ombres box-shadow ?

Séparez-les par des virgules dans une seule déclaration box-shadow. La première ombre listée est dessinée au-dessus.

À quoi sert l’étendue (spread) dans box-shadow ?

Elle agrandit ou réduit l’ombre avant le flou. Une étendue négative empêche un grand flou d’apparaître sur les côtés de la boîte.

Animer box-shadow nuit-il aux performances ?

Cela force un nouveau rendu à chaque image. Placez l’ombre de survol sur un pseudo-élément et faites plutôt la transition sur son opacité.

Partager ce guide

Écrit par GradientlyCompte Gradiently vérifié

L’équipe derrière Gradiently, un outil de création construit autour des Marks : des dégradés vivants qui donnent à tout ce que vous créez votre propre signature.

Voir notre profil

Sur cette page

La syntaxe de box-shadowPourquoi une ombre unique paraît fausseComment superposer des ombres box-shadowUne échelle d’élévation pour une interfaceLes ombres sur fonds colorés et sombresAnimer box-shadow sans saccadesQuand se passer d’ombre

Partager ce guide

À suivre dans CSS et web

color-mix() en CSS : mélanger les couleurs dans le navigateur

Pour aller plus loin

Tous les guides : CSS et web
CSS et web

backdrop-filter en CSS : un verre dépoli qui reste rapide

6 min de lecture

Le verre dépoli tient en trois lignes de CSS et peut pourtant faire saccader un bon téléphone. Voici le code, ce qu’il coûte à dessiner, et les replis qui gardent le texte lisible quand le flou n’arrive jamais.

CSS et web

text-shadow en CSS : syntaxe, exemples et meilleures solutions

6 min de lecture

text-shadow est une petite propriété réputée pour sauver les titres illisibles. Elle excelle en décoration, beaucoup moins en sauvetage. Voici la syntaxe, quelques styles à copier, et quoi utiliser quand le vrai problème est la lisibilité.

CSS et web

Design tokens : une source unique pour la couleur et la typo

6 min de lecture

Une couleur de marque répartie dans quarante fichiers finit par dériver. Un token vit à un seul endroit et chaque plateforme le lit. Voici comment structurer vos design tokens, les nommer pour qu’ils durent et les livrer au code comme aux outils de design.

Trouvez le style qui n’est qu’à vous.

Chaque Mark est un fond vivant avec un seul propriétaire. Essayez un Mark encore disponible et réservez le vôtre quand vous le sentez.

Commencer à créer

Vérifier un certificat

Saisissez un numéro de certificat ou le code d’un Mark pour voir à qui il appartient.

Fonctionne avec ChatGPT et Claude

Demandez une création à votre IA. Elle la réalise dans votre Mark, prête à modifier.

ChatGPTClaude
Comment se connecter

Produit

  • Marché
  • Explorer
  • Tarifs
  • Certificats

Apprendre

  • Guide pratique
  • Centre d’aide
  • Nouveautés

Développeurs

  • Vue d’ensemble
  • ChatGPT et Claude
  • Référence de l’API
  • Clés API

Entreprise

  • À propos
  • Nous contacter
  • Se connecter

Mentions légales

  • Conditions
  • Confidentialité
  • Remboursements
  • Protection des Marks
  • Cookies
  • Toutes les politiques
Parcourez les lettres. Chacune porte un vrai Mark.Touchez une lettre pour voir son Mark.Un seul nom. Dix Marks à l’intérieur.
© 2026 Gradiently