zoukankan      html  css  js  c++  java
  • requestAnimationFrame语法糖处理动画---真香

    废话不多说,直接上图上代码!!!!

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title>requestAnimationFrame</title>
            <style type="text/css">
                #animate{
                    width: 100px;
                    height: 100px;
                    background: red;
                    position: absolute;
                    left: 0;
                    top: 0;
                }
            </style>
        </head>
        <body>
            <div id="root">
                <div id="animate"></div>
            </div>
            <script type="text/javascript">
                // window.requestAnimationFrame() 告诉浏览器——你希望执行一个动画,并且要求浏览器在下次重绘之前调用指定的回调函数更新动画。
                // 该方法需要传入一个回调函数作为参数,该回调函数会在浏览器下一次重绘之前执行
                // 语法:window.requestAnimationFrame(callback);
                // HTML5标准规定了setTimeout()的第二个参数的最小值(最短间隔),不得低于4毫秒,如果低于这个值,就会自动增加。在此之前,老版本的浏览器都将最短间隔设为10毫秒。
                // 另外,对于那些DOM的变动(尤其是涉及页面重新渲染的部分),通常不会立即执行,而是每16毫秒执行一次;
                let el = document.getElementById('animate'),
                    flag= true,
                    left = 0,
                    requestAnimationFrameId = null
                    
                    function loop() {
                        if(flag === true){
                            if(left >= 200){
                                flag = false
                            }
                            el.style.left = ` ${left ++}px`
                        }else{
                            if(left <= 0){
                                flag = true
                            }
                            el.style.left = ` ${left --}px`
                        }
                    }
                    
                    //requestAnimationFrame效果
                    (function animloop() {
                        loop();
                        requestAnimationFrameId = requestAnimationFrame(animloop);
                        //如果left等于150 停止动画
                        // if(left === 150){
                        //     cancelAnimationFrame(requestAnimationFrameId)
                        // }
                    })();
                    
                    //setInterval效果
                    // setInterval(function(){
                    //     loop()
                    // },1000/60)
                
            </script>
        </body>
    </html>

    以上demo代码直接跑,即可演示requestAnimationFrame;

    转载注明出处,谢谢合作!!!

  • 相关阅读:
    jquery对标签属性操作
    将RichTextBox的内容直接写入数据库:
    zendstdio的智能提示功能
    LINQ操作数组(交集,并集,差集,最值,平均,去重复)
    包含的语句
    网站后台弱口令搜集(转自老白)
    委托之异步
    C# 操作超时正常还是错
    cookie转coontoin
    Qt编写自定义控件17-按钮进度条
  • 原文地址:https://www.cnblogs.com/lhl66/p/14374353.html
Copyright © 2011-2022 走看看