Transitions✨ Premium

Shape Morph Transition

Une seule forme de 80 px qui passe du cercle au blob, puis au carré arrondi et revient, en tournant d'un tour et en respirant de 0,9 à 1,1 : huit rayons de border-radius interpolés (syntaxe avec « / »), boucle de 6 s — CSS pur, zéro JavaScript, cercle immobile si l'utilisateur réduit les animations.

CSSMorphFormes

Mis à jour le

Cet effet fait partie d'Effect.Labs — 840 effets vanilla, une partie gratuite, une partie premium. Transitions comprend 52 effets, dont 9 gratuits. Découvrir la catégorie →

3 exemples d'usage

Cellule qui se prépare à la division — manuel numérique de SVT — Shape Morph Transition exemple 1

① Cellule qui se prépare à la division — manuel numérique de SVT

QuandL'élève avance dans le schéma de la mitose : la cellule ronde au repos se met à se déformer, et le texte passe d'« Interphase » à « Prophase : la cellule s'étire ».
PourquoiUne seule forme qui se déforme sans saut montre la continuité du vivant mieux qu'une suite d'images fixes.
RéglagesForme agrandie à 150 px, rose avec membrane de 3 px et noyau violet (enfant, qui tourne avec elle) ; keyframe et durée d'origine (6 s) ; cercle tenu 0,4 s, transformation jouée 1,5 s (jusqu'au blob de 25 %), puis figée avec animation-play-state: paused.
Mascotte du tri sélectif — appli d'une communauté de communes — Shape Morph Transition exemple 2

② Mascotte du tri sélectif — appli d'une communauté de communes

QuandL'usager scanne un emballage : la mascotte ronde (bac verre) se transforme en carré bleu quand l'appli reconnaît une boîte de céréales (bac papier).
PourquoiLa mascotte change de forme selon le bac : l'enfant associe la forme au conteneur, et le passage continu du rond au carré se retient mieux qu'un changement d'icône.
RéglagesForme de 130 px ; keyframe jouée en 2,6 s au lieu de 6 s pour atteindre le carré (50 %) en 1,3 s, puis figée ; couleur verte puis bleue ; yeux posés dans un calque frère, pour ne pas tourner avec la forme.
Four de potier en chauffe — appli d'un four céramique connecté — Shape Morph Transition exemple 3

③ Four de potier en chauffe — appli d'un four céramique connecté

QuandPendant la cuisson, la forme orange tourne et se déforme en continu tant que le four monte en température ; à 1 040 °C, elle se fige et l'appli affiche « Palier atteint ».
PourquoiLa forme molle qui tourne évoque la terre au tour ; elle se fige quand le palier est atteint, et l'immobilité dit « c'est stable » sans autre message.
RéglagesForme de 140 px en dégradé radial crème-orange-brique, halo orange de 40 px ; keyframe d'origine (6 s) jouée 1,6 s puis figée à l'arrivée au palier.

Comment ça marche

Le cadre .md-morph-stage (300 px de haut au minimum, fond #0a0a0f) centre .md-shape-morph, qui contient la forme .md-morph-shape : 80 × 80 px, dégradé indigo vers cyan (#6366f1 → #06b6d4), border-radius: 50% au repos. Elle joue en boucle mdMorphShape, 6 s, ease-in-out, en cinq étapes : 0 % cercle ; 25 % blob 30% 70% 70% 30% / 30% 30% 70% 70%, tourné de 90° et agrandi à 1,1 ; 50 % carré aux coins de 10 %, tourné de 180° et réduit à 0,9 ; 75 % le blob inverse 70% 30% 30% 70% / 70% 70% 30% 30%, à 270° et 1,1 ; 100 % retour au cercle après un tour complet.

Le secret de la forme organique est la barre oblique : avant elle, les rayons horizontaux des quatre coins ; après, les rayons verticaux. Huit valeurs indépendantes donnent des coins elliptiques, plus seulement ronds, et le navigateur interpole chacune séparément entre deux étapes : la forme passe d'un état à l'autre sans saut, sans SVG ni JavaScript. Mesuré dans Chromium 151, Firefox 153 et WebKit 26 : quatre formes différentes relevées à 0,7 s d'intervalle, rayon du coin haut-gauche à 39 % vers 0,8 s. La rotation et l'échelle passent par transform, calculé sans recalcul de mise en page ; le border-radius demande de repeindre la forme à chaque image, ce qui reste léger pour un élément de cette taille.

L'effet est une boucle : il dit « ça se transforme, ça vit, ça chauffe » tant que dure l'état. Pour une transition qui s'arrête sur une forme précise, figez la keyframe à l'étape voulue (voir la FAQ), comme le font les trois exemples. Le cadre a sa propre classe, préfixée comme le reste de l'effet : deux effets de la bibliothèque collés sur la même page ne se réécrivent pas.

Accessibilité

  • Mouvement réduit : sous prefers-reduced-motion: reduce, l'animation est retirée et la forme reste un cercle immobile (le border-radius: 50% de base). Mesuré dans Chromium 151, Firefox 153 et WebKit 26 : animation none, rayon de 50 %, aucune transformation.
  • Arrêt : la boucle tourne sans fin. Un mouvement de plus de 5 secondes doit pouvoir s'arrêter : réservez l'effet à un état qui dure peu (une chauffe, une analyse), figez-le quand l'état change, ou ajoutez un bouton pause qui pose animation-play-state: paused.
  • Sens : la forme est un div vide. Si son aspect porte une information (rond = verre, carré = papier), écrivez-la aussi en texte : la forme seule ne se lit ni au lecteur d'écran ni par tout le monde.
  • Contenu dans la forme : tout ce que vous mettez dedans tourne avec elle (un tour complet par cycle) et devient illisible. Placez texte ou visage dans un calque frère, posé par-dessus, comme la mascotte de l'exemple 2.

Compatibilité navigateur

CSS pur (@keyframes, border-radius à huit valeurs, transform), 1,2 Ko, zéro JavaScript. Mesuré dans Chromium 151, Firefox 153 et WebKit 26 : même transformation, même cercle immobile sous mouvement réduit. L'animation de border-radius avec la syntaxe « / » est lue par tous les navigateurs actuels.

Chrome 43+✓ Complet
Firefox 16+✓ Complet
Safari 9+✓ Complet
Edge 12+✓ Complet
Mobile iOS 9+✓ Complet
Android Chrome 43+✓ Complet

Sans animations CSS, la forme reste un cercle immobile en dégradé indigo-cyan : l'élément se voit, seule la transformation manque.

Le code

Structure HTML à coller dans votre page (le CSS + JS sont inclus avec Premium) :

index.html — structure
<div class="md-morph-stage">
  <div class="md-shape-morph">
    <div class="md-morph-shape"></div>
  </div>
</div>
Débloquer le code complet — 9,90 € TTC/mois

Le code complet HTML + CSS + JS de Shape Morph Transition, prêt à coller — et les 840 effets. Ou 299 € TTC une fois, accès à vie.

Personnaliser

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

Option / propriétéDéfautEffet
Formes (CSS — border-radius à chaque étape) cercle / blob / carré à 10 % / blob inverse 50% 50% 50% 50% / 60% 60% 40% 40% donne un œuf ; 0 un vrai carré. Gardez des pourcentages à toutes les étapes pour que l'interpolation reste douce.
Rotation et respiration (CSS — transform) un tour complet, échelle 0,9 à 1,1 Retirez rotate() pour une forme qui se déforme sur place (utile si elle contient du texte) ; scale(1.2) accentue la respiration.
Durée (CSS — 6s) 6 s par cycle 3 s pour une transformation vive ; 10 s pour un fond qui vit sans attirer l'œil. Chaque étape dure un quart du cycle.
Figer sur une forme (CSS — animation-delay négatif + paused) aucun : boucle infinie animation-delay: -3s; animation-play-state: paused fige exactement le carré (50 % de 6 s) ; -1.5s le blob. Retirez paused pour repartir de là.
Taille et couleur (CSS — .md-morph-shape) 80 × 80 px, dégradé #6366f1 → #06b6d4 Les rayons étant en pourcentages, la forme garde ses proportions à toutes les tailles. Un fond radial donne du volume, un box-shadow coloré un halo.

FAQ

Utilisez un délai négatif et la pause : animation-delay: -3s; animation-play-state: paused place l'animation à 3 s de son cycle de 6 s, soit exactement l'étape 50 % (le carré), et l'y tient. -1.5s donne le blob, 0s le cercle. Pour passer d'une forme à l'autre en douceur, laissez tourner l'animation et posez paused au bon moment, comme les exemples de cette page.
Parce que huit rayons suffisent pour toute une famille de formes douces — cercle, œuf, galet, carré arrondi — et que le navigateur sait les interpoler seul, sans bibliothèque ni chemin SVG à faire correspondre point par point. La limite : pas d'angle rentrant, pas d'étoile, pas de lettre. Pour ces formes-là, il faut un clip-path: path() ou un morphing SVG, avec des chemins de même structure.
La rotation s'applique à tout l'élément et à ses enfants. Deux solutions : retirer rotate() de la keyframe (la forme se déforme sur place, le texte reste droit), ou poser le contenu dans un élément frère positionné par-dessus la forme, qui ne tourne pas. L'exemple de la mascotte garde ainsi ses yeux à l'endroit pendant que le corps fait son demi-tour.