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

