看了jquery的animate动画函数,自己也用js写了一个,感觉还不错!

在JavaScript中实现类似jQuery的animate函数,你可以使用requestAnimationFrame来实现流畅的动画效果。以下是一个简单的实现例子:




function animate(element, to, duration, callback) {
  const start = performance.now();
  const from = Object.keys(to).reduce((acc, prop) => {
    acc[prop] = Number(element.style[prop] || 0); // 获取当前样式值
    return acc;
  }, {});
 
  const change = (time) => {
    if (time - start < duration) {
      const progress = (time - start) / duration;
      Object.keys(to).forEach(prop => {
        element.style[prop] = (to[prop] - from[prop]) * progress + from[prop] + 'px'; // 计算当前值
      });
      requestAnimationFrame(change); // 递归调用
    } else {
      Object.assign(element.style, to); // 动画结束,应用最终样式
      if (callback && typeof callback === 'function') callback(); // 调用回调函数
    }
  };
 
  requestAnimationFrame(change); // 开始动画
}
 
// 使用例子
const element = document.getElementById('myElement');
animate(element, { width: '200px', height: '100px' }, 1000, () => console.log('Animation completed'));

在这个例子中,animate函数接受四个参数:element是要应用动画的DOM元素,to是一个对象,包含了动画结束时想要设置的CSS样式属性和值,duration是动画持续的时间(单位是毫秒),callback是动画结束时调用的回调函数。函数内部使用requestAnimationFrame来实现每帧动画的更新,并在动画结束时应用最终的样式并调用回调函数。

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日