Backgrounds✨ Premium

Floating Shapes

Trois orbes colorées à blur 60 px dérivent en décalage de phase sur fond sombre — atmosphère ambiante 100 % CSS, aucun JavaScript.

CSSShapesBlur

Vous aurez accès à la démo interactive avec un compte gratuit.

Cet effet fait partie d'Effect.Labs — 811 effets vanilla, une partie gratuite, une partie premium. Backgrounds comprend 50 effets, dont 6 gratuits. Découvrir la catégorie →

3 exemples d'usage

Hero de landing — Fond ambiant pour SaaS dark-mode — Floating Shapes exemple 1

① Hero de landing — Fond ambiant pour SaaS dark-mode

QuandPage d'accueil ou section above-the-fold d'un produit tech en thème sombre : le fond est vide et a besoin de profondeur sans alourdir le markup.
PourquoiLes orbes diffuses couvrent toute la surface sans écraser le texte — elles ajoutent profondeur et couleur à coût CSS nul, sans aucun asset image.
Réglagesanimation-duration: 28s sur .shape pour un déplacement très lent ; amplitude réduite à ±30 px dans les keyframes ; couleurs adaptées à la brand du produit.
Section pricing — Cartes de plans sur fond vivant — Floating Shapes exemple 2

② Section pricing — Cartes de plans sur fond vivant

QuandSection de comparaison de plans ou de fonctionnalités sur fond sombre qui doit paraître premium sans asset graphique.
PourquoiLes halos flottants apportent une impression de lumière sous les cartes sans aucune image — renforcent la perception qualité et la profondeur entre les éléments.
Réglagesopacity: 0.3 sur .shape pour un fond plus discret ; formes agrandies à 450–500 px ; palette chaude (orange #f97316, amber #f59e0b, rose #f43f5e) pour un accent chaud.
Header d'article — Bannière éditoriale couleur-thème — Floating Shapes exemple 3

③ Header d'article — Bannière éditoriale couleur-thème

QuandPage de blog technique où chaque article adopte une couleur thématique propre à son sujet, sans image de couverture.
PourquoiChanger les trois couleurs des <code>.shape-N</code> par article génère un header unique visuellement — zéro poids réseau, impact visuel immédiat.
RéglagesDeux formes dans la teinte primaire du thème, une troisième en accent complémentaire ; filter: blur(40px) pour des bords légèrement plus définis ; animation-duration: 32s pour une dérive quasi imperceptible.

Comment ça marche

L'effet repose sur trois <div> positionnés en absolu dans .bg-floating-shapes, mis en forme comme des disques par border-radius: 50%. Tout est CSS pur : l'animation @keyframes floatShapes de 20 secondes enchaîne quatre positions clés qui combinent des translations diagonales (±50 px) et une rotation complète (0° → 270°), avec une courbe ease-in-out qui adoucit chaque inversion de direction.

L'identité visuelle repose sur deux propriétés combinées : filter: blur(60px) transforme chaque disque de couleur unie en un halo diffus aux bords insaisissables ; opacity: 0.5 rend les halos semi-transparents, si bien qu'aux intersections l'indigo (#6366f1), le rose (#d946ef) et le cyan (#06b6d4) se composent optiquement — la couleur mixte émerge naturellement sans calque supplémentaire ni dégradé complexe.

Les trois formes partagent la même animation mais portent des délais négatifs distincts (0 s, −5 s, −10 s). Un délai négatif fait démarrer l'animation à un instant déjà avancé du cycle : les trois orbes sont toujours à des positions différentes, leur chevauchement changeant en continu de façon organique, sans jamais se synchroniser visiblement.

Le conteneur a overflow: hidden — les formes sont volontairement surdimensionnées et positionnées en partie hors des bords (top: −100 px, right: −150 px…) pour que le halo couvre les coins sans zones vides. Le contenu overlay (texte, boutons) se pose par-dessus via le flux normal ou position: absolute; z-index: 1.

Accessibilité

  • prefers-reduced-motion absent : le code source ne gère pas cette préférence OS — l'animation tourne toujours. Ajoutez manuellement @media (prefers-reduced-motion: reduce) { .shape { animation: none; } } si votre projet le requiert.
  • Les formes sont purement décoratives : ajoutez aria-hidden="true" sur le conteneur .bg-floating-shapes pour le masquer aux lecteurs d'écran.
  • Aucune interaction clavier ni JavaScript : le composant est passif, pas de piège au focus, aucun événement à gérer.
  • Le texte overlay doit assurer un contraste WCAG AA (ratio ≥ 4,5:1) sur le fond sombre — vérifiez le ratio si vous modifiez l'opacité ou les couleurs des formes.
  • Pas de canvas : aucun attribut role ni aria-label n'est nécessaire sur les formes elles-mêmes.

Compatibilité navigateur

Nécessite filter: blur() et CSS Animations — supportés dans tous les navigateurs modernes depuis 2020.

Chrome 110+✓ Complet
Firefox 110+✓ Complet
Safari 15+✓ Complet
Edge 110+✓ Complet
Mobile iOS✓ Complet
Android Chrome✓ Complet

Si <code>filter</code> n'est pas supporté (IE 11), les formes s'affichent comme des disques de couleur unie sans flou — le fond reste coloré, la page reste fonctionnelle, aucune erreur JS.

Le code

Structure HTML à coller dans votre page (CSS + JS disponibles avec un compte premium) :

index.html — structure
<div class="bg-floating-shapes">
  <div class="shape shape-1"></div>
  <div class="shape shape-2"></div>
  <div class="shape shape-3"></div>

  <!-- Facultatif : contenu overlay -->
</div>
🔒 Débloquer le code complet — à partir de 2,99 € le 1er mois

HTML + CSS + JS complet, prêt à coller — avec des centaines d'effets premium.

Personnaliser

Options passées à l'API ou attributs data-* :

Option / propriétéDéfautEffet
background sur .shape-1 / .shape-2 / .shape-3 #6366f1 / #d946ef / #06b6d4 Couleurs des trois orbes — remplacez par votre palette brand. Chaque forme accepte n'importe quelle valeur CSS valide (hex, hsl, gradient).
width / height sur .shape-1 / .shape-2 / .shape-3 300 px / 400 px / 250 px Taille des orbes. Formes plus grandes = couverture plus large ; réduisez à 150–200 px pour un fond fin et discret.
filter: blur(…) sur .shape 60px Rayon de flou de toutes les orbes. 40 px = bords légèrement définis, 80 px+ = halos très fondus et atmosphériques.
opacity sur .shape 0.5 Intensité des halos. 0.3 = fond très discret, 0.7 = couleurs saturées — affecte aussi l'intensité du mélange optique aux intersections.
animation-duration sur .shape 20s Durée d'un cycle complet. 12 s = déplacement dynamique et perceptible, 30 s+ = dérive presque imperceptible, plus cinématique.
translate(50px, -50px) dans @keyframes floatShapes 50 px / −50 px Amplitude du déplacement à chaque étape clé. ±20 px = fond presque fixe, ±80 px = mouvement très marqué.
background sur .bg-floating-shapes #0a0a0f Couleur du fond derrière les orbes — remplacez par la couleur de votre section pour intégrer l'effet dans n'importe quel thème.

FAQ

Non. L'effet est 100 % CSS : trois div, une règle @keyframes et des propriétés filter, opacity, animation. Aucun fichier JS n'est nécessaire. Copiez le HTML et le CSS dans un projet React, Vue, Angular ou tout autre framework — ça fonctionne sans configuration supplémentaire.
Dupliquez une .shape dans le HTML, attribuez-lui un nom unique (ex. .shape-4), définissez son background, sa taille et sa position dans le CSS, puis ajoutez un animation-delay négatif différent des trois existants (ex. -15s pour une phase à 75 % du cycle). La nouvelle forme hérite automatiquement de l'animation floatShapes.
L'impact est faible : le navigateur délègue transform et filter au GPU via son compositeur — les trois éléments sont promus sur leur propre couche de rendu, le CPU reste quasiment inactif. Sur un mobile d'entrée de gamme, réduisez le flou à 40px et l'opacité à 0.3 pour alléger la charge de composition.