当前位置:首页 > 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
分享给朋友:

相关文章

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swipe…

js 实现倒计时

js 实现倒计时

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

js实现选项卡

js实现选项卡

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

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含inpu…

js 实现日历

js 实现日历

实现日历的基本思路 日历的核心功能是展示日期,并允许用户进行日期选择或导航。JavaScript 可以动态生成日历的 HTML 结构,并处理用户交互逻辑。 基础日历结构 日历通常包含头部(显示月份和…

js验证码实现

js验证码实现

验证码的基本原理 验证码(CAPTCHA)用于区分人类用户和自动化程序。常见类型包括图形验证码、滑动验证码、短信验证码等。JavaScript 可用于前端验证码的生成和验证逻辑。 图形验证码实现 使…