La propriété box-shadow ajoute des ombres à la boîte via une liste d'ombres séparées par des virgules. Une boîte d'ombre est définie avec des décalages horizontal et vertical par rapport à l'élément, avec des rayons de flou et d'étalement et avec une couleur.

Elle permet de projeter une ombre depuis un élément. Si une border-radius est définie sur l'élément avec l'ombre, la boîte de l'ombre prendra les mêmes arrondis. L'ordre des couches (z order) pour plusieurs ombres sera le même que pour les ombres texte (la première ombre est sur le dessus).

Le générateur de box-shadow est un outil interactif qui permet de générer des valeurs pour box-shadow.

Syntaxe

/* offset-x | offset-y | color */
box-shadow: 60px -16px teal;

/* offset-x | offset-y | blur-radius | color */
box-shadow: 10px 5px 5px black;

/* offset-x | offset-y | blur-radius | spread-radius | color */
box-shadow: 2px 2px 2px 1px rgba(0, 0, 0, 0.2);

/* inset | offset-x | offset-y | color */
box-shadow: inset 5em 1em gold;

/* Une liste d'ombres, séparées par des virgules */
box-shadow: 3px 3px red, -1em 0 0.4em olive;

/* Mots-clés globaux */
box-shadow: inherit;
box-shadow: initial;
box-shadow: unset;

La propriété box-shadow peut être définie grâce :

  • À deux, trois ou quatre valeurs de longueur (<length>) :
    • Avec deux valeurs, celles-ci sont respectivement considérées comme les coordonnées de décalage de l'ombre : <offset-x> et <offset-y>
    • Si une troisième valeur est fournie, celle-ci correspondra au rayon du flou : <blur-radius>
    • Si une quatrième valeur est fournie, celle-ci correspondra au rayon d'étalement : <spread-radius>.
  • Au mot-clé optionnel inset
  • À une valeur de couleur (<color>) optionnelle.

Valeurs

inset
Si la valeur n'est pas définie (le cas par défaut), l'ombre sera une ombre portée (comme si la boîte était élevée au-dessus du contenu).
La présence du mot-clé inset modifie l'ombre afin qu'elle soit tournée vers l'intérieur du cadre (comme si le contenu était enfoncé dans la boîte). Les ombres tournées vers l'intérieur sont dessinées à l'intérieur de la bordure (même les transparentes), au-dessus de l'arrière-plan mais sous le contenu.
<offset-x> <offset-y>
Deux valeurs de longueur (<length> qui permettent de définir le décalage de l'ombre. <offset-x> définit la distance horizontale du décalage et les valeurs négatives placeront l'ombre à gauche de l'élément. <offset-y> définit la distance verticale et les distances négatives placent l'ombre au-dessus de l'élément (cf. <length> pour les différentes unités possibles).
Si les deux valeurs sont 0, l'ombre est placée derrière l'élément (et peut générer un effet de flou si <blur-radius> et/ou <spread-radius> est utilisé).
<blur-radius>
Une troisième valeur de longueur (<length>). Plus cette valeur sera grande, plus le flou de l'ombre sera diffus : l'ombre sera donc plus étalée et plus légère. Les valeurs négatives ne sont pas autorisées. Si la valeur n'est pas définie, sa valeur par défaut est 0 (le côté de l'ombre est rectiligne).
<spread-radius>
Une quatrième valeur de longueur (<length>). Les valeurs positives étaleront l'ombre et les valeurs négatives rétréciront l'ombre. Si elle n'est pas définie, la valeur par défaut est 0 (l'ombre aura la même taille que l'élément).
<color>
Une valeur de couleur (<color>). Si la valeur n'est pas définie, la couleur utilisée dépend du navigateur ce sera généralement la propriété color mais Safari affiche une ombre transparente.

Interpolation

Chaque ombre de la liste (none sera traitée comme une liste de longueur nulle) est interpolée via la couleur, le décalage horizontal et vertical, le rayon de flou et l'étalement (lorsque c'est pertinent). Pour chaque ombre, si les deux ombres sont ou ne sont pas inset, l'ombre interpolée doit respecter cette valeur. Si l'une des ombres a inset et l'autre non, la liste d'ombres ne peut pas être interpolée. Si les listes d'ombres ont des longueurs différentes, la liste la plus courte sera complétée à la fin avec des ombres dont la couleur est transparent, toutes les longueurs valent 0 et inset pour que la valeur corresponde à la plus longue liste.

Syntaxe formelle

none | <shadow>#


<shadow> = inset? && <length>{2,4} && <color>?


<color> = <rgb()> | <rgba()> | <hsl()> | <hsla()> | <hex-color> | <named-color> | currentcolor | <deprecated-system-color>


<rgb()> = rgb( <percentage>{3} [ / <alpha-value> ]? ) | rgb( <number>{3} [ / <alpha-value> ]? ) | rgb( <percentage>#{3} , <alpha-value>? ) | rgb( <number>#{3} , <alpha-value>? )
<rgba()> = rgba( <percentage>{3} [ / <alpha-value> ]? ) | rgba( <number>{3} [ / <alpha-value> ]? ) | rgba( <percentage>#{3} , <alpha-value>? ) | rgba( <number>#{3} , <alpha-value>? )
<hsl()> = hsl( <hue> <percentage> <percentage> [ / <alpha-value> ]? ) | hsl( <hue>, <percentage>, <percentage>, <alpha-value>? )
<hsla()> = hsla( <hue> <percentage> <percentage> [ / <alpha-value> ]? ) | hsla( <hue>, <percentage>, <percentage>, <alpha-value>? )


<alpha-value> = <number> | <percentage>
<hue> = <number> | <angle>

Exemples

CSS

p {
  height: 5em;
  width: 300px;
  background-color: rgba(128,128,128,0.1);
}
.ombre_droite_haut {
  box-shadow: 60px -16px teal; /* la valeur négative décale vers le haut */
}

.ombre_interieure {
  box-shadow: inset 5em 1em gold;
  /* le mot-clé inset renverse l'ombre à l'intérieur */
}

.ombres_multiples_diffuses {
  box-shadow: inset 0 0 1em gold, 0 0 2em red;
  /* deux ombres dans la liste et des rayons de flou pour chacune */
}

HTML

<p class="ombre_droite_haut">Déportée dans l'autre sens</p>

<p class="ombre_interieure">L'ombre est dans le contenu !</p>

<p class="ombres_multiples_diffuses">Du rouge dehors et du doré dedans</p>

Résultat

Spécifications

Spécification État Commentaires
CSS Backgrounds and Borders Module Level 3
La définition de 'box-shadow' dans cette spécification.
Candidat au statut de recommandation Définition initiale.

Valeur initialenone
Applicabilitétous les éléments. S'applique aussi à ::first-letter.
Héritéenon
Médiavisuel
Valeur calculéetoute longueur sous forme absolue; toute couleur sous forme calculée; sinon comme spécifié
Type d'animationune liste d'ombres
Ordre canoniquel'ordre unique et non-ambigu défini par la grammaire formelle

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidEdge MobileFirefox pour AndroidOpera pour AndroidSafari sur iOSSamsung Internet
box-shadowChrome Support complet 10
Notes
Support complet 10
Notes
Notes Shadows affect layout in this browser. For example, if you cast an outer shadow to a box with a width of 100%, then you'll see a scrollbar.
Support complet 1
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : -webkit-
Edge Support complet 12Firefox Support complet 4
Notes
Support complet 4
Notes
Notes Shadows affect layout in this browser. For example, if you cast an outer shadow to a box with a width of 100%, then you'll see a scrollbar.
Aucun support 3.5 — 13
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : -moz-
Support complet 49
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : -webkit-
Support complet 44
Préfixée Désactivée
Préfixée Nécessite l'utilisation d'un préfixe : -webkit-
Désactivée From version 44: this feature is behind the layout.css.prefixes.webkit preference (needs to be set to true). To change preferences in Firefox, visit about:config.
IE Support complet 9
Notes
Support complet 9
Notes
Notes To use box-shadow in Internet Explorer 9 or later, you must set border-collapse to separate.
Notes Since version 5.5, Internet Explorer supports Microsoft's DropShadow and Shadow Filter. You can use this proprietary extension to cast a drop shadow (though the syntax and the effect are different from CSS3)
Opera Support complet 10.5
Notes
Support complet 10.5
Notes
Notes Shadows affect layout in this browser. For example, if you cast an outer shadow to a box with a width of 100%, then you'll see a scrollbar.
Safari Support complet 5.1
Notes
Support complet 5.1
Notes
Notes Shadows affect layout in this browser. For example, if you cast an outer shadow to a box with a width of 100%, then you'll see a scrollbar.
Support complet 3
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : -webkit-
WebView Android Support complet Oui
Préfixée Notes
Support complet Oui
Préfixée Notes
Préfixée Nécessite l'utilisation d'un préfixe : -webkit-
Notes Shadows affect layout in this browser. For example, if you cast an outer shadow to a box with a width of 100%, then you'll see a scrollbar.
Chrome Android ? Edge Mobile Support complet OuiFirefox Android ? Opera Android Support complet Oui
Notes
Support complet Oui
Notes
Notes Shadows affect layout in this browser. For example, if you cast an outer shadow to a box with a width of 100%, then you'll see a scrollbar.
Safari iOS Support complet 5
Notes
Support complet 5
Notes
Notes Shadows affect layout in this browser. For example, if you cast an outer shadow to a box with a width of 100%, then you'll see a scrollbar.
Support complet Oui
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : -webkit-
Samsung Internet Android ?
Multiple shadowsChrome Support complet 10
Support complet 10
Support complet 1
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : -webkit-
Edge Support complet 12Firefox Support complet 4
Support complet 4
Aucun support 3.5 — 13
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : -moz-
IE Support complet 9
Notes
Support complet 9
Notes
Notes To use box-shadow in Internet Explorer 9 or later, you must set border-collapse to separate.
Opera Support complet 10.5Safari Support complet 5.1
Support complet 5.1
Support complet 3
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : -webkit-
WebView Android Support complet Oui
Préfixée
Support complet Oui
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : -webkit-
Chrome Android ? Edge Mobile Support complet OuiFirefox Android ? Opera Android Support complet OuiSafari iOS Support complet 5
Support complet 5
Support complet Oui
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : -webkit-
Samsung Internet Android ?
insetChrome Support complet 10
Support complet 10
Support complet 1
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : -webkit-
Edge Support complet 12Firefox Support complet 4
Support complet 4
Aucun support 3.5 — 13
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : -moz-
IE Support partiel 9
Notes
Support partiel 9
Notes
Notes To use box-shadow in Internet Explorer 9 or later, you must set border-collapse to separate.
Notes inset must be the last keyword in the declaration.
Opera Support complet 10.5Safari Support complet 5.1
Support complet 5.1
Support complet 5
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : -webkit-
WebView Android Support complet Oui
Préfixée
Support complet Oui
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : -webkit-
Chrome Android ? Edge Mobile Support complet OuiFirefox Android ? Opera Android Support complet OuiSafari iOS Support complet 5
Support complet 5
Support complet Oui
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : -webkit-
Samsung Internet Android ?
Spread radiusChrome Support complet 10
Support complet 10
Support complet 1
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : -webkit-
Edge Support complet 12Firefox Support complet 4
Support complet 4
Aucun support 3.5 — 13
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : -moz-
IE Support complet 9
Notes
Support complet 9
Notes
Notes To use box-shadow in Internet Explorer 9 or later, you must set border-collapse to separate.
Opera Support complet 10.5Safari Support complet 5.1
Support complet 5.1
Support complet 5
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : -webkit-
WebView Android Support complet Oui
Préfixée
Support complet Oui
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : -webkit-
Chrome Android ? Edge Mobile Support complet OuiFirefox Android ? Opera Android Support complet OuiSafari iOS Support complet 5
Support complet 5
Support complet Oui
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : -webkit-
Samsung Internet Android ?

Légende

Support complet  
Support complet
Support partiel  
Support partiel
Compatibilité inconnue  
Compatibilité inconnue
Voir les notes d'implémentation.
Voir les notes d'implémentation.
Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.
Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.
Cette fonctionnalité nécessite un préfixe particulier ou utilise un autre nom.
Cette fonctionnalité nécessite un préfixe particulier ou utilise un autre nom.

Voir aussi

Étiquettes et contributeurs liés au document

Étiquettes : 
Contributeurs à cette page : SphinxKnight, mdnwebdocs-bot, Bidjit, teoli, skinnyfoetusboy, Goofy, FredB
Dernière mise à jour par : SphinxKnight,