JS实现动画定时器方法

本文主要和大家分享js实现动画定时器方法,广义说:一切通过js改变的视觉呈现都叫动画;例如,按钮,链接等元素交互反馈。,狭义说:通过定时器连续调用js函数进行元素属性改变产生的视觉动画效果。

定时器

定时器是JavaScript动画的核心技术;

setTimeout(),setInterval()是大家熟知的,以前经常使用的;

一般都是做些辅助性,锦上添花的事;

细心的人可能会发现一个现象,从其他标签页切换到有循环动画页面会有卡顿和急速帧切换现象;

问题就在于他们的内在运行机制;

认识setTimeout

第一个参数推荐用函数形式,字符串形式会两次解析,还有eval一样的问题;

不止两个参数,可以更多,见示例1;

this指向问题,见示例2;

返回值是个整数;

clearTimeout(timer)取消定时器;

setInterval,clearInterval同上;

示例1:

setTimeout(function(a,b){  console.log(a+b); },1000,1,1);

登录后复制

示例2:

var a = 0;function foo(){ console.log(this.a);};var obj = { a : 2, foo:foo}setTimeout(obj.foo,100);

登录后复制

运行机制

示例:

setTimeout(function(){  console.log(1); }); console.log(0);

登录后复制

原因:加入队列,阻塞执行。

setTimeout图例:

JS实现动画定时器方法

setInterval图例:

JS实现动画定时器方法

存在即合理

父子元素事件冒泡,需要先执行父元素,见示例3;

用户自定义的回调函数,通常在浏览器的默认动作之前触发,见示例4;

示例3:

myp.onclick = function(){ setTimeout(function(){ alert(0); })}document.onclick = function(){ alert(1);}

登录后复制

示例4:

myInput.onkeypress = function(event) { setTimeout(function(){  myInput.value = myInput.value.toUpperCase(); });}

登录后复制

认识requestAnimationFrame

用法与setTimeout类似,只是不需要时间参数;

机制完全不同:

1,setTimeout是异步操作,加入任务队列( event loop ),当js引擎线程中同步代码执行完才会从任务队列中取出执行;

2,raf是用户代理(浏览器)专门针对动画开发的接口,用户代理会以合适的频率进行动画帧更新(一般同显示器刷新频率,1000/60ms),在隐藏或者非活动页面会停止帧更新,节省CPU资源;

3,raf示例

JS实现动画定时器方法

raf简单兼容

window.requestAnimFrame = (function(){  return window.requestAnimationFrame ||    window.webkitRequestAnimationFrame ||      window.mozRequestAnimationFrame ||    function( callback ){      window.setTimeout(callback, 1000 / 60);    };  })();

登录后复制

相关推荐:

JavaScript的定时器详解

深入JavaScript之定时器

Node定时器详细解析

以上就是JS实现动画定时器方法的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2779352.html

(0)
上一篇 2025年3月8日 15:46:32
下一篇 2025年3月8日 15:46:38

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • JS的可折叠面板使用详解

    这次给大家带来js的可折叠面板使用详解,使用js可折叠面板的注意事项有哪些,下面就是实战案例,一起来看一下。 举个例子             Part1         I am part 1        Part2        I …

    编程技术 2025年3月8日
    200
  • Node.js如何开发微信墙

    这次给大家带来Node.js如何开发微信墙,Node.js开发微信墙的注意事项有哪些,下面就是实战案例,一起来看一下。 验证服务器有效性 接收用户通过微信订阅号发给服务器的消息 解析收到的XML文本消息格式为JSON 用模板构造应答用户的X…

    编程技术 2025年3月8日
    200
  • JS的日期相关函数使用详解

    这次给大家带来js的日期相关函数使用详解,使用js日期相关函数的注意事项有哪些,下面就是实战案例,一起来看一下。 一、 日期相关函数 select current_date();select current_date;select curr…

    编程技术 2025年3月8日
    200
  • vue.js实现连接打印机

    本文主要给大家介绍了vue.js如何实现连接打印机,文中通过示例代码介绍的非常详细,具有一定的参考学习价值,希望能帮助到大家。         hello word!   //要打印的内容打 印 printBtn(){      let n…

    编程技术 2025年3月8日
    200
  • NodeJS之前端注册页面

    本文主要给大家介绍了NodeJS之前端注册页面的相关知识,文中通过示例代码介绍的非常详细,对大家学习具有一定的参考学习价值,希望能帮助到大家。 app.js文件为: //应用程序的启动入口文件//加载模块var express = requ…

    2025年3月8日
    200
  • 新手如何通过Vue.js + Node.js打造个人博客

    本文主要给大家介绍了新手如何通过Vue.js + Node.js打造个人博客,文中通过示例代码介绍的非常详细,对大家学习具有一定的参考学习价值,希望能帮助到大家。 方案 ui风格:主要参考randy’s blog的风格,并加入自…

    编程技术 2025年3月8日
    200
  • a标签如何调用JavaScript

     本文主要给大家介绍了关于a标签如何调用JavaScript的相关资料,文中通过示例代码介绍的非常详细,对大家学习具有一定的参考学习价值,希望能帮助到大家。 我们常用的在a标签中有点击事件:         标签的 href 属性用于指定超…

    编程技术 2025年3月8日
    200
  • JS简易版富文本编辑器实现代码

    直到今天才来,初略的了解了下,当然呢,至于过程也是前一秒痛苦,后三秒轻松加容易的。这个富文本编辑器,主要是用p自带的contenteditable属性document.execCommand()方法实现的,为了方便布局,偷了下小懒,直接拿t…

    2025年3月8日
    200
  • javascript实现上传文件到后台接收

    在wordpress后台管理的插件管理界面,想添加一个ajax无刷新的上传,先说一下思路: 上传文件,必需得取得当前的文件的数据流,然后通过ajax的post方式发送给服务器处理。 (1)如何获取当前文件的数据流呢? 答:通过FormDat…

    编程技术 2025年3月8日
    200
  • 详解JavaScript之闭包

    闭包 : 闭包就是一个函数引用另外一个函数的变量,因为变量被引用着所以不会被回收,因此可以用来封装一个私有变量。 当内部函数在定义它的作用域的数据外部被引用时,就创建了该内部函数的闭包,如果内部函数引用了位于外部函数的变量,当外部函数调用完…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论