snu.easeInSine() / easeOutSine() / easeInOutSine()
正弦缓动
基于正弦函数的缓动曲线:
easeInSine:缓入,由慢到快(先慢后快)。easeOutSine:缓出,由快到慢。easeInOutSine:缓入缓出,两端慢中间快。
参数 t 为归一化进度(通常 0~1),返回值为当前时刻的进度/插值量。
兼容性
| Web | Android |
|---|---|
| √ | √ |
属性
| 名称 | 类型 | 必备 | 默认值 | 描述 |
|---|---|---|---|---|
| t | Number | 是 | - | 归一化进度(0~1) |
返回值
| 类型 | 必备 | 描述 |
|---|---|---|
| Number | 是 | 缓动处理后的进度值 |
示例
typescript
let v1 = snu.easeInSine(0.5)
let v2 = snu.easeOutSine(0.5)
let v3 = snu.easeInOutSine(0.5)snu.easeInQuad() / easeOutQuad() / easeInOutQuad()
二次方缓动
使用二次方函数(t²)的缓动曲线:缓入 t²、缓出 1-(1-t)²、缓入缓出 t<0.5 ? 2t² : 1-(-2t+2)²/2。
兼容性
| Web | Android |
|---|---|
| √ | √ |
属性
| 名称 | 类型 | 必备 | 默认值 | 描述 |
|---|---|---|---|---|
| t | Number | 是 | - | 归一化进度(0~1) |
返回值
| 类型 | 必备 | 描述 |
|---|---|---|
| Number | 是 | 缓动处理后的进度值 |
示例
typescript
let v = snu.easeInOutQuad(0.5)snu.easeInCubic() / easeOutCubic() / easeInOutCubic()
三次方缓动
使用三次方函数(t³)的缓动曲线:缓入 t³、缓出 1-(1-t)³、缓入缓出 t<0.5 ? 4t³ : 1-(-2t+2)³/2。
兼容性
| Web | Android |
|---|---|
| √ | √ |
属性
| 名称 | 类型 | 必备 | 默认值 | 描述 |
|---|---|---|---|---|
| t | Number | 是 | - | 归一化进度(0~1) |
返回值
| 类型 | 必备 | 描述 |
|---|---|---|
| Number | 是 | 缓动处理后的进度值 |
示例
typescript
let v = snu.easeOutCubic(0.5)snu.easeInQuart() / easeOutQuart() / easeInOutQuart()
四次方缓动
使用四次方函数(t⁴)的缓动曲线:缓入 t⁴、缓出 1-(1-t)⁴、缓入缓出 t<0.5 ? 8t⁴ : 1-(-2t+2)⁴/2。
兼容性
| Web | Android |
|---|---|
| √ | √ |
属性
| 名称 | 类型 | 必备 | 默认值 | 描述 |
|---|---|---|---|---|
| t | Number | 是 | - | 归一化进度(0~1) |
返回值
| 类型 | 必备 | 描述 |
|---|---|---|
| Number | 是 | 缓动处理后的进度值 |
示例
typescript
let v = snu.easeInQuart(0.5)snu.easeInQuint() / easeOutQuint() / easeInOutQuint()
五次方缓动
使用五次方函数(t⁵)的缓动曲线:缓入 t⁵、缓出 1-(1-t)⁵、缓入缓出 t<0.5 ? 16t⁵ : 1-(-2t+2)⁵/2。
兼容性
| Web | Android |
|---|---|
| √ | √ |
属性
| 名称 | 类型 | 必备 | 默认值 | 描述 |
|---|---|---|---|---|
| t | Number | 是 | - | 归一化进度(0~1) |
返回值
| 类型 | 必备 | 描述 |
|---|---|---|
| Number | 是 | 缓动处理后的进度值 |
示例
typescript
let v = snu.easeInOutQuint(0.5)snu.easeInExpo() / easeOutExpo() / easeInOutExpo()
指数缓动
使用指数函数的缓动曲线:缓入 2^(10t-10) 起速较慢、缓出 1-2^(-10t)、缓入缓出在前半段缓进后半段缓出。曲线变化明显、斜率大。
兼容性
| Web | Android |
|---|---|
| √ | √ |
属性
| 名称 | 类型 | 必备 | 默认值 | 描述 |
|---|---|---|---|---|
| t | Number | 是 | - | 归一化进度(0~1) |
返回值
| 类型 | 必备 | 描述 |
|---|---|---|
| Number | 是 | 缓动处理后的进度值 |
示例
typescript
let v = snu.easeInExpo(0.5)snu.easeInCirc() / easeOutCirc() / easeInOutCirc()
圆形缓动
基于圆的方程(圆弧)的缓动曲线:缓入 1-sqrt(1-t²)、缓出 sqrt(1-(1-t)²)、缓入缓出两端缓的表现,适合做带有"圆弧感"的位移动画。
兼容性
| Web | Android |
|---|---|
| √ | √ |
属性
| 名称 | 类型 | 必备 | 默认值 | 描述 |
|---|---|---|---|---|
| t | Number | 是 | - | 归一化进度(0~1) |
返回值
| 类型 | 必备 | 描述 |
|---|---|---|
| Number | 是 | 缓动处理后的进度值 |
示例
typescript
let v = snu.easeInCirc(0.5)snu.easeInBack() / easeOutBack() / easeInOutBack()
回退缓动
带有过冲(overshoot)的回退缓动:缓入先向反方向退再前进、缓出会略越过终点再回落到终点、缓入缓出在两端均有轻微回退。常用于弹性效果、弹跳感较强的动画。
兼容性
| Web | Android |
|---|---|
| √ | √ |
属性
| 名称 | 类型 | 必备 | 默认值 | 描述 |
|---|---|---|---|---|
| t | Number | 是 | - | 归一化进度(0~1) |
返回值
| 类型 | 必备 | 描述 |
|---|---|---|
| Number | 是 | 缓动处理后的进度值(可能超出 0~1 区间) |
示例
typescript
let v = snu.easeOutBack(0.6)snu.easeInElastic() / easeOutElastic() / easeInOutElastic()
弹性缓动
带有周期性震荡的弹性缓动(类似弹簧):缓入先震荡后达到目标、缓出在接近终点时来回震荡、缓入缓出两端均有震荡。动画效果强烈,适合强调型过渡。
兼容性
| Web | Android |
|---|---|
| √ | √ |
属性
| 名称 | 类型 | 必备 | 默认值 | 描述 |
|---|---|---|---|---|
| t | Number | 是 | - | 归一化进度(0~1) |
返回值
| 类型 | 必备 | 描述 |
|---|---|---|
| Number | 是 | 缓动处理后的进度值(可能超出 0~1 区间) |
示例
typescript
let v = snu.easeOutElastic(0.5)snu.easeInBounce() / easeOutBounce() / easeInOutBounce()
弹跳缓动
模拟物体弹跳(碰撞衰减)的缓动曲线:缓出 easeOutBounce 是典型的"落下后多次弹起"效果、缓入为其镜像、缓入缓出在两端合入反弹。适合落地/着地类动画。
兼容性
| Web | Android |
|---|---|
| √ | √ |
属性
| 名称 | 类型 | 必备 | 默认值 | 描述 |
|---|---|---|---|---|
| t | Number | 是 | - | 归一化进度(0~1) |
返回值
| 类型 | 必备 | 描述 |
|---|---|---|
| Number | 是 | 缓动处理后的进度值 |
示例
typescript
let v = snu.easeOutBounce(0.5)snu.linear()
线性缓动
线性缓动,匀速递增:返回与输入 t 相同的值(t)。用于需要恒定速度的过渡。
兼容性
| Web | Android |
|---|---|
| √ | √ |
属性
| 名称 | 类型 | 必备 | 默认值 | 描述 |
|---|---|---|---|---|
| t | Number | 是 | - | 归一化进度(0~1) |
返回值
| 类型 | 必备 | 描述 |
|---|---|---|
| Number | 是 | 原样返回 t |
示例
typescript
let v = snu.linear(0.5) // 0.5