Menu

Générateur Cubic-Bezier

Dessine des courbes d'easing CSS sur mesure avec aperçu animé en direct.

Dernière mise à jour

Presets
CourbeGlisse les deux poignées
Animation
CSS
.element {
  transition: transform 1.2s cubic-bezier(0.25, 0.1, 0.25, 1);
}

Qu'est-ce qu'un générateur de cubic-bezier ?

Une *fonction d'easing* en CSS contrôle l'accélération et la décélération d'une animation. Les mots-clés ease, ease-in, ease-out et ease-in-out sont des raccourcis vers quatre courbes précises. Pour tout le reste, CSS te donne cubic-bezier() - une fonction à quatre nombres qui dessine une courbe sur mesure.

Ces quatre nombres sont les coordonnées de deux points de contrôle (x1, y1, x2, y2). À la main, c'est rébarbatif : de petits changements ont de gros effets visuels, et les petits dépassements produisent un mouvement *bondissant* qu'on ne lit pas dans les chiffres. Un éditeur visuel te laisse tirer les poignées et voir la courbe réagir - beaucoup plus rapide que d'écrire des décimales.

L'éditeur Coddy dessine la courbe en temps réel, anime une balle d'aperçu avec ton easing et propose des presets pour les motifs courants : les mots-clés CSS, la courbe *standard* de Material Design, un bouncy-out et un anticipate avec dépassement. Copie la chaîne cubic-bezier() et colle-la dans ton CSS - tout dans le navigateur.

Ce qu'il faut savoir sur l'easing cubic-bezier

  • La courbe représente la *progression* en fonction du *temps*. Temps de gauche à droite (0 → 1) ; progression de bas en haut (0 → 1). La diagonale droite est linear - progression constante par unité de temps.
  • Les X des deux points sont bornés à 0..1. Les Y peuvent sortir de 0..1 - c'est comme ça qu'on obtient des courbes bondissantes, d'anticipation et de dépassement (l'animation dépasse sa cible ou part en sens inverse).
  • Les courbes *ease-out* (la majorité de la progression a lieu tôt) sont vives et réactives - idéales pour les entrées et les réactions de boutons. Les *ease-in* (progression tardive) sont molles - souvent fausses en UI, utiles pour les sorties.

Comment dessiner un easing cubic-bezier

  1. Pars d'un preset

    Choisis un preset proche du ressenti visé. *Material standard* et *Bouncy out* sont de bons points de départ en UI ; *ease-out* est la valeur sûre pour les entrées.

  2. Glisse les deux poignées

    Les ronds colorés sont les deux points de contrôle. Tire le premier pour ajuster le *début* ; le second pour ajuster la *fin*. Sortir une poignée par le haut produit du dépassement.

  3. Choisis une durée et relance

    Mets une durée réaliste. Les transitions UI tournent à 150–300ms ; les mouvements d'emphase à 400–600ms. Clique *Replay* pour relancer l'aperçu.

  4. Affine avec les champs numériques

    Pour des valeurs précises, tape dans X1/Y1/X2/Y2. Y peut sortir de 0..1 ; X reste toujours dans 0..1.

  5. Copie le CSS

    Clique *Copier* pour récupérer la règle transition complète. Colle dans ta feuille de styles et remplace transform par la propriété animée.

Aide-mémoire cubic-bezier

Easings courants et le cubic-bezier correspondant. Les quatre mots-clés sont des alias de courbes précises.

EasingValeurs cubic-bezierQuand l'utiliser
ease(0.25, 0.1, 0.25, 1)Défaut de transition - doux mais générique
linear(0, 0, 1, 1)Vitesse constante - souvent faux en UI, juste pour les spinners
ease-in(0.42, 0, 1, 1)Début lent, fin rapide - idéal pour les sorties
ease-out(0, 0, 0.58, 1)Début rapide, fin lente - idéal pour les entrées et réactions
ease-in-out(0.42, 0, 0.58, 1)Symétrique - bon pour les bascules aller-retour
Material standard(0.4, 0, 0.2, 1)Mouvement UI moderne et vif
Bouncy out(0.18, 0.89, 0.32, 1.28)Dépasse puis se pose - entrées joueuses

Exemples cubic-bezier à essayer

Réaction de bouton vive

Easing standard au hover
.btn {    transition: transform 180ms cubic-bezier(0.4, 0, 0.2, 1);}.btn:hover {    transform: translateY(-2px);}

L'essentiel de l'élan se fait tôt, puis s'amortit - ça paraît réactif au curseur plutôt que mou.

Entrée bondissante

Dépassement puis stabilisation
.card {    transition: transform 350ms cubic-bezier(0.18, 0.89, 0.32, 1.28);}

Y2 à 1.28 fait dépasser la cible avant de revenir. À utiliser avec parcimonie - partout, le rebond devient fatigant.

Anticiper avant d'avancer

Recule un peu, puis se lance
.hero {    transition: transform 500ms cubic-bezier(0.68, -0.55, 0.27, 1.55);}

Un Y1 négatif fait partir l'animation à *contre-sens* un court instant. Hérité de l'animation classique - une petite anticipation rend le mouvement principal plus intentionnel.

Erreurs fréquentes d'easing

  • Utiliser ease-in pour des entrées. Démarre lentement et termine vite - l'inverse de ce qui paraît réactif. Préfère ease-out.
  • Choisir linear pour de l'UI parce qu'il paraît neutre. La vitesse constante semble mécanique ; c'est juste pour des barres de progression et des spinners.
  • Mettre du dépassement sur toutes les transitions. Les easings rebondissants sont un accent, pas une valeur par défaut - partout, ça devient le chaos.

FAQ Cubic-Bezier

Que veulent dire les quatre nombres de cubic-bezier() ?
Ce sont les coordonnées x et y de deux points de contrôle : cubic-bezier(x1, y1, x2, y2). Le premier façonne le *début*, le second la *fin*. X reste entre 0 et 1 (temps) ; Y peut sortir de 0..1 pour le dépassement et l'anticipation (progression).
Quel easing pour des animations d'UI ?
Pour les entrées (apparition) et les réactions (hover, focus), *ease-out* ou la courbe standard Material cubic-bezier(0.4, 0, 0.2, 1). Pour les sorties, *ease-in* convient. *linear* uniquement pour les barres de progression.
Quelle différence entre ease et ease-out ?
Les deux finissent lentement, mais ease démarre aussi en douceur. ease-out part à pleine vitesse et décélère - ce mouvement *immédiat* paraît plus réactif que ease.
Comment faire une animation rebondissante en CSS ?
Tire la deuxième poignée au-dessus du haut du canvas (Y2 > 1). Ex. : cubic-bezier(0.18, 0.89, 0.32, 1.28) dépasse de ~28 % avant de se stabiliser. Pour plusieurs rebonds il faut @keyframes ou une lib spring - cubic-bezier ne fait qu'un seul dépassement.
Peut-on combiner cubic-bezier et @keyframes ?
Oui. Utilise-le comme animation-timing-function, dans le raccourci animation ou par keyframe. Pour des mouvements en plusieurs étapes, tu peux appliquer un easing différent entre chaque paire de keyframes.

En savoir plus

Autres outils pour développeurs

Coddy programming languages illustration

Apprendre à coder avec Coddy

COMMENCER