JavaScript运动框架
date
Jul 27, 2021
slug
animate-frame
status
Published
tags
JavaScript
type
Post
summary
JavaScript运动框架
运动框架
匀速运动
匀速运动的停止条件
例子1: 侧边栏
优化1 鼠标移开返回
优化2 合并重复的代码
例子2: 淡入淡出
缓冲运动
- 当距离终点的距离越来越大的时候,速度也越来越大
- 当距离终点的距离越来越小的时候,速度也越来越慢
- 速度和距离成正比
优化
- 问题一:
现在这里的问题是,我们在
300px
的时候有个div
作为标准, 我们看到,到了300
的时候,这个绿色的div
没有全部在300
的右面
console
一下,发现是287

console
一下速度
这是为什么
px
是计算机接受的最小的距离单位,如果写的是29.5px
会变成29px
不会四舍五入,计算进看到小数,直接把小数点后面去掉了把
speed
处理下- 问题2:

综合起来是这样:
但凡用到缓冲运动,一定要取整!!!
潜在问题: 目标值不是整数的时候,
多物体运动
框架
多物体的淡入淡出
任意值的运动框架
offset的bug
所以之前用了offset的都有潜在的bug
初步
- 问题1: 如果更改透明度
opacity
是个小数,parseInt
直接解析错误
- 问题2:
opacity
的单位也没有px
这样直接错误了
改良: 带透明度的运动框架
链式运动
回调函数
运动停止时, 执行函数
运动停止时,开始下一次运动
完美运动框架
- 链式运动框架的问题: 一个对象的多个属性同时变就不行了
演变
函数 | 模式 |
start(target) | 匀速/缓动 |
start(obj, target) | 多物体 |
start(obj, attr, target) | 任意值 |
start(obj, attr, target, fn) | 链式运动 |
start(obj, json, fn) | 完美 |