美文网首页基础前端
一个简单地圆周运动

一个简单地圆周运动

作者: CondorHero | 来源:发表于2019-06-03 12:32 被阅读7次

    原理揭示
    圆周运动一定有个圆心(X,Y),只需要改变每个小球的 left 和 top 值来让小球运动。求小球在圆中的 x,y 必须借用三角函数,图中两个公式:


    原理揭示
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>圆周运动</title>
        <style>
            *{margin: 0; padding: 0;}
            ul {
                list-style: none;
                position: relative;
                margin: 100px auto;
                width: 500px;
                height: 500px;
                background-color: #f6f6f6;
                transition: all 0.5 ease 0s;
                transform-style: preserve-3d;
            }
            ul li {
                position: absolute;
                width: 40px;
                height: 40px;
                border-radius: 50%;
            }
            ul li:nth-child(1){background-color: rgba(255,255,0,0.6);}
            ul li:nth-child(2){background-color: rgba(255,0,255,0.6);}
            ul li:nth-child(3){background-color: rgba(0,255,255,0.6);}
            ul li:nth-child(4){background-color: rgba(0,255,0,0.6);}
            ul li:nth-child(5){background-color: rgba(255,0,0,0.6);}
        </style>
    </head>
    <body>
        <ul>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
        <script>
            var lis  = document.getElementsByTagName("li");
            cirmove({
                "cir" : [230,230,210], //圆心x,y半径r
                "degree" : 0,
                "obj" : lis[0],
                "interval" : 10
            });
            cirmove({
                "cir" : [230,230,210], //圆心x,y半径r
                "degree" : 90,
                "obj" : lis[1],
                "interval" : 10
            });
            cirmove({
                "cir" : [230,230,210], //圆心x,y半径r
                "degree" : 270,
                "obj" : lis[2],
                "interval" : 10
            });
            cirmove({
                "cir" : [230,230,210], //圆心x,y半径r
                "degree" : 180,
                "obj" : lis[3],
                "interval" : 10
            });
            cirmove({
                "cir" : [230,230,0], //圆心x,y半径r
                "degree" : 0,
                "obj" : lis[4],
            });
            function cirmove(argetJSON){
    
                //圆心x,y半径r
                var x = argetJSON.cir[0];
                var y = argetJSON.cir[1];
                var r = argetJSON.cir[2];
    
                // 操作的 DOM 对象
                var obj  = argetJSON.obj;
    
                // 小圆起始的角度
                var deg = argetJSON.degree;
    
                // 定时器的时间
                var interval = argetJSON.interval;
    
                // 定时器让小圆运动起来
                setInterval(move,interval);
                // 小球旋转
                function move(){
                    deg += 1;
                    obj.style.left = x +  r * Math.cos(degreeToRad(deg)) + "px";
                    obj.style.top = y -  r * Math.sin(degreeToRad(deg)) + "px";
                }
                // 角度换算为弧度,JS中的所有角度均为弧度制,想用角度就得转换一下。
                function degreeToRad(degree){
                    const c = 180;
                    return degree * Math.PI / c;
                }
            }
        </script>
    </body>
    </html>
    
    GIF效果

    相关文章

      网友评论

        本文标题:一个简单地圆周运动

        本文链接:https://www.haomeiwen.com/subject/reobtctx.html