Texte✨ Premium

Casual Morph

Animation CSS pure : Recursive morphe entre ses axes CASL, MONO et wght en 3 états distincts — typographie vivante, zéro JavaScript.

CSSRecursiveMulti-axes

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. Texte comprend 56 effets, dont 4 gratuits. Découvrir la catégorie →

3 exemples d'usage

Agence hybride dev/design — le pivot de registre en live — Casual Morph exemple 1

① Agence hybride dev/design — le pivot de registre en live

QuandLa page d'accueil d'une agence positionnée à la fois sur le développement et le design graphique utilise Recursive pour incarner sa double identité : le même mot ou slogan bascule visuellement entre le registre technique (MONO 1, traits géométriques) et le registre créatif (CASL 1, rondeurs casuales), rendant le positionnement bipolaire immédiatement perceptible.
PourquoiRecursive est la seule police variable dont les axes CASL et MONO encodent sémantiquement l'opposition code/design : MONO 1 = chasse fixe, précision machine ; CASL 1 = courbes d'écriture, spontanéité. Cette dualité n'est pas simulée — elle est inscrite dans la structure de la fonte, ce qui rend le pivot de registre narrativement justifié là où n'importe quelle autre police variable n'offrirait qu'un simple changement de graisse.
Réglagesfont-size : 4–5 rem (le mot doit ancrer la composition), durée : 4 s (défaut du code), couleurs : rgba(255,255,255,.7) → #ec4899 → #8b5cf6 — la progression chromatique amplifie le basculement de registre. Ajoutez deux micro-tags '< dev >' (MONO 1) et '[ design ]' (CASL 1) en guide visuel bipolaire ; supprimez les badges d'axes numériques.
En-tête d'éditeur de code — prévisualisation de police Recursive en direct — Casual Morph exemple 2

② En-tête d'éditeur de code — prévisualisation de police Recursive en direct

QuandUn outil de développement, un IDE en ligne ou un configurateur de thème propose un aperçu de Recursive avec ses axes variables dans un panneau de réglages typographiques.
PourquoiRecursive est conçue pour le code ET l'affichage : montrer la transition MONO 1→0 dans un contexte d'éditeur rend le cas d'usage immédiatement lisible pour les développeurs. Les badges d'axes renforcent la crédibilité technique du composant.
Réglagesfont-size : 1,5–2,5 rem, durée : 3 s, palette : blanc / cyan / violet. Gardez les badges — ils renforcent la lisibilité du contexte de configuration.
Spécimen typographique — vitrine plein écran d'une police variable — Casual Morph exemple 3

③ Spécimen typographique — vitrine plein écran d'une police variable

QuandUne fonderie ou un site de ressources typographiques présente Recursive avec une démonstration dynamique de ses axes — une page de type specimen remplaçant les planches statiques traditionnelles.
PourquoiAucune image statique ne rend compte d'une police variable aussi efficacement que de la voir morfher en temps réel : CASL, MONO et wght couvrent l'étendue expressionnelle complète en un seul élément.
Réglagesfont-size : 5–7 rem, durée : 6–8 s, ease-in-out rallongé, une seule couleur (blanc) pour un rendu élégant et neutre sur fond sombre.

Comment ça marche

font-variation-settings est une propriété CSS numérique : le moteur de rendu l'interpole via les @keyframes exactement comme opacity ou transform. L'animation vfCasualMorph définit trois arrêts (0 %/100 %, 33 %, 66 %) pour trois axes simultanés, en boucle ease-in-out de 4 secondes — sans une ligne de JavaScript.

Chaque axe de Recursive contrôle une dimension distincte du caractère : CASL (0 = traits linéaires mécaniques → 1 = rondeurs et rebonds d'écriture manuscrite), MONO (1 = chasse fixe code → 0 = espacement proportionnel display), wght (400 Regular → 700 Bold → 900 Black). Les trois axes combinés font basculer la police entre trois personnalités : monospace strict et léger, casual gras et proportionnel, semi-mono noir — des registres typographiques opposés produits par une seule famille.

La propriété color est co-animée dans les mêmes keyframes pour amplifier visuellement chaque état : blanc atténué à l'état neutre (mono, régulier), rose #ec4899 à l'état casual (manuscrit, bold), violet #8b5cf6 à l'état lourd (semi-mono, black). Le navigateur interpole les valeurs hex comme des tuples RGB — aucun code supplémentaire requis.

Les éléments auxiliaires (.vf-casual-label, .vf-casual-axis) maintiennent "MONO" 1 fixe sur la propriété font-variation-settings : leur chasse reste constante et sert de repère visuel stable face au texte principal qui morphe.

Accessibilité

  • prefers-reduced-motion : absent du code — l'animation CSS tourne en boucle inconditionnellement. Ajoutez @media (prefers-reduced-motion:reduce) { .vf-casual-text { animation: none } } pour respecter la préférence système.
  • Aucun attribut aria-* sur les éléments : pour un usage décoratif, ajoutez aria-hidden="true" sur .vf-casual-scene ; pour un usage informatif (texte significatif), wrappez dans un role="img" avec aria-label décrivant l'état final ou le mot affiché.
  • Contraste des trois couleurs sur #0a0a0f : blanc atténué (~7:1), rose #ec4899 (~6:1), violet #8b5cf6 (~5:1) — tous ≥ 4,5:1, WCAG AA respecté.
  • L'effet est purement décoratif et non interactif : aucun élément focusable, aucune contrainte de navigation clavier.
  • Les badges .vf-casual-axis fournissent un contexte textuel sur les axes animés, mais sans rôle aria explicite — masquez-les avec aria-hidden="true" s'ils sont purement illustratifs.

Compatibilité navigateur

Nécessite font-variation-settings animable (CSS Fonts Level 4) et la police Recursive (variable font). Zéro dépendance JS.

Chrome 62+✓ Complet
Firefox 62+✓ Complet
Safari 11+✓ Complet
Edge 79+✓ Complet
Mobile iOS 11+✓ Complet
Android Chrome 62+✓ Complet

Sans Recursive chargée, le navigateur utilise la police de secours <code>monospace</code> — l'animation de poids et de couleur fonctionne encore, mais les axes CASL et MONO restent sans effet visible sur les glyphes.

Le code

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

index.html — structure
<div class="vf-preview">
  <div class="vf-casual-scene">
    <span class="vf-casual-text">Recursive</span>
    <span class="vf-casual-label">CASL · MONO · wght</span>
    <div class="vf-casual-axes">
      <span class="vf-casual-axis">CASL 0→1</span>
      <span class="vf-casual-axis">MONO 0→1</span>
      <span class="vf-casual-axis">wght 400→900</span>
    </div>
  </div>
</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
animation-duration sur `.vf-casual-text` 4s Durée d'un cycle complet. 2 s = vif et nerveux, 8 s = lent et contemplatif.
font-size sur `.vf-casual-text` 2rem Taille du texte morphant. Montez à 4–6 rem pour un headline hero, descendez à 1 rem pour un label compact.
color dans `@keyframes vfCasualMorph` (3 valeurs) rgba(255,255,255,.7) / #ec4899 / #8b5cf6 Palette des trois états : neutre, casual, lourd. Remplacez par vos couleurs brand ou par une seule valeur fixe pour désactiver la transition chromatique.
CASL dans les 3 keyframes 0 / 1 / 0.5 Contrôle du registre manuscrit à chaque état. 0 = géométrique pur, 1 = plein casual. Réduisez à 0→0,5 pour une variation discrète.
MONO dans les 3 keyframes 1 / 0 / 0.5 Passage monospace ↔ proportionnel. Fixez MONO 1 partout pour un affichage uniquement code ; fixez MONO 0 pour un affichage uniquement display.
wght dans les 3 keyframes 400 / 700 / 900 Plage de graisse entre les états. Réduisez à 300–600 pour un effet plus fin ; la valeur 900 (Black) maximise le contraste de masse entre états.
animation-timing-function sur `.vf-casual-text` ease-in-out linear = morphe continu sans plateau ni pause aux extrêmes ; cubic-bezier(0.4,0,0.2,1) = accélération nette aux transitions, pause marquée aux états.

FAQ

Oui. L'effet déclare font-family: Recursive, monospace mais ne charge pas la police — ajoutez <link href="https://fonts.googleapis.com/css2?family=Recursive:slnt,wght,CASL,CRSV,MONO@-15..0,300..1000,0..1,0..1,0..1&display=swap" rel="stylesheet"> dans votre <head>. Pour un usage offline ou conforme RGPD, hébergez le fichier woff2 en self-hosted via fontsource.
Oui. Recursive expose aussi CRSV (Cursive 0/1, active les ligatures cursives) et slnt (Slant -15°→0°, inclinaison italique). Ajoutez-les dans font-variation-settings de chaque keyframe : "CRSV" 0, "slnt" -12. Attention : si un axe est omis dans un keyframe, il revient à sa valeur par défaut au lieu d'interpoler — listez tous les axes dans chaque arrêt pour un morphe cohérent.
Oui — une animation CSS pure continue de tourner hors viewport (le navigateur peut la throttler en onglet inactif). Pour limiter la charge CPU, suspendez-la avec un IntersectionObserver : el.style.animationPlayState = isVisible ? 'running' : 'paused'. Cela n'affecte pas la visibilité — l'animation reprend exactement là où elle s'était arrêtée.