Comment fonctionne text-shadow
text-shadow peint derrière le texte une copie de celui-ci, décalée et floutée. Vous lui donnez un décalage horizontal, un décalage vertical, un flou facultatif et une couleur.
3px 3px 0 #f59e0b signifie 3px vers la droite (physique, quel que soit le sens d'écriture), 3px vers le bas, sans flou, en ambre. La seconde ombre a un flou de 6px et un noir semi-transparent, la recette habituelle pour un léger effet de profondeur.
La syntaxe
text-shadow: <offset-x> <offset-y> <blur-radius>? <color>?;
| Valeur | Obligatoire | Sens |
|---|---|---|
| offset-x | Oui | Positif déplace l'ombre vers la droite, négatif vers la gauche |
| offset-y | Oui | Positif la déplace vers le bas, négatif vers le haut |
| blur-radius | Non (0 par défaut) | La douceur du bord ; les valeurs négatives sont invalides |
| color | Non (la couleur du texte par défaut) | Peut se placer en premier ou en dernier |
text-shadow: none retire une ombre héritée. Changez les valeurs ci-dessous pour voir l'effet de chacune :
Essayez -4px -4px 0 #16a34a, 0 0 10px red, et deux ombres séparées par une virgule.
Plusieurs ombres : lueur, contour et 3D
Les virgules empilent les ombres ; la première est dessinée au-dessus. Trois effets découlent de cette seule règle :
- Lueur : décalages nuls, flou croissant, sur un fond sombre.
- Contour : quatre ombres nettes, une par diagonale. Cela fonctionne pour un contour fin ; pour un contour plus épais et régulier,
-webkit-text-stroke: 2px #111827(pris en charge par tous les navigateurs actuels malgré le préfixe) trace plutôt un trait sur le bord des lettres. - 3D : une série d'ombres nettes, chacune 1px plus loin, pour que les lettres paraissent en relief.
Garder un texte lisible sur un fond chargé
Un texte blanc sur une photo ou un motif perd ses contours là où le fond est clair. Une ombre sombre et douce les fait réapparaître sans boîte visible :
Une ombre aide, mais elle ne garantit pas le contraste. Pour un texte long sur une image, ajoutez aussi une surcouche unie ou en dégradé derrière le texte.
text-shadow ou box-shadow
| text-shadow | box-shadow | |
|---|---|---|
| Suit | La forme des lettres | La boîte de l'élément (et son border-radius) |
| Valeur de diffusion | Non | Oui |
inset | Non | Oui |
| Plusieurs, séparées par des virgules | Oui | Oui |
Pour les ombres sur les cartes et les boutons, voir box-shadow.
Erreurs courantes
- Des ombres lourdes et sombres sur le texte courant. Elles brouillent la forme des lettres. Réservez les ombres aux titres et aux étiquettes courtes.
- Oublier le second décalage.
text-shadow: 2px #000est invalide ; les deux décalages sont obligatoires. - Un flou négatif. Il est invalide et toute la déclaration est ignorée.
- Croire que l'ombre prend de la place. Elle est seulement peinte ; les grandes ombres peuvent chevaucher la ligne suivante ou être coupées par
overflow: hidden. - Des effets de lueur sur fond clair. Une lueur claire sur du blanc est invisible. Les lueurs demandent un fond sombre.
Questions fréquentes
Quelle est la syntaxe de text-shadow ?
text-shadow: offset-x offset-y blur-radius color;, par exemple text-shadow: 2px 2px 4px rgb(0 0 0 / 40%);. Les deux décalages sont obligatoires ; le flou vaut 0 par défaut et la couleur celle du texte.
Comment ajouter plusieurs ombres à un texte ?
Séparez les ombres par des virgules : text-shadow: 0 0 4px #fff, 0 0 12px #2563eb;. La première ombre est dessinée au-dessus des suivantes.
Comment faire un effet de lueur sur un texte ?
Utilisez des ombres sans décalage avec un flou, souvent plusieurs avec un flou croissant : text-shadow: 0 0 4px #60a5fa, 0 0 12px #2563eb;. Sur un fond sombre, on dirait un néon.
text-shadow a-t-il une valeur de diffusion comme box-shadow ?
Non. text-shadow n'a ni valeur de diffusion (spread) ni mot-clé inset. Pour épaissir l'ombre autour des lettres, empilez plusieurs ombres ou utilisez -webkit-text-stroke pour un contour.
text-shadow modifie-t-il la mise en page ?
Non. L'ombre est seulement peinte ; elle ne prend pas de place et ne déplace pas le contenu voisin, donc une grande ombre peut chevaucher les éléments proches.