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

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

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…

js实现选题

js实现选题

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

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…