Atmosphère✨ Premium

Morphing Blob

Forme organique en CSS pur : huit valeurs de border-radius se déforment sur un cycle de 8 secondes avec un dégradé indigo-fuchsia — aucun script requis.

CSSOrganic

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. Atmosphère comprend 57 effets, dont 10 gratuits. Découvrir la catégorie →

3 exemples d'usage

Hero / Landing — Bannière de service créatif — Morphing Blob exemple 1

① Hero / Landing — Bannière de service créatif

QuandPage d'accueil d'une app créative, d'un studio IA ou d'une agence de design : le blob remplace une image hero statique pour une présence immédiate sans chargement réseau.
PourquoiLa déformation continue capte l'attention en périphérie du regard sans distraire du titre ; l'effet reste en retrait grâce à un scrim léger.
Réglageswidth: 320px; height: 320px, animation-duration: 12s (rythme serein), dégradé indigo-fuchsia par défaut.
Section Témoignages — Blob organique derrière une citation client — Morphing Blob exemple 2

② Section Témoignages — Blob organique derrière une citation client

QuandPage « À propos » ou section témoignages d'une agence créative : le blob de grande taille occupe la moitié gauche derrière un portrait ou une citation, créant un fond organique impactant sans ressource externe.
PourquoiÀ 280 px la morphose est pleinement lisible sur la moitié de l'écran ; le dégradé indigo-fuchsia renforce l'identité visuelle de l'agence et dialogue avec l'avatar portrait posé par-dessus.
Réglageswidth: 280px; height: 280px, animation-duration: 10s, dégradé indigo-fuchsia par défaut, opacity: 0.85.
Micro-interaction de conversion — Backdrop de CTA d'inscription — Morphing Blob exemple 3

③ Micro-interaction de conversion — Backdrop de CTA d'inscription

QuandBloc CTA final d'une landing page (newsletter, SaaS, communauté) : le blob apparaît derrière le bouton « Rejoindre » au scroll dans le viewport.
PourquoiLe mouvement organique derrière le CTA crée une énergie visuelle qui invite à l'action sans perturber la lisibilité du bouton ni du texte.
Réglageswidth: 260px; height: 260px, animation-duration: 10s, opacity: 0.7, gradient orange-rose linear-gradient(135deg, #f97316, #db2777).

Comment ça marche

L'effet repose entièrement sur la notation étendue de border-radius : x1 x2 x3 x4 / y1 y2 y3 y4 définit indépendamment les rayons horizontaux et verticaux des quatre coins. Quatre étapes clés (0 %, 25 %, 50 %, 75 %) pilotent la déformation dans @keyframes morphBlob ; le moteur CSS interpole fluidement entre elles sans aucun code impératif.

L'animation utilise ease-in-out sur la propriété animation globale — pas des animation-timing-function par étape — ce qui ralentit naturellement chaque début et fin de cycle et renforce l'impression d'un organisme qui respire plutôt que d'une transition mécanique.

Le remplissage est un linear-gradient(135deg, #6366f1, #d946ef) — indigo vers fuchsia — tracé en diagonale bas-gauche → haut-droit. L'angle de 135° accentue la perception de volume sur la silhouette en perpétuelle déformation : les coins sombres et les coins clairs basculent à chaque morphing.

Il n'y a aucun JavaScript : pas de requestAnimationFrame, pas d'observateur, pas d'état côté script. La boucle d'animation est entièrement déléguée au moteur de rendu du navigateur, ce qui garantit des performances GPU optimales et une intégration transparente dans n'importe quel framework.

Accessibilité

  • Pas de prefers-reduced-motion dans le code source : l'animation tourne en permanence quel que soit le réglage système. Ajouter dans votre CSS : @media (prefers-reduced-motion: reduce) { .morph-blob { animation: none; border-radius: 50%; } }
  • Le .morph-blob est un élément purement décoratif, sans texte ni interaction : aucun piège de focus ou de navigation clavier propre à l'effet.
  • Le HTML fourni n'expose ni aria-hidden ni aria-label. En usage décoratif, ajouter aria-hidden="true" sur le conteneur parent pour exclure le blob de l'arbre d'accessibilité.
  • Aucun contraste de texte à vérifier sur le blob seul — la responsabilité du contraste revient au contenu overlay positionné par l'intégrateur.
  • Aucun événement natif (clic, focus, clavier) attaché au blob : l'effet est passif, sans risque de piège de navigation.

Compatibilité navigateur

Requiert border-radius avec notation slash et les animations CSS — supportés dans tous les navigateurs modernes depuis 2012.

Chrome 36+✓ Complet
Firefox 16+✓ Complet
Safari 9+✓ Complet
Edge 79+✓ Complet
Mobile iOS✓ Complet
Android Chrome✓ Complet

Si les animations CSS ne sont pas supportées, le <code>div.morph-blob</code> s'affiche comme un rectangle aux coins légèrement arrondis avec le dégradé intact — aucune erreur JS, la page reste lisible.

Le code

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

index.html — structure
<div class="demo-preview" aria-hidden="true">
  <!-- Blob décoratif — toute la mécanique est dans le CSS -->
  <div class="morph-blob"></div>

  <!-- Contenu overlay : positionner en absolu sur .demo-preview (position: relative) -->
</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 (.morph-blob, l. 57) linear-gradient(135deg, #6366f1, #d946ef) Couleurs et angle du dégradé. Ex. : linear-gradient(135deg, #0ea5e9, #22d3ee) pour un rendu aquatique, ou une couleur unie #6366f1 pour un blob monochrome.
animation-duration (.morph-blob, l. 58) 8s Durée d'un cycle complet. 4s = blob nerveux et énergique, 16s = respiration lente et méditative.
width / height (.morph-blob, l. 55-56) 200px Taille de la forme. Valeurs identiques = blob quasi-carré ; height supérieur = blob ovalisé verticalement.
animation-timing-function (.morph-blob, l. 58) ease-in-out Courbe de tempo. linear = morphing constant et mécanique, ease-in-out = ralentissement aux extrêmes (organique).
border-radius 0%/100% (@keyframes, l. 32) 60% 40% 30% 70%/60% 30% 70% 40% Forme de départ et d'arrivée (0 % et 100 % du cycle). Toutes les combinaisons de 0 à 100 % sont valides pour les 8 valeurs.
border-radius 50% (@keyframes, l. 40) 50% 60% 30%/30% 40% 70% 50% Forme à mi-cycle. Modifier ces valeurs change le point intermédiaire le plus éloigné de la silhouette initiale.

FAQ

Non, l'effet est 100 % CSS. Il n'y a aucun script : l'animation est déclarée dans @keyframes morphBlob et appliquée via animation sur .morph-blob. Compatible Angular, React, Vue, Svelte — il suffit d'inclure le CSS et de placer le <div class="morph-blob"></div> dans le DOM.
Le code source ne contient pas de prefers-reduced-motion. Ajoutez dans votre CSS : @media (prefers-reduced-motion: reduce) { .morph-blob { animation: none; border-radius: 50%; } } — le blob devient un cercle statique avec le dégradé intact, visible et propre.
Les dégradés CSS ne sont pas interpolables directement entre deux valeurs. L'approche la plus simple : animer filter: hue-rotate() sur .morph-blob avec une seconde @keyframes, ce qui fait tourner les teintes du dégradé sur l'ensemble du spectre sans toucher à la structure de l'effet.