按轨迹周期运动

一、水平方向上的反复运动
例如:
水平宽度:50px
小球直径:6px


html结构:
    <div id="line" class="line">
        <div id="point" class="point" >
        </div>
    </div>
css样式:
.line{position: relative;width: 100px;height: 100px;border-bottom: 1px solid red;left: 100px;top: 100px;}
.point{width: 6px;height: 6px;background-color: Red;position: absolute;left: 47px;top: 47px;border-radius: 3px;}
js代码:
            var point = document.getElementById("point");
            var line = document.getElementById("line");
            var i = 0, j = 0;
            var b = false;
            setInterval(function () {
                if (i < line.offsetWidth && false == b) {
                    i++;
                    point.style.left = 47 - 50 + i + "px";
                    point.style.top = 47 + 50 + "px";
                }
                if (contline.offsetWidth == i) { b = true; }
                if (i > 0 && true == b) {
                    i--;
                    point.style.left = 47 - 50 + i + "px";
                    point.style.top = 47 + 50 + "px";
                }
                if (0 == i) {
                    b = false;
                }
            }, 60);

复制代码
View Code
 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <title>水平周期运动</title>
5 <style type="text/css">
6 .line{position: relative;width: 100px;height: 100px;border-bottom: 1px solid red;left: 100px;top: 100px;}
7 .point{width: 6px;height: 6px;background-color: Red;position: absolute;left: 47px;top: 47px;border-radius: 3px;}
8 </style>
9 <script type="text/javascript">
10 window.onload = function () {
11 var point = document.getElementById("point");
12 var line = document.getElementById("line");
13 var i = 0, j = 0;
14 var b = false;
15 setInterval(function () {
16 if (i < line.offsetWidth && false == b) {
17 i++;
18 point.style.left = 47 - 50 + i + "px";
19 point.style.top = 47 + 50 + "px";
20 }
21 if (contline.offsetWidth == i) {
22 b = true;
23 }
24 if (i > 0 && true == b) {
25 i--;
26 point.style.left = 47 - 50 + i + "px";
27 point.style.top = 47 + 50 + "px";
28 }
29 if (0 == i) {
30 b = false;
31 }
32 }, 60);
33 }
34 </script>
35 </head>
36 <body>
37 <div id="line" class="line">
38 <div id="point" class="point">
39 </div>
40 </div>
41 </body>
42 </html>
复制代码

二、按长方形(正方形)周长运动
长方形的长和宽分别是150px和100px
小球直径:6px


html结构:
    <div id="rectangle" class="rectangle">
        <div id="point" class="point">
        </div>
    </div>
css样式:
.rectangle{position: relative;width: 150px;height: 100px;border: 1px solid red;left: 100px;top: 100px;}
.point{width: 6px;height: 6px;background-color: Red;position: absolute;left: 47px;top: 47px;border-radius: 3px;}
js代码:

var point = document.getElementById("point");
            var rectangle = document.getElementById("rectangle");
            var i = 0, j = 0;
            setInterval(function () {
                if (i < rectangle.offsetWidth && 0 == j) {
                    i++;
                    point.style.left = 47 - 50 + i + "px";
                    point.style.top = 47 - 50 + j + "px";
                }

                else if (rectangle.offsetWidth == i && j < rectangle.offsetHeight) {
                    j++;
                    point.style.left = 47 - 50 + i + "px";
                    point.style.top = 47 - 50 + j + "px";
                }
                else if (i > 0 && rectangle.offsetHeight == j) {
                    i--;
                    point.style.left = 47 - 50 + i + "px";
                    point.style.top = 47 - 50 + j + "px";
                }
                else {
                    j--;
                    point.style.left = 47 - 50 + i + "px";
                    point.style.top = 47 - 50 + j + "px";
                }
            }, 60);

复制代码
View Code
 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <title>水平周期运动</title>
5 <style type="text/css">
6 .rectangle{position: relative;width: 150px;height: 100px;border: 1px solid red;left: 100px;top: 100px;}
7 .point{width: 6px;height: 6px;background-color: Red;position: absolute;left: 47px;top: 47px;border-radius: 3px;}
8 </style>
9 <script type="text/javascript">
10 window.onload = function () {
11 var point = document.getElementById("point");
12 var rectangle = document.getElementById("rectangle");
13 var i = 0, j = 0;
14 setInterval(function () {
15 if (i < rectangle.offsetWidth && 0 == j) {
16 i++;
17 point.style.left = 47 - 50 + i + "px";
18 point.style.top = 47 - 50 + j + "px";
19 }
20
21 else if (rectangle.offsetWidth == i && j < rectangle.offsetHeight) {
22 j++;
23 point.style.left = 47 - 50 + i + "px";
24 point.style.top = 47 - 50 + j + "px";
25 }
26 else if (i > 0 && rectangle.offsetHeight == j) {
27 i--;
28 point.style.left = 47 - 50 + i + "px";
29 point.style.top = 47 - 50 + j + "px";
30 }
31 else {
32 j--;
33 point.style.left = 47 - 50 + i + "px";
34 point.style.top = 47 - 50 + j + "px";
35 }
36 }, 60);
37 }
38 </script>
39 </head>
40 <body>
41 <div id="rectangle" class="rectangle">
42 <div id="point" class="point">
43 </div>
44 </div>
45 </body>
46 </html>
复制代码

三、按圆形周长运动 2∏R
圆形直径:100px
小球直径:6px

html结构:
    <div class="circle">
        <div id="point" class="point">
        </div>
    </div>
css样式:
.circle{position: relative;width: 100px;height: 100px;border: 1px solid red;left: 100px;top: 100px;border-radius: 50px;}
.point{width: 6px;height: 6px;background-color: Red;position: absolute;left: 47px;top: 47px;border-radius: 3px;}
js代码:
var point = document.getElementById("point");
            var i = 0;
            setInterval(function () {
                if (360 == i) {
                    i = 0;
                    point.style.left = 47 + 50 * Math.cos(0 * 2 * Math.PI / 360) + "px";
                    point.style.top = 47 + 50 * Math.sin(0 * 2 * Math.PI / 360) + "px";
                }
                else {
                    i++;
                    point.style.left = 47 + 50 * Math.cos(i * 2 * Math.PI / 360) + "px";
                    point.style.top = 47 + 50 * Math.sin(i * 2 * Math.PI / 360) + "px";
                }
            }, 60);

复制代码
View Code
 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <title>水平周期运动</title>
5 <style type="text/css">
6 .circle{position: relative;width: 100px;height: 100px;border: 1px solid red;left: 100px;top: 100px;border-radius: 50px;}
7 .point{width: 6px;height: 6px;background-color: Red;position: absolute;left: 47px;top: 47px;border-radius: 3px;}
8 </style>
9 <script type="text/javascript">
10 window.onload = function () {
11 var point = document.getElementById("point");
12 var i = 0;
13 setInterval(function () {
14 if (360 == i) {
15 i = 0;
16 point.style.left = 47 + 50 * Math.cos(0 * 2 * Math.PI / 360) + "px";
17 point.style.top = 47 + 50 * Math.sin(0 * 2 * Math.PI / 360) + "px";
18 }
19 else {
20 i++;
21 point.style.left = 47 + 50 * Math.cos(i * 2 * Math.PI / 360) + "px";
22 point.style.top = 47 + 50 * Math.sin(i * 2 * Math.PI / 360) + "px";
23 }
24 }, 60);
25 }
26 </script>
27 </head>
28 <body>
29 <div class="circle">
30 <div id="point" class="point">
31 </div>
32 </div>
33 </body>
34 </html>
复制代码

四、椭圆周长运动 ∏(a+b)
椭圆长半径:100px、短半径:50px
小球直径:6px

html结构:
    <div class="oval">
        <div id="point" class="point">
        </div>
    </div>
css样式:
.oval{position: relative;width: 200px;height: 100px;border: 1px solid red;left: 100px;top: 100px;border-radius: 100px/50px;}
.point{width: 6px;height: 6px;background-color: Red;position: absolute;left: 47px;top: 47px;border-radius: 3px;}
js代码:
            var point = document.getElementById("point");
            var i = 0;
            setInterval(function () {
                if (360 == i) {
                    i = 0;
                    point.style.left = 97 + 100 * Math.cos(0 * 2 * Math.PI / 360) + "px";
                    point.style.top = 47 + 50 * Math.sin(0 * 2 * Math.PI / 360) + "px";
                }
                else {
                    i++;
                    point.style.left = 97 + 100 * Math.cos(i * 2 * Math.PI / 360) + "px";
                    point.style.top = 47 + 50 * Math.sin(i * 2 * Math.PI / 360) + "px";
                }
            }, 60);

复制代码
View Code
 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <title>水平周期运动</title>
5 <style type="text/css">
6 .oval{position: relative;width: 200px;height: 100px;border: 1px solid red;left: 100px;top: 100px;border-radius: 100px/50px;}
7 .point{width: 6px;height: 6px;background-color: Red;position: absolute;left: 47px;top: 47px;border-radius: 3px;}
8 </style>
9 <script type="text/javascript">
10 window.onload = function () {
11 var point = document.getElementById("point");
12 var i = 0;
13 setInterval(function () {
14 if (360 == i) {
15 i = 0;
16 point.style.left = 97 + 100 * Math.cos(0 * 2 * Math.PI / 360) + "px";
17 point.style.top = 47 + 50 * Math.sin(0 * 2 * Math.PI / 360) + "px";
18 }
19 else {
20 i++;
21 point.style.left = 97 + 100 * Math.cos(i * 2 * Math.PI / 360) + "px";
22 point.style.top = 47 + 50 * Math.sin(i * 2 * Math.PI / 360) + "px";
23 }
24 }, 60);
25 }
26 </script>
27 </head>
28 <body>
29 <div class="oval">
30 <div id="point" class="point">
31 </div>
32 </div>
33 </body>
34 </html>
复制代码





posted @   前端咖  阅读(594)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示