Backgrounds✨ Premium

Animated Blobs

Trois formes organiques pures CSS flottent en douceur grâce à blur(80px) et keyframes désynchronisés — un fond animé zéro JavaScript.

CSSOrganicBlur

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 plein écran — Landing page dark SaaS — Animated Blobs exemple 1

① Hero plein écran — Landing page dark SaaS

QuandLa section hero d'un site SaaS ou portfolio occupe toute la hauteur du viewport, avec un titre centré et un CTA sur fond sombre.
PourquoiLes blobs créent un dégradé ambiant animé qui donne de la vie à un fond noir sans écraser le message — bien plus dynamique qu'un fond uni, sans requérir d'image ni de JS.
RéglagesAgrandissez blob-1 à 500 px et blob-2 à 420 px pour couvrir un viewport large ; ralentissez la durée à 30s pour un mouvement cinématique.
Section Équipe — Page À propos d'une startup — Animated Blobs exemple 2

② Section Équipe — Page À propos d'une startup

QuandUne page À propos présente l'équipe fondatrice dans un grand bloc pleine largeur sur fond sombre, avec photos rondes et biographies courtes.
PourquoiLes blobs désynchronisés flottent doucement derrière portraits et textes, donnant vie à une section souvent austère — sans illustration supplémentaire, le fond devient signature visuelle de la marque.
RéglagesConservez les tailles par défaut (blob-1 300 px, blob-2 250 px, blob-3 200 px) et le blur à 80px ; baissez opacity à 0,45 pour que les photos restent lisibles. Durée conseillée : 25s pour un flottement ample.
Onboarding mobile — Application créative ou bien-être — Animated Blobs exemple 3

③ Onboarding mobile — Application créative ou bien-être

QuandUne application mobile affiche des slides plein écran lors de l'onboarding, avec un fond de blobs animé commun à toutes les étapes.
PourquoiLe fond de blobs ne se réinitialise pas entre les slides : le mouvement continu crée une continuité visuelle douce qui accompagne la navigation sans interruption perçue.
RéglagesAdaptez les couleurs au thème de l'app (palette douce pour le bien-être, saturée pour le créatif) ; gardez 20s pour un cycle suffisamment lent sur écran tactile. Réduisez le blur à 60px pour des contours légèrement plus définis.

Comment ça marche

L'effet repose entièrement sur CSS : chaque .blob est un <div> rond (border-radius: 50%) auquel un filter: blur(80px) diffuse la couleur bien au-delà de ses dimensions réelles. Cette diffusion gaussienne transforme un simple cercle coloré en forme organique aux contours indéfinis — aucun SVG, aucune librairie.

Deux animations @keyframes distinctes orchestrent le mouvement : blobMove pour blob-1 et blob-2 (positionnés en absolu aux coins du conteneur) applique des translations directes (translate(50px, -50px) au pic) combinées à des variations de scale (0,9–1,1). blobMoveCenter — réservée à blob-3, centré via top: 50%; left: 50% — conserve le décalage translate(-50%, -50%) à chaque keyframe avec des offsets en calc(), pour que la forme reste ancrée autour du centre géométrique même en dérivant.

Les trois blobs tournent sur 20 s avec des délais négatifs décalés : -7 s pour blob-2 (via animation-delay), -14 s pour blob-3 (intégré dans la propriété animation en raccourci). Ils ne se synchronisent jamais, créant une danse continue et naturelle. overflow: hidden sur .bg-blob coupe les débordements — blob-1 (top: -100px; left: -100px) et blob-2 (bottom: -100px; right: -100px) naissent hors du conteneur et émergent progressivement des bords, renforçant l'impression de profondeur.

L'opacity: 0.6 commun aux trois blobs génère une additivité partielle dans les zones de chevauchement : l'indigo (#6366f1), le fuchsia (#d946ef) et le cyan (#06b6d4) se fondent en teintes intermédiaires sans mode de fusion custom. L'effet étant zéro JavaScript, il n'y a ni requestAnimationFrame ni logique de pause — les animations CSS sont pilotées directement par le moteur de composition du navigateur, GPU-accéléré.

Accessibilité

  • Pas de prefers-reduced-motion dans le code : le CSS ne contient aucun bloc @media (prefers-reduced-motion) — les animations tournent en continu même pour les utilisateurs qui ont activé cette préférence OS. À ajouter si l'effet couvre une grande surface ou tourne longtemps : @media (prefers-reduced-motion: reduce) { .blob { animation: none; } }.
  • Aucun attribut ARIA sur .bg-blob ni ses enfants — si le fond porte un sens visuel important, ajoutez role="img" et aria-label au conteneur.
  • Le <span class="bg-label"> inclus dans le HTML de démo est lu par les lecteurs d'écran tel quel — retirez-le ou ajoutez aria-hidden="true" s'il s'agit d'un label de démo non pertinent pour l'utilisateur final.
  • Contraste du contenu overlay : les blobs se déplacent en permanence, les zones claires et sombres changent. Si vous placez du texte par-dessus, testez plusieurs configurations et ajoutez un scrim semi-transparent pour garantir WCAG AA (ratio ≥ 4,5:1).
  • Navigation au clavier : l'effet est purement décoratif, aucune interaction programmée — compatible avec tout ordre de tabulation, aucun piège de focus.

Compatibilité navigateur

Nécessite CSS animations et filter: blur() — supportés dans tous les navigateurs modernes depuis 2016. Zéro dépendance externe.

Chrome 53+✓ Complet
Firefox 35+✓ Complet
Safari 9.1+✓ Complet
Edge 79+✓ Complet
Mobile iOS✓ Complet
Android Chrome✓ Complet

Si <code>filter: blur()</code> n'est pas supporté (navigateurs antérieurs à 2016), les blobs s'affichent comme des cercles pleins colorés — l'aspect organique disparaît mais la page reste fonctionnelle et sans erreur JS.

Le code

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

index.html — structure
<div class="bg-blob">
  <div class="blob blob-1"></div>
  <div class="blob blob-2"></div>
  <div class="blob blob-3"></div>
  <!-- Votre contenu par-dessus -->
</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 dans .blob-1 #6366f1 Couleur de la forme principale (indigo, coin haut-gauche). Remplacez par toute valeur CSS valide : hex, hsl, oklch.
background dans .blob-2 #d946ef Couleur de la forme secondaire (fuchsia, coin bas-droit), animée avec un délai de -7 s.
background dans .blob-3 #06b6d4 Couleur de la forme centrale (cyan), pilotée par blobMoveCenter pour rester ancrée au centre du conteneur.
filter: blur(80px) dans .blob 80px Intensité de diffusion. 40–60 px = formes plus nettes, 100–120 px = fondu quasi-total. Plus la valeur est haute, plus le coût GPU est élevé.
opacity: .6 dans .blob 0.6 Transparence commune à toutes les formes. 0,3 = très discret, 0,8 = couleurs saturées. Détermine aussi l'intensité du mélange de couleurs aux intersections.
width/height dans .blob-1/.blob-2/.blob-3 300 px / 250 px / 200 px Taille de chaque forme. Règle pratique : blob ≈ 50–80 % de la plus petite dimension du conteneur.
20s dans animation (les trois blobs) 20s Durée d'un cycle complet. 12 s = rapide et nerveux, 30 s = lent et cinématique. Utilisez la même valeur pour les trois blobs pour conserver la cohérence rythmique.
background: #0a0a0f dans .bg-blob #0a0a0f Couleur du fond. Changez pour un fond clair (ex. #f8fafc) et baissez l'opacité des blobs à 0,3–0,4 pour un rendu pastel.

FAQ

Oui — changez background: #0a0a0f dans .bg-blob par une couleur claire (ex. #f0f4f8) et baissez l'opacity des blobs à 0,3–0,4. Les couleurs par défaut (#6366f1 indigo, #d946ef fuchsia) donnent de bons résultats sur fond blanc, mais adaptez selon votre palette.
Ajoutez un <div class="blob blob-4"></div> dans le HTML. Dans le CSS : .blob-4 { width: 220px; height: 220px; background: #f97316; top: 20%; right: -80px; animation-delay: -10s; } — réutilisez l'animation blobMove existante, pas besoin d'une troisième règle keyframe.
filter: blur() est accéléré GPU mais coûteux sur de grandes surfaces ou avec de nombreux blobs. Sur mobile bas de gamme, réduisez le blur à 50–60 px et la taille des blobs. Pour respecter les préférences d'accessibilité, ajoutez @media (prefers-reduced-motion: reduce) { .blob { animation: none; } }.