Les pubs vous déplaisent ? Aller Sans pub Auj.

Ombres CSS Obtenir des résultats réalistes sans essais et erreurs

Publié le
Ombres CSS : obtenir des résultats réalistes sans essais et erreurs 1
ANNONCE · Supprimer ?

L'ombre de boîte est l'un de ces propriétés CSS qui semble simple au premier abord, mais qui devient compliqué lorsqu'on voit un résultat qui ressemble à une illustration de 2008. La syntaxe est courte, mais ce que chaque valeur fait exactement — et la manière dont elles interagissent — n'est pas évident. Voici comment écrire des ombres qui semblent pensées, et non collées.

La syntaxe, démythifiée

box-shadow: offset-x offset-y blur-radius spread-radius color;

Cinq valeurs. Examinons-les avec précision :

  • décalage-x: La distance à laquelle l'ombre est déplacée horizontalement. Un décalage positif la déplace à droite ; un décalage négatif la déplace à gauche.
  • décalage-y: La distance à laquelle l'ombre est déplacée verticalement. Un décalage positif la déplace vers le bas.
  • rayon de flou: Apaise l'ombre. À 0, l'edge est rigide. Des valeurs plus élevées flouissent l'ombre en l'étendant à l'extérieur en appliquant un flou de Gauss à la forme de l'ombre.
  • rayon d'extension: Étend ou réduit l'ombre avant avant l'application du flou. Un rayon positif rend l'ombre plus grande que l'élément ; un rayon négatif la rend plus petite.
  • couleur: La couleur de l'ombre. Une erreur courante est d'utiliser un noir pur.
  • intérieur: Un mot-clé optionnel qui inverse l'ombre vers l'intérieur de l'élément.

Flou vs Extension : La confusion qui détruit les ombres

Ces deux valeurs sont la source de la plupart des moments « pourquoi cela semble étrange ».

Flou rend l'ombre douce. Il simule la diffusion de la lumière — plus on s'éloigne de la source, plus l'ombre s'étend. Un blur-radius de 8px sur un élément petit ressemble très différemment à un élément grand.

Extension étend ou réduit la forme de base de l'ombre. Si vous souhaitez créer l'impression d'une ombre « éloignée » et douce, augmenter le flou sans extension négative signifie que l'ombre s'étend au-delà des limites de l'élément, ce qui peut donner une impression peu réaliste. Une légère extension négative le réduit, afin que le flou commence à partir d'un pied plus naturel.

Le bon compromis est généralement un flou modéré avec un zéro ou une légère extension négative. C'est ainsi que les ombres du monde réel fonctionnent — elles sont plus douces à distance, mais elles ne s'étendent pas au-delà de l'objet qui les projette.

Créer des ombres naturelles

Trois règles pour des ombres qui semblent intentionnelles :

1. Ne pas utiliser un noir pur. Les ombres réelles prennent en compte la couleur ambiante. Un noir profond ou un gris chaud foncé à 0.10–0.15 l'opacité lit comme une ombre sans ressembler à une forme imprimée. Essayez rgba(0, 0, 0, 0.12) comme point de départ, puis déplacez légèrement le ton vers le chaud ou le froid pour correspondre à votre palette.

2. Associez une seule source lumineuse. Si les ombres vont dans différentes directions sur différents éléments, la page semble incohérente. Choisissez une direction — généralement positive offset-y (lumière venant du haut) — et restez cohérent à l'échelle du système.

3. Gardez une opacité faible. Une ombre à opacité pleine lit comme un bord. Si vous pouvez clairement voir un bord rigide, vous avez soit trop d'opacité, soit un flou nul. Les ombres réelles sont subtiles — elles donnent du volume, pas une ligne.

Superposer plusieurs ombres pour créer de la profondeur

CSS permet d'ajouter plusieurs couches d'ombre sur un seul élément. C'est là que vous obtenez une profondeur réelle sans artefacts visuels.

Au lieu d'une seule grande ombre, essayez deux : une ombre serrée pour le contact, et une ombre diffuse pour l'élevation.

box-shadow:
  0 2px 4px rgba(0, 0, 0, 0.08),
  0 8px 24px rgba(0, 0, 0, 0.06);

La première couche fixe l'élément à la surface. La seconde donne l'impression qu'il flotte au-dessus. Aucune n'est « l'ombre » en tant que telle — ensemble, elles créent l'illusion de profondeur. Physiquement, cela imite la manière dont une source lumineuse forte proche crée une ombre serrée sous elle, tandis que la lumière ambiante remplit un halo plus doux plus loin.

Ombres internes : lorsque la lumière change de sens

Le inset mot-clé place l'ombre à l'intérieur des bordures de l'élément au lieu d'extérieur. Les principales utilisations sont :

  • État de bouton pressé: Une ombre interne légère sur :active crée la sensation physique de depression, comme un clic réel sur un bouton.
  • Profondeur des champs d'entrée: Les champs de saisie et les zones de texte ont l'air en retrait par rapport à la surface, avec une ombre interne sur le bord supérieur — un motif remontant à la conception skeuomorphe, mais qui reste clair.
/* Pressed button */
button:active {
  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);
}

/* Input field depth */
input {
  box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.10);
}

Performance : Quand utiliser filter : drop-shadow au lieu de

box-shadow déclenche une répétition à chaque changement — pas seulement sur l'élément, mais sur la couche peinte sous lui. Pour les animations ou les interfaces riches en défilement, cela ajoute un coût mesurable.

filter: drop-shadow() est exécutée par le compositeur GPU et est beaucoup plus économique pour les ombres animées. Elle suit aussi la forme réelle de l'élément (y compris les zones transparentes), tandis que box-shadow suit toujours le rectangle du modèle de boîte.

Règle pratique : utilisez box-shadow pour les ombres statiques sur les éléments de mise en page. Utilisez filter: drop-shadow sur les éléments animés ou sur les SVGs où l'ombre doit s'adapter à la forme visuelle plutôt qu'au cadre.

Des jetons d'ombre pour un système de conception

Le codage manuel des valeurs d'ombre par composant entraîne une incohérence. Définissez un petit ensemble de jetons d'élevation une fois, puis référencez-les partout.

:root {
  --shadow-sm:
    0 1px 2px rgba(0, 0, 0, 0.05),
    0 1px 4px rgba(0, 0, 0, 0.04);

  --shadow-md:
    0 2px 4px rgba(0, 0, 0, 0.07),
    0 4px 12px rgba(0, 0, 0, 0.06);

  --shadow-lg:
    0 4px 8px rgba(0, 0, 0, 0.08),
    0 8px 24px rgba(0, 0, 0, 0.06);

  --shadow-xl:
    0 8px 16px rgba(0, 0, 0, 0.08),
    0 16px 48px rgba(0, 0, 0, 0.06);

  --shadow-2xl:
    0 12px 24px rgba(0, 0, 0, 0.10),
    0 32px 80px rgba(0, 0, 0, 0.08);
}

Chaque jeton utilise l'approche à deux couches : une ombre serrée pour le contact et une ombre diffuse pour l'élevation. Le flou et l'opacité augmentent avec l'élevation — plus l'élément est éloigné de la surface, plus l'ombre est douce et étendue.

Ces valeurs fonctionnent bien sur des fonds blancs ou gris clair. Sur des fonds sombres, inversez la logique — utilisez des couleurs claires et semi-transparentes pour les ombres internes au lieu de couleurs sombres pour les ombres projetées.

Évitez les hypothèses

Si vous itérez sur les valeurs d'ombre — surtout lorsqu'on superpose plusieurs ombres ou qu'on teste différentes opacités — une prévisualisation en temps réel économise beaucoup de temps. Le Générateur d'ombres de boîte CSS à IO Tools vous permet d'ajuster tous les six paramètres en temps réel, de superposer plusieurs couches d'ombre et de copier directement le CSS généré. Utile pour ajuster de nouveaux jetons de conception ou pour valider que l'ombre est correcte avant qu'elle ne soit déployée en production.

La différence entre une ombre qui semble pensée et une ombre qui semble collée réside généralement en trois choses : une faible opacité, une couleur non noire, et en laissant le flou faire le travail que l'extension n'était jamais censée faire.

Envie d'une expérience sans pub ? Passez à la version sans pub

Installez nos extensions

Ajoutez des outils IO à votre navigateur préféré pour un accès instantané et une recherche plus rapide

Sur Extension Chrome Sur Extension de bord Sur Extension Firefox Sur Extension de l'opéra

Le Tableau de Bord Est Arrivé !

Tableau de Bord est une façon amusante de suivre vos jeux, toutes les données sont stockées dans votre navigateur. D'autres fonctionnalités arrivent bientôt !

ANNONCE · Supprimer ?
ANNONCE · Supprimer ?
ANNONCE · Supprimer ?

Coin des nouvelles avec points forts techniques

Impliquez-vous

Aidez-nous à continuer à fournir des outils gratuits et précieux

Offre-moi un café
ANNONCE · Supprimer ?