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;

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

  • 相关阅读:
    deepin系统安装php扩展(或者统信UOS系统)
    前后端分离项目,访问后端接口跨域问题解决办法
    python打乱一个文件行数据
    python获取文件行数
    SQL进阶
    方便下载书籍网站
    gpuz软件下载
    U盘制作-安装win10系统
    docker -Docker安装FileBrowser实现网页版文件管理器
    OCP 063中文考试题库(cuug内部资料)第44题
  • 原文地址:https://www.cnblogs.com/lhl66/p/14374353.html
Copyright © 2011-2022 走看看