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);
    })();

  • 相关阅读:
    u盘的超级用法
    文件夹访问被拒绝
    web移动前端的click点透问题
    call()apply()ind()备忘录
    Safari中的new Date()格式化坑
    dataURI V.S. CSS Sprites 移动端
    css3属性之 box-sizing
    多人协作代码--公共库的引用与业务约定
    web前端本地测试方法
    依赖包拼合方法
  • 原文地址:https://www.cnblogs.com/chuangweili/p/5166369.html
Copyright © 2011-2022 走看看