三次贝塞尔缓动

三次贝塞尔缓动通过贝塞尔曲线定义动画的速度和节奏。

适用于 JavaScript

针对 js animate() 函数,必须导入 cubicBezier() 函数。

import { animate, cubicBezier } from 'animejs';

animate(target, { x: 100, ease: cubicBezier(0, 0, 0.58, 1) });

适用于 WAAPI

waapi animate() 函数使用浏览器原生的三次贝塞尔时间函数,可以直接在 ease 参数中以 String 形式指定。

import { waapi } from 'animejs';

waapi.animate(target, { x: 100, ease: 'cubic-bezier(0, 0, 0.58, 1)' });

// Or

waapi.animate(target, { x: 100, ease: 'cubicBezier(0, 0, 0.58, 1)' });

参数

三次贝塞尔函数接受 4 个参数 cubicBezier(x1, y1, x2, y2)

名称 类型 信息
x1 数字 第一个控制点的 X 坐标。必须介于 0 和 1 之间。
y1 数字 第一个控制点的 Y 坐标。可以是任意值(负值会产生预备动作,大于 1 会产生过冲)。
x2 数字 第二个控制点的 X 坐标。必须介于 0 和 1 之间。
y2 数字 第二个控制点的 Y 坐标。可以是任意值(负值会产生预备动作,大于 1 会产生过冲)。

示例

名称 编辑器链接
入三次贝塞尔曲线 在编辑器中打开
出三次贝塞尔曲线 在编辑器中打开
入出三次贝塞尔曲线 在编辑器中打开
出入三次贝塞尔曲线 在编辑器中打开

三次贝塞尔缓动代码示例

import { animate, waapi, cubicBezier } from 'animejs';

animate('.row:nth-child(1) .square', {
  x: '17rem',
  rotate: 360,
  ease: cubicBezier(0.5, 0, 0.9, 0.3)
});

animate('.row:nth-child(2) .square', {
  x: '17rem',
  rotate: 360,
  ease: cubicBezier(0.1, 0.7, 0.5, 1)
});

waapi.animate('.row:nth-child(3) .square', {
  x: '17rem',
  rotate: 360,
  ease: 'cubicBezier(0.7, 0.1, 0.5, 0.9)'
});
<div class="medium row">
  <div class="square"></div>
  <div class="padded label">cubicBezier(0.5, 0, 0.9, 0.3)</div>
</div>
<div class="medium row">
  <div class="square"></div>
  <div class="padded label">cubicBezier(0.1, 0.7, 0.5, 1)</div>
</div>
<div class="medium row">
  <div class="square"></div>
  <div class="padded label">cubicBezier(0.7, 0.1, 0.5, 0.9)</div>
</div>