当前位置:首页 > JavaScript

js实现转动

2026-01-31 23:12:30JavaScript

使用 CSS 动画实现转动

通过 transform@keyframes 实现旋转动画,适用于简单场景:

.rotate-element {
  animation: spin 2s linear infinite;
}
@keyframes spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

在 HTML 中为元素添加 class="rotate-element" 即可。

js实现转动

使用 JavaScript 控制旋转

通过 requestAnimationFrame 动态更新旋转角度,适合需要交互控制的场景:

let angle = 0;
const element = document.getElementById('target');

function rotate() {
  angle = (angle + 1) % 360;
  element.style.transform = `rotate(${angle}deg)`;
  requestAnimationFrame(rotate);
}
rotate();

使用 GSAP 库实现平滑转动

GSAP 提供更复杂的动画控制,支持缓动效果:

js实现转动

gsap.to("#target", {
  rotation: 360,
  duration: 3,
  repeat: -1,
  ease: "power1.out"
});

通过 Canvas 绘制旋转对象

适用于自定义图形的动态旋转:

const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
let rotation = 0;

function draw() {
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  ctx.save();
  ctx.translate(100, 100);
  ctx.rotate((rotation * Math.PI) / 180);
  ctx.fillRect(-50, -50, 100, 100);
  ctx.restore();
  rotation = (rotation + 1) % 360;
  requestAnimationFrame(draw);
}
draw();

响应鼠标事件的旋转控制

结合事件监听实现交互式旋转:

const element = document.getElementById('interactive');
let isDragging = false;
let startAngle = 0, currentAngle = 0;

element.addEventListener('mousedown', (e) => {
  isDragging = true;
  startAngle = getAngle(e.clientX, e.clientY);
});

window.addEventListener('mousemove', (e) => {
  if (!isDragging) return;
  const angle = getAngle(e.clientX, e.clientY);
  currentAngle += angle - startAngle;
  element.style.transform = `rotate(${currentAngle}deg)`;
  startAngle = angle;
});

function getAngle(x, y) {
  const rect = element.getBoundingClientRect();
  return Math.atan2(y - rect.top - rect.height/2, x - rect.left - rect.width/2) * 180 / Math.PI;
}

标签: js
分享给朋友:

相关文章

js实现验证码

js实现验证码

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

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与响应式…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js 实现倒计时

js 实现倒计时

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

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选…