Création d'arrière-plans flous avec la propriété CSS Backdrop-Filter
Les interfaces web modernes exigent une profondeur visuelle sans sacrifier les performances. La propriété CSS backdrop-filter offre une solution puissante pour créer des arrière-plans flous et des effets de glassmorphisme. Contrairement aux techniques de flou traditionnelles qui nécessitent des éléments dupliqués ou des solutions de contournement complexes, backdrop-filter fournit une approche propre et efficace pour obtenir ces motifs de conception populaires.
Points clés à retenir
backdrop-filterfloute la zone derrière un élément tout en gardant le contenu net, contrairement àfilterqui floute l’élément lui-même- Les effets de glassmorphisme nécessitent de la transparence, du flou et des bordures subtiles pour un impact visuel optimal
- Tous les principaux navigateurs prennent désormais en charge
backdrop-filter, bien que les versions de Safari antérieures à 17 nécessitent le préfixe-webkit- - L’optimisation des performances inclut la limitation des effets de flou simultanés et l’utilisation d’indices d’accélération GPU
Comprendre CSS Backdrop-Filter vs Filter
La propriété backdrop-filter applique des effets graphiques à la zone derrière un élément, tandis que la propriété standard filter affecte l’élément lui-même et ses enfants. Cette différence fondamentale rend backdrop-filter idéal pour créer des effets de verre dépoli où le contenu reste net pendant que l’arrière-plan se floute.
/* Floute l'élément et son contenu */
.with-filter {
filter: blur(10px);
}
/* Floute uniquement l'arrière-plan derrière l'élément */
.with-backdrop-filter {
backdrop-filter: blur(10px);
background-color: rgba(255, 255, 255, 0.2);
}
L’élément utilisant backdrop-filter doit avoir de la transparence pour révéler l’effet—soit par opacity soit par des arrière-plans semi-transparents.
Créer du glassmorphisme avec CSS Blur()
Le glassmorphisme repose sur trois composants clés : la transparence, le flou et des bordures subtiles. Voici une implémentation minimale :
.glass-card {
backdrop-filter: blur(16px);
background-color: rgba(255, 255, 255, 0.1);
border: 1px solid rgba(255, 255, 255, 0.2);
border-radius: 12px;
}
<div class="glass-card">
<h2>Effet de verre dépoli</h2>
<p>Le contenu reste parfaitement net</p>
</div>
Pour des effets de verre dépoli plus prononcés, combinez plusieurs filtres d’arrière-plan :
.frosted-panel {
backdrop-filter: blur(20px) saturate(180%);
background-color: rgba(255, 255, 255, 0.15);
}
Compatibilité des navigateurs
La propriété CSS backdrop-filter bénéficie désormais d’une prise en charge de base dans tous les principaux navigateurs :
- Chrome 76+ ✅ Prise en charge complète
- Edge (Chromium) 79+ ✅ Prise en charge complète
- Firefox 103+ ✅ Prise en charge complète
- Safari 9+ ✅ Prise en charge complète (avec le préfixe
-webkit-avant la version 17) - Internet Explorer ❌ Aucune prise en charge
Safari 17 et versions ultérieures ne nécessitent plus le préfixe -webkit-. Pour les versions plus anciennes de Safari, incluez la version préfixée :
.glass-element {
-webkit-backdrop-filter: blur(10px); /* Safari 16 et antérieurs */
backdrop-filter: blur(10px);
}
Discover how at OpenReplay.com.
Considérations de performance
Les filtres d’arrière-plan déclenchent la composition accélérée par GPU mais peuvent impacter les performances sur les appareils mobiles. Suivez ces stratégies d’optimisation :
.optimized-blur {
backdrop-filter: blur(12px);
will-change: backdrop-filter; /* Indice pour l'optimisation du navigateur */
transform: translateZ(0); /* Force la couche GPU */
}
Limitez le nombre d’éléments utilisant backdrop-filter simultanément. Sur mobile, envisagez de réduire le rayon de flou ou de désactiver complètement les effets :
@media (max-width: 768px) and (hover: none) {
.glass-card {
backdrop-filter: blur(8px); /* Flou réduit sur les appareils tactiles */
}
}
Accessibilité et préférences utilisateur
Respectez les préférences utilisateur pour la réduction de la transparence et du mouvement :
@media (prefers-reduced-transparency: reduce) {
.glass-card {
backdrop-filter: none;
background-color: rgba(255, 255, 255, 0.95);
}
}
@media (prefers-contrast: high) {
.glass-card {
backdrop-filter: blur(4px);
background-color: rgba(255, 255, 255, 0.9);
border: 2px solid rgba(0, 0, 0, 0.5);
}
}
Assurez des ratios de contraste de couleur suffisants pour le texte sur des arrière-plans flous. WCAG AA exige 4,5:1 pour le texte normal et 3:1 pour le texte de grande taille.
Techniques de repli pour les navigateurs anciens
Pour les navigateurs ne prenant pas en charge backdrop-filter, implémentez une dégradation élégante :
.glass-fallback {
/* Repli pour les navigateurs non pris en charge */
background-color: rgba(255, 255, 255, 0.85);
/* Navigateurs modernes avec prise en charge */
@supports (backdrop-filter: blur(10px)) {
background-color: rgba(255, 255, 255, 0.2);
backdrop-filter: blur(10px);
}
}
Approche alternative utilisant des pseudo-éléments pour les navigateurs plus anciens :
.legacy-blur {
position: relative;
background-color: rgba(255, 255, 255, 0.9);
}
.legacy-blur::before {
content: '';
position: absolute;
inset: 0;
background: inherit;
filter: blur(10px);
z-index: -1;
}
@supports (backdrop-filter: blur(10px)) {
.legacy-blur::before {
display: none;
}
.legacy-blur {
backdrop-filter: blur(10px);
background-color: rgba(255, 255, 255, 0.2);
}
}
Conclusion
La propriété CSS backdrop-filter transforme la façon dont nous créons des arrière-plans flous et des effets de glassmorphisme dans la conception web moderne. Avec une prise en charge de base par les navigateurs, les développeurs peuvent implémenter ces effets en toute confiance tout en maintenant les performances grâce à l’optimisation GPU et en respectant les préférences d’accessibilité des utilisateurs. La combinaison de la détection de fonctionnalités et de l’amélioration progressive garantit que les expériences se dégradent élégamment pour les navigateurs anciens restants tout en offrant des interfaces soignées pour les utilisateurs modernes.
FAQ
La cause la plus courante est d'oublier d'ajouter de la transparence à l'élément. Backdrop-filter ne se montre qu'à travers des arrière-plans transparents ou semi-transparents. Utilisez des couleurs rgba avec des valeurs alpha inférieures à 1 ou réduisez la propriété opacity.
Les performances varient selon l'appareil et l'intensité du flou. Les appareils mobiles gèrent généralement bien 3 à 5 effets de flou simultanés. Les systèmes de bureau peuvent en gérer davantage. Surveillez les taux de rafraîchissement et réduisez le rayon de flou ou le nombre d'éléments si le défilement devient saccadé.
Oui, mais animez avec parcimonie car cela peut être intensif en termes de performances. Utilisez les transitions CSS pour des résultats plus fluides et envisagez d'utiliser will-change backdrop-filter avant le début des animations. Supprimez will-change après la fin de l'animation pour libérer de la mémoire.
L'utilisation de rgba n'affecte que la transparence de la couleur d'arrière-plan tandis qu'opacity affecte l'élément entier, y compris le texte et les éléments enfants. Pour les effets de glassmorphisme où le texte doit rester entièrement opaque, utilisez toujours rgba pour la transparence de l'arrière-plan.
Truly understand users experience
See every user interaction, feel every frustration and track all hesitations with OpenReplay — the open-source digital experience platform. It can be self-hosted in minutes, giving you complete control over your customer data. . Check our GitHub repo and join the thousands of developers in our community..