js动画之requestAnimationFrame回调函数代替setTimeout

Posted 飓风吟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js动画之requestAnimationFrame回调函数代替setTimeout相关的知识,希望对你有一定的参考价值。

继续完善我上一篇博客:https://www.cnblogs.com/duanhuarong/p/12195466.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        * {margin: 0;padding: 0;}
        #div1 {width: 200px;height: 200px;position: absolute;left: 0;background: red;}
    </style>
</head>
<body>
    <div id="div1"></div>
    <script>
        window.onload = function () {
            let Odiv = document.getElementById("div1");
            let disX = 5;
            let disY = 5;
            let x=0;
            let y=0;
            let maxWidth = window.innerWidth - Odiv.offsetWidth-disX;        //浏览器左边界=浏览器宽度-div的宽度-水平速度矢量  
            let maxHeight = window.innerHeight - Odiv.offsetHeight-disY;     //浏览器右边界=浏览器高度-div的高度-垂直速度矢量
            function auto(){
                if(x>=maxWidth)disX*=-1;
                if(y>=maxHeight)disY*=-1;
                if(x<0)disX*=-1;
                if(y<0)disY*=-1;
                x+=disX;
                y+=disY;
                Odiv.style.left=x+\'px\';
                Odiv.style.top=y+\'px\';
               //和setTimeout一样,要手动调用才能实现连续动画。
                window.requestAnimationFrame(auto);
            }
            auto();
        }
    </script>
</body>
</html>

 

参考文档:https://www.cnblogs.com/xiaoyulive/p/6690999.html

以上是关于js动画之requestAnimationFrame回调函数代替setTimeout的主要内容,如果未能解决你的问题,请参考以下文章

动画优化之window.requestAnimationFrame()

window.requestAnimationFrame与Tween.js配合使用实现动画缓动效果

js动画最佳实现——requestAnimationFrame

第136篇:Three.js基础入门动画API:setInterval 与 requestAnimationFrame的区别

requestAnimationFrame (待整理)

秀才提笔忘了字:javascript使用requestAnimationFrame实现动画