zoukankan      html  css  js  c++  java
  • requestAnimationFrame()

    因为settimeout和setinterval是无法保证执行时间的。加上浏览器的定时器不是精确到1毫秒:
    Ie8及之前版本为15.625,也就是你设定的时间为0-15的话,那么最终执行可能是0毫秒或者15毫秒后执行
    Ie9之后和chrome为4
    火狐和safari为10
    当该页面被切换出去,非激活,对定时器也有影响

     

    Css动画浏览器知道目前有动画在实现,而用传统的定时做动画,浏览器不知道这是动画,因此才出现了 requestAnimationFrame,这样浏览器就知道在执行动画了,会进行优化。

     

    这方法接受一个函数,在这函数里你可以放心修改在下次重绘时生效的Dom样式。他不是自己循环调用的,需要自己定义循环和停止。
    火狐实现的里面函数接受一个时间戳,指示下次重绘发生的确切发生时间
    chrome可以接受了第二个参数,表明动画在那个元素上发生,控制重绘范围。

     

    兼容:
    (function(){
    function draw(timestamp){
    //calculate difference since last repaint
    var drawStart = (timestamp || Date.now()),
    diff = drawStart - startTime;
    //use diff to determine correct next step
    //reset startTime to this repaint
    startTime = drawStart;
    //draw again
    requestAnimationFrame(draw);
    }
    var requestAnimationFrame = window.requestAnimationFrame ||
    window.mozRequestAnimationFrame ||
    window.webkitRequestAnimationFrame ||
    window.msRequestAnimationFrame,
    startTime = window.mozAnimationStartTime || Date.now();
    requestAnimationFrame(draw);
    })();

  • 相关阅读:
    图匹配板子
    线性基
    Berlekamp-Massey algorithm
    组合/概率/形式幂级数/多项式/集合幂级数的题
    费用流 Dijkstra 原始对偶方法(primal-dual method)
    UVA-12304
    二项式系数
    卡特兰数
    多项式模板
    工具
  • 原文地址:https://www.cnblogs.com/chuangweili/p/5166369.html
Copyright © 2011-2022 走看看