当前位置:首页 > 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实现轮播图

轮播图实现方法 基础HTML结构 <div class="slider"> <div class="slides"> <img src="image1.jpg…

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterva…

js实现验证码

js实现验证码

实现验证码的JavaScript方法 生成随机验证码 使用Math.random()生成随机字符串,结合数字和字母: function generateCaptcha() { const cha…

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue-r…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…