Las funciones de temporización (transition-timing-function) en las transiciones CSS (y de forma similar, animation-timing-function para las animaciones) son las que definen cómo se calcula la velocidad de una transición a lo largo de su duración.
En lugar de que un cambio de estilo ocurra a una velocidad constante y lineal, estas funciones permiten controlar la curva de aceleración y deceleración, haciendo que el movimiento parezca más natural, dinámico o estilizado según el efecto que busques.
Piensa en ellas como la «personalidad» del movimiento de tu transición.
Existen varios valores predefinidos para transition-timing-function:
ease (valor por defecto): La transición comienza lentamente, luego se acelera en el medio y finalmente vuelve a ralentizarse antes de terminar. Proporciona una sensación suave y natural. Es equivalente a cubic-bezier(0.25, 0.1, 0.25, 1.0).linear: La transición ocurre a una velocidad constante desde el principio hasta el final. Puede parecer un poco robótico para ciertos efectos.ease-in: La transición comienza lentamente y luego acelera progresivamente hasta que alcanza su estado final.ease-out: La transición comienza rápidamente y luego decelera progresivamente hasta detenerse en su estado final.ease-in-out: La transición comienza lentamente, acelera en el medio y luego decelera lentamente hacia el final. Es similar a ease, pero con una aceleración y deceleración más pronunciadas en los extremos.steps(n, jump-term): Esta función divide la transición en un número n de pasos discretos o «saltos». jump-term puede ser jump-start, jump-end, jump-none o jump-both, y define cuándo ocurre el cambio dentro de cada paso. Es útil para crear animaciones tipo sprite o efectos de movimiento por fotogramas.Además de estos valores predefinidos, tienes un control mucho más granular con la función cubic-bezier(P1x, P1y, P2x, P2y). Esta te permite definir tu propia curva de temporización especificando las coordenadas (x, y) de dos puntos de control (P1 y P2) de una curva de Bézier cúbica. Esto ofrece una flexibilidad prácticamente ilimitada para crear efectos de aceleración personalizados y únicos.
Ejemplo de uso:
.mi-elemento {
transition-property: transform;
transition-duration: 0.5s;
/* Aplicando una función de temporización predefinida */
/* transition-timing-function: ease-out; */
/* O definiendo una curva de Bézier personalizada para un efecto de "rebote" suave */
transition-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
.mi-elemento:hover {
transform: translateX(50px);
}Lenguaje del código: PHP (php)