当前位置:首页 > JavaScript

js实现圆圈运动

2026-04-07 13:33:59JavaScript

使用 Canvas 实现圆圈运动

在 HTML 中创建 Canvas 元素并初始化绘图环境:

<canvas id="circleCanvas" width="400" height="400"></canvas>
<script>
  const canvas = document.getElementById('circleCanvas');
  const ctx = canvas.getContext('2d');
</script>

定义圆心坐标和半径:

let centerX = canvas.width / 2;
let centerY = canvas.height / 2;
let radius = 50;

使用 requestAnimationFrame 实现动画循环:

js实现圆圈运动

let angle = 0;
function animate() {
  ctx.clearRect(0, 0, canvas.width, canvas.height);

  // 计算运动点坐标
  const x = centerX + Math.cos(angle) * radius;
  const y = centerY + Math.sin(angle) * radius;

  // 绘制运动轨迹
  ctx.beginPath();
  ctx.arc(centerX, centerY, radius, 0, Math.PI * 2);
  ctx.strokeStyle = '#ddd';
  ctx.stroke();

  // 绘制运动点
  ctx.beginPath();
  ctx.arc(x, y, 10, 0, Math.PI * 2);
  ctx.fillStyle = 'red';
  ctx.fill();

  angle += 0.05;
  requestAnimationFrame(animate);
}
animate();

使用 CSS 动画实现圆圈运动

创建 HTML 元素结构:

<div class="circle-container">
  <div class="circle"></div>
</div>

添加 CSS 样式和动画:

js实现圆圈运动

.circle-container {
  width: 200px;
  height: 200px;
  position: relative;
  border: 1px dashed #ccc;
  border-radius: 50%;
}

.circle {
  width: 20px;
  height: 20px;
  background-color: red;
  border-radius: 50%;
  position: absolute;
  top: -10px;
  left: 90px;
  animation: circle-motion 3s linear infinite;
}

@keyframes circle-motion {
  0% {
    transform: rotate(0deg) translateY(-100px) rotate(0deg);
  }
  100% {
    transform: rotate(360deg) translateY(-100px) rotate(-360deg);
  }
}

使用 SVG 实现圆圈运动

创建 SVG 元素和动画:

<svg width="200" height="200" viewBox="0 0 200 200">
  <circle cx="100" cy="100" r="80" stroke="#ddd" fill="none"/>
  <circle cx="180" cy="100" r="10" fill="red">
    <animateTransform 
      attributeName="transform" 
      type="rotate" 
      from="0 100 100" 
      to="360 100 100" 
      dur="3s" 
      repeatCount="indefinite"/>
  </circle>
</svg>

使用三角函数计算位置

通过 JavaScript 定时更新元素位置:

const dot = document.getElementById('movingDot');
let angle = 0;
const radius = 80;
const center = { x: 100, y: 100 };

setInterval(() => {
  angle += 0.05;
  const x = center.x + Math.cos(angle) * radius;
  const y = center.y + Math.sin(angle) * radius;

  dot.style.left = `${x}px`;
  dot.style.top = `${y}px`;
}, 16);

以上方法分别展示了使用不同技术实现圆圈运动的效果,可根据具体需求选择合适的方式。Canvas 适合需要复杂绘制的场景,CSS 动画实现简单但控制精度较低,SVG 适合矢量图形,纯 JavaScript 计算则提供最大灵活性。

标签: 圆圈js
分享给朋友:

相关文章

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的JWT令牌…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 c…

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…