cubic bezier timing function generator
npm install cubic-bezier-timing-function
// @param {number} x1
// @param {number} y1
// @param {number} x2
// @param {number} y2
// @param {number} precision 近似解的精度,默认值为 0.00001。
// The precision of the calculation. It is not necessary and has a default value 0.00001.
cubicBezierTimingFunction(x1, y1, x2, y2, precision)
// cubicBezierTimingFunction(0.4, 0.3, 0.9, 1.2)
// cubicBezierTimingFunction(0.4, 0.3, 0.9, 1.2, 0.0001)
// @param {string} presetName 预设方案名称。
// 'linear': [0, 0, 1, 1],
// 'ease': [0.25, 0.1, 0.25, 1],
// 'ease-in': [0.42, 0, 1, 1],
// 'ease-out': [0, 0, 0.58, 1],
// 'ease-in-out': [0.42, 0, 0.58, 1]
// @param {number} precision 近似解的精度,默认值为 0.00001。
// The precision of the calculation. It is not necessary and has a default value 0.00001.
cubicBezierTimingFunction(presetName, precision)
// cubicBezierTimingFunction('linear')
// cubicBezierTimingFunction('linear', 0.000001)
`
`
import cubicBezierTimingFunction from 'cubic-bezier-timing-function'
let timingFn = cubicBezierTimingFunction('ease')
let duration = 2000 // 动画时长,单位ms。 animation duration in milliseconds.
let startTime
function update() {
if (!startTime) {
startTime = Date.now()
}
let x = (Date.now() - startTime) / duration
let y = timingFn(x)
// 使用 y 值去更新其他值或视图
// update something with y
if (x < 1) {
requestAnimationFrame(update)
}
}
update()
``