img-css

🎉 La fonction if() en CSS est enfin là !

Par Karsten Biedermann

Imagine pouvoir appliquer des styles CSS en fonction de conditions, directement dans ta feuille de style — sans JavaScript, sans prĂ©processeurs, sans hacks compliquĂ©s. C’est dĂ©sormais possible grĂące Ă  la nouvelle fonction CSS if(), qui vient d’arriver dans les navigateurs compatibles.

🧠 Qu’est-ce que la fonction if() en CSS ?

La fonction if() introduit une logique conditionnelle native dans CSS. Elle permet de dĂ©finir diffĂ©rentes valeurs pour une propriĂ©tĂ© selon que certaines conditions soient remplies ou non — trĂšs similaire Ă  un if/else dans un langage de programmation.

La syntaxe ressemble Ă  ceci :

property: if(
  condition-1: value-1;
  condition-2: value-2;
  else: default-value
);

CSS va Ă©valuer chaque condition dans l’ordre, et appliquer la premiĂšre valeur correspondante Ă  une condition vraie. Si aucune ne l’est, c’est la valeur else qui est utilisĂ©e.


📌 Trois grandes utilisations de if()

1ïžâƒŁ RequĂȘtes de style (style())

On peut réagir aux propriétés personnalisées CSS :

.card {
  --status: attr(data-status type(<custom-ident>));

  border-color: if(
    style(--status: pending): royalblue;
    style(--status: complete): seagreen;
    style(--status: error): crimson;
    else: gray
  );
}

Ainsi une seule data-attribute dans le HTML peut contrĂŽler l’apparence de l’élĂ©ment !


2ïžâƒŁ RequĂȘtes mĂ©dia en ligne (media())

Plus besoin de blocs @media imbriqués. Tu peux définir directement des valeurs réactives :

h1 {
  font-size: if(
    media(width >= 1200px): 3rem;
    media(width >= 768px): 2.5rem;
    media(width >= 480px): 2rem;
    else: 1.75rem
  );
}

Cela rend le code plus concis et plus lisible.


3ïžâƒŁ DĂ©tection de fonctionnalitĂ©s (supports())

Fini les stratégies de repli aléatoires. Tu peux vérifier si une fonctionnalité est disponible :

.element {
  border-color: if(
    supports(color: lch(0 0 0)): lch(50% 100 150);
    supports(color: lab(0 0 0)): lab(50 100 -50);
    else: rgb(200, 100, 50)
  );
}

Ainsi tu adaptes ton design selon les capacités du navigateur.


💡 Exemples concrets

🌙 Mode sombre en seulement trois lignes

body {
  --theme: "dark"; /* Peut ĂȘtre changĂ© via JS ou prĂ©fĂ©rence utilisateur */

  background: if(
    style(--theme: "dark"): #1a1a1a;
    else: white
  );

  color: if(
    style(--theme: "dark"): #e4e4e4;
    else: #333
  );
}

⚠ Composants d’interface adaptatifs

.alert {
  --type: attr(data-type type(<custom-ident>));

  background: if(
    style(--type: success): #d4edda;
    style(--type: warning): #fff3cd;
    style(--type: danger): #f8d7da;
    style(--type: info): #d1ecf1;
    else: #f8f9fa
  );

  border-left: 4px solid if(
    style(--type: success): #28a745;
    style(--type: warning): #ffc107;
    style(--type: danger): #dc3545;
    style(--type: info): #17a2b8;
    else: #6c757d
  );
}

Cet exemple montre comment personnaliser l’apparence d’un composant selon son Ă©tat, sans redondance ou classes CSS multiples.


📊 Support navigateurs (à ce jour)

À la date d’aoĂ»t 2025 :

✅ Chrome/Edge à partir de la version 137
✅ Chrome Android à partir de la version 139
❌ Firefox — en cours de dĂ©veloppement
❌ Safari — sur la feuille de route
❌ Opera — pas encore pris en charge Medium

👉 Cela signifie que tu dois encore prĂ©voir des valeurs de repli traditionnelles pour garantir la compatibilitĂ© avec tous les navigateurs.


🚀 Et aprùs ?

Le groupe de travail CSS planche déjà sur des extensions :

🧠 RequĂȘtes de plage (ex. : if(style(--value > 100): ...))
🔗 OpĂ©rateurs logiques (and, or)
📩 IntĂ©gration avec les container queries pour plus d’adaptabilitĂ© contextuelle


📌 Conclusion

La fonction if() en CSS marque une Ă©tape importante dans l’évolution du langage : elle permet d’introduire une logique dĂ©clarative directement au sein du CSS, rĂ©duisant le besoin de JavaScript ou de prĂ©processeurs dans de nombreux cas. MĂȘme si le support reste limitĂ© Ă  certains navigateurs aujourd’hui, elle ouvre la porte Ă  des styles plus expressifs et puissants. Source : Medium