requestID = requestAnimationFrame(callback); //控制台输出1和0var timer = requestAnimationFrame(function(){console.log(0);}); console.log(timer);//1 cancelAnimationFrame方法用于取消定时器//控制台什么都不输出var timer = requestAnimationFrame(function(){console.log(0);}); cancelAnimationFrame(timer);也可以直接使用返回值进行取消
var timer = requestAnimationFrame(function(){console.log(0);}); cancelAnimationFrame(1);兼容
if(!window.requestAnimationFrame){var lastTime = 0;window.requestAnimationFrame = function(callback){var currTime = new Date().getTime();var timeToCall = Math.max(0,16.7-(currTime - lastTime));var id = window.setTimeout(function(){callback(currTime + timeToCall);},timeToCall);lastTime = currTime + timeToCall;return id;}} if (!window.cancelAnimationFrame) {window.cancelAnimationFrame = function(id) {clearTimeout(id);};}应用
<div id="myDiv" style="background-color: lightblue;width: 0;height: 20px;line-height: 20px;">0%</div><button id="btn">run</button><script>var timer;btn.onclick = function(){clearInterval(timer);myDiv.style.width = "0";timer = setInterval(function(){if(parseInt(myDiv.style.width) < 500){myDiv.style.width = parseInt(myDiv.style.width) + 5 + "px";myDiv.innerHTML = parseInt(myDiv.style.width)/5 + "%"; }else{clearInterval(timer);} },16);}</script>
【2】setTimeout
<div id="myDiv" style="background-color: lightblue;width: 0;height: 20px;line-height: 20px;">0%</div><button id="btn">run</button><script>var timer;btn.onclick = function(){clearTimeout(timer);myDiv.style.width = "0";timer = setTimeout(function fn(){if(parseInt(myDiv.style.width) < 500){myDiv.style.width = parseInt(myDiv.style.width) + 5 + "px";myDiv.innerHTML = parseInt(myDiv.style.width)/5 + "%";timer = setTimeout(fn,16);}else{clearTimeout(timer);} },16);}</script>
【3】requestAnimationFrame
<div id="myDiv" style="background-color: lightblue;width: 0;height: 20px;line-height: 20px;">0%</div><button id="btn">run</button><script>var timer;btn.onclick = function(){myDiv.style.width = "0";cancelAnimationFrame(timer);timer = requestAnimationFrame(function fn(){if(parseInt(myDiv.style.width) < 500){myDiv.style.width = parseInt(myDiv.style.width) + 5 + "px";myDiv.innerHTML = parseInt(myDiv.style.width)/5 + "%";timer = requestAnimationFrame(fn);}else{cancelAnimationFrame(timer);} });}</script>
好了,代码到此介绍,下面给大家介绍BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
以上所述是小编给大家介绍的BOM系列第二篇之定时器requestAnimationFrame ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!