原生JavaScript面向对象封装动画效果原理详解

【JavaScript-动画原理】如何使用js进行动画效果的实现 利用js实现动画效果 阅读详情

一、JavaScript中动画原理

所谓的动画,就是通过一些列的运动形成的动的画面。在网页中,我们可以通过不断的改变元素的css值,来达到动的效果。

JavaScript的动画用的最多的3个api就是setInterval()、setTimeout()和requestAnimationFrame()

据说,普通人眼能看到1/24秒,就是说1秒至少24帧,每次移位间隔需要小于1000/24=41.7毫秒,也就说setInterval要每隔至少40毫秒执行一次,一般地,我们采用10毫秒,当然间隔时间越短,客户端执行计算次数就越多,如果你code计算量大则可以适当调长些。

1.1 setTimeout()和setInterval ()

1.2 requestAnimationFrame(回调函数)

像setTimeout、setInterval一样,requestAnimationFrame是一个全局函数。调用requestAnimationFrame后,它会要求浏览器根据自己的频率进行一次重绘,它接收一个回调函数作为参数,在即将开始的浏览器重绘时,会调用这个函数,并会给这个函数传入调用回调函数时的时间作为参数。由于requestAnimationFrame的功效只是一次性的,所以若想达到动画效果,则必须连续不断的调用requestAnimationFrame,就像我们使用setTimeout来实现动画所做的那样。requestAnimationFrame函数会返回一个资源标识符,可以把它作为参数传入cancelAnimationFrame函数来取消requestAnimationFrame的回调。跟setTimeout的clearTimeout很相似啊。

可以这么说,requestAnimationFrame是setTimeout的性能增强版。

有一点需要注意的是,requestAnimationFrame不能自行指定函数运行频率,而是有浏览器决定刷新频率。所以这个更能达到浏览器所能达到的最佳动画效果了。

这个方法不是所有的浏览器都兼容。

下面就从最简单的版本进行出发:(可以直接看最后一个版本)

首先这些版本都有同一个js文件是一样的,那就是Easing文件,这里封装了很多的匀速,匀加速,弹跳等等动画,会返回一个动画算子,所以这个文件是共有的,我先放上来:

用JS封装一个简单的动画函数(超详细) 用JS封装一个简单的动画函数 函数封装_01 文章目录用JS封装一个简单的动画函数PC端网页特效一、元素偏移量offset系列1-1. offset系列的常用属性1-2. offset 与 style二、元素可视区client系列三、元素滚动scroll系列三大系列总结动画函数的封装1-1. 动画函数的实现原理1-2. 动画缓动效果原理1-3. 动画函数添加回调函数(callback)1-4. 节流阀 PC端网页特效 首先,你要先了解以下知识点 一、元素偏移量offset系列 offset翻译过来就 阅读详情

相关推荐

JavaScript高手之路:封装抽奖效果

通过前面6篇文章的介绍,我相信读者大概对JavaScript的对象有了初步了解。那么这篇文章我们继续对前面学习的知识进行总结和实战,用面向对象思维来封装抽象效果,本文要达到的效果如图所示。 如图所示,蓝色方框内显示当前奖品,当我们单击开始按钮时,奖品开始滚动起来;当我们单击停止按钮时,奖品列表滚动停止。 无论是现在我们要封装抽奖效果,还是后面要进行的插件开发,编程的步骤大概分为这几步。首先,编写...

张翠山的博客 2830

原生JS实现网页烟花动画效果——前端工程师必备技能!

原生js实现放烟花效果,点击鼠标,然后向四周扩散,最后自由落体效果!最简单的方法实现!

李帅醒的博客 2万+

原生JS实现炫酷弹性相册动画效果

随着移动端和响应式设计的普及,用户对网页交互体验的要求日益提升。弹性相册作为一种视觉与交互兼具的展示形式,广泛应用于摄影网站、社交平台和个人博客中。本文采用HTML5、CSS3与原生JavaScript构建一个高性能、可扩展的弹性相册系统,充分发挥现代浏览器在动画、布局与事件处理方面的优势。通过模块化开发思路与性能优化策略,实现图片的弹性缩放、流畅交互与多设备适配,为开发者提供一套完整、可复用的解决方案。

weixin_42604188的博客 671

Win10或Win8下ObjectARX2015 Wizard向导创建项目失败解决方法

[原创]objectARX 2015 Wizard安装向导在Win8/win10下无法创建项目的解决方法总结 by edata @2017-5-1 objectARX 2015 Wizard安装向导在Win8/win10下无法创建项目的解决方法 因为Win8/Win10对系统盘(默认c:)使用了高级权限管理,所以在此盘下操作文件的修改工作都需要管理员权限才行。 基于这个原因,导致非管理员安

edata的博客 7029

Ubuntu22.04下3分钟搞定GitHub加速:SwitchHosts+小鱼工具保姆级配置指南

本文提供Ubuntu22.04下快速解决GitHub下载超时问题的保姆级教程,通过SwitchHosts图形化工具和小鱼一键换源工具实现高效加速。详细步骤包括环境准备、工具安装配置及验证方法,帮助开发者轻松优化GitHub访问速度,提升工作效率。

weixin_29258297的博客 567

ubuntu20.04运行VINS-Mono(跑EuRoC数据集)

在VINS-Mono主工程目录下的config子目录中找到euroc文件夹,并打开其中的euroc_config.yaml文件,将其中结果输出保存路径修改为本地的绝对路径或相对路径。应该是这个功能包路径没有成功得到,直接注释了这一行,改成你电脑中安装的vins_mono的pose_graph这个功能包路径,备注:直接下可能因为包太大下不下来,我是下载的zip,再解压,将VINS-Mono-master重命名为VINS-Mono。,当时参考了几篇不同的文章,感觉我的这个配置应该也可以编译,就先尝试了一下。

2301_80311277的博客 2983

ArduPilot移植到自定义硬件:完整指南

详解如何将ArduPilot成功移植到自定义硬件平台,涵盖环境搭建、代码配置与调试技巧。无论是初学者还是进阶开发者,都能快速掌握ArduPilot在不同硬件上的适配方法,提升开发效率。

weixin_28931449的博客 639

基于深度学习的高精度牙齿健康检测识别系统(PyTorch+Pyside6+YOLOv5模型)

近年来,机器学习和深度学习取得了较大的发展,深度学习方法在检测精度和速度方面与传统方法相比表现出更良好的性能。YOLOv5是单阶段目标检测算法YOLO的第五代,根据实验得出结论,其在速度与准确性能方面都有了明显提升,开源的代码可见https://github.com/ultralytics/yolov5。因此本博文利用YOLOv5检测算法实现一种高精度家禽猪识别检测模型,再搭配上Pyside6库写出界面系统,完成目标检测识别页面的开发。

sc1434404661的博客 5799

视图库对接系列(GA-T 1400)一、简单介绍

GA/T 1400《公安视频图像信息应用系统》 是我们需要参考看看的相关文档,里面有对应的标准和介绍,没有这个文档的话可以加群找我要。群的话 我放在最下面了。我们先简单想几个问题, 也就是这个协议主要干什么用的,为什么要有, 能做什么。

qq_37716298的博客 4290

基于STM32、HAL库的WF162A 11BA T&R气压传感器 驱动程序设计

/ 转换为7位地址。* @param temperature: 存储读取到的温度值(°C)* @param temperature: 存储读取到的温度值(°C)* @param pressure: 存储读取到的压力值(bar)* @param pressure: 存储读取到的压力值(bar)* @param range: 压力范围(bar)

corlin6688的博客 363

MATLAB RANSAC圆柱体点云拟合 (28)

RANSAC拟合方法,从原始点云中拟合具有特定形状的点云,这里对原始点云中大致呈圆柱的点云进行分割,圆柱的半径,以及朝向都是比较重要的定义圆柱的参数。下面是具体使用的函数和实现的代码主要对函数功能和涉及到的参数进行介绍model 柱面的几何模型,作为柱面模型对象返回。当输入点云不包含足够的有效点时,输出模型的系数设置为零。算法无法找到足够的内点。ptCloudIn 指定为 pointCloud 对象的点云。如果输入 ptCloud 的 Normal 属性为空,则函数将用值填充它,以满足拟合算法的要求。

weixin_44329757的博客 1385

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

上一篇: 纯CSS3炫酷3D星空动画特效
下一篇: JavaScript实现狂欢舞动的小球
风或许自媒体
博客等级 码龄12年 76粉丝 35原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值