Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

cubic-bezier()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨juillet 2015⁩.

La fonction CSS cubic-bezier() permet de créer une transition fluide à l'aide d'une courbe de Bézier cubique. En tant que <easing-function>, elle permet d'adoucir le début et la fin de l'interpolation.

Syntaxe

css
cubic-bezier(0.25, 0.1, 0.25, 1)
cubic-bezier(0.1, -0.6, 0.2, 0)
cubic-bezier(0, 0, 1, 1)

Paramètres

La fonction accepte les quatre paramètres suivants, qui représentent les coordonnées de deux points de contrôle :

<x1>

Un <number> représentant la coordonnée x du premier point de contrôle. Elle doit être comprise dans l'intervalle [0, 1].

<y1>

Un <number> représentant la coordonnée y du premier point de contrôle.

<x2>

Un <number> représentant la coordonnée x du second point de contrôle. Elle doit être comprise dans l'intervalle [0, 1].

<y2>

Un <number> représentant la coordonnée y du second point de contrôle.

Description

Les fonctions de Bézier cubique, souvent appelées fonctions d'assouplissement « smooth », mettent en relation une progression d'entrée et une progression de sortie, toutes deux exprimées en <number>, où 0.0 représente l'état initial et 1.0 l'état final. Si la courbe de Bézier cubique est invalide, CSS ignore toute la propriété.

Une courbe de Bézier cubique est définie par quatre points : P0, P1, P2 et P3. Les points P0 et P3 représentent le début et la fin de la courbe. En CSS, le point de départ P0 est fixé à (0, 0) et le point d'arrivée P3 à (1, 1), tandis que les points intermédiaires P1 et P2 sont définis par les paramètres de la fonction (<x1>, <y1>) et (<x2>, <y2>) respectivement. L'axe x représente la progression d'entrée et l'axe y la progression de sortie.

Graphique de la progression d'entrée vers la progression de sortie montrant une courbe en S partant de l'origine vers (1, 1) avec les points de contrôle Bézier P1(0.1, 0.6) et P2(0.7, 0.2).

Toutes les courbes de Bézier cubique ne conviennent pas comme fonctions d'assouplissement, car toutes ne sont pas des fonctions mathématiques : c'est-à-dire des courbes qui, pour une valeur de l'axe x donnée, ont zéro ou une valeur. Avec P0 et P3 fixés comme défini par CSS, une courbe de Bézier cubique est une fonction, et donc valide, si et seulement si les coordonnées x de P1 et P2 sont toutes deux dans l'intervalle [0, 1].

Les courbes de Bézier cubique dont l'ordonnée de P1 ou P2 sort de l'intervalle [0, 1] peuvent faire dépasser la valeur finale puis revenir. En animation, cela crée un effet de « rebond ».

Graphiques de la fonction d'assouplissement cubic-bezier(0.3, 0.2, 0.2, 1.4), dont l'un montre la progression de sortie dépassant 1 à partir d'une certaine progression d'entrée, l'autre montre la progression de sortie atteignant puis restant à 1.

Cependant, certaines propriétés limitent la sortie si elle sort d'une plage autorisée. Par exemple, une composante de couleur supérieure à 255 ou inférieure à 0 dans rgb() sera ramenée à la valeur autorisée la plus proche (255 ou 0). Certaines valeurs de cubic-bezier() présentent ce comportement.

Syntaxe formelle

<cubic-bezier()> = 
cubic-bezier( [ <number [0,1]> , <number> ]#{2} )

Exemples

Effet de rebond

Dans cet exemple, la balle rouge rebondit hors de la boîte lors de la transition depuis sa position d'origine. Cela s'explique par le fait qu'une des valeurs de P2, 2.3, dépasse l'intervalle [0, 1].

css
span {
  transition: translate 0.3s cubic-bezier(0.3, 0.8, 0.3, 2.3);
}

Utilisation de la fonction cubic-bezier()

Ces courbes de Bézier cubique sont valides pour une utilisation en CSS :

css
/* La courbe de Bézier canonique avec quatre <number> dans l'intervalle [0,1] */
cubic-bezier(0.1, 0.7, 1.0, 0.1)

/* Utiliser un <integer> est valide car tout <integer> est aussi un <number> */
cubic-bezier(0, 0, 1, 1)

/* Les valeurs négatives pour les ordonnées sont valides, ce qui produit des
   effets de rebond */
cubic-bezier(0.1, -0.6, 0.2, 0)

/* Les valeurs supérieures à 1.0 pour les ordonnées sont aussi valides */
cubic-bezier(0, 1.1, 0.8, 4)

Ces définitions de courbes de Bézier cubique sont invalides :

css
/* Les paramètres doivent être des nombres */
cubic-bezier(0.1, red, 1.0, green)

/* Les coordonnées x doivent être dans l'intervalle [0, 1] */
cubic-bezier(2.45, 0.6, 4, 0.1)

/* Il doit y avoir exactement quatre paramètres */
cubic-bezier(0.3, 2.1)

/* Les coordonnées x doivent être dans l'intervalle [0, 1] */
cubic-bezier(-1.9, 0.3, -0.2, 2.1)

Spécifications

Specification
CSS Easing Functions Level 1
# cubic-bezier-easing-functions

Compatibilité des navigateurs

Voir aussi