当前位置:首页 > JavaScript

js实现div旋转

2026-03-01 04:58:00JavaScript

使用CSS transform 属性旋转div

通过JavaScript动态修改CSS的transform属性,可以实现div旋转效果。核心代码通过设置rotate()函数控制旋转角度,单位可以是deg(度)或rad(弧度)。

const div = document.getElementById('rotateDiv');
let angle = 0;

function rotateDiv() {
  angle += 1;
  div.style.transform = `rotate(${angle}deg)`;
  requestAnimationFrame(rotateDiv);
}

rotateDiv();

通过CSS动画实现旋转

结合CSS的@keyframes和JavaScript触发动画,实现更流畅的旋转效果。CSS部分定义旋转动画,JavaScript控制动画的启停。

js实现div旋转

@keyframes spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

.rotate {
  animation: spin 2s linear infinite;
}
const div = document.getElementById('rotateDiv');
div.classList.add('rotate');

// 停止旋转
// div.classList.remove('rotate');

使用setInterval控制旋转速度

通过setInterval定时器精确控制旋转速度和方向。适合需要交互式控制的场景,如根据用户输入调整旋转。

js实现div旋转

const div = document.getElementById('rotateDiv');
let angle = 0;
const speed = 2; // 控制旋转速度

setInterval(() => {
  angle = (angle + speed) % 360;
  div.style.transform = `rotate(${angle}deg)`;
}, 16);

响应鼠标事件的交互旋转

通过监听鼠标事件(如拖拽),将用户操作转换为旋转角度。适合需要用户交互的场景。

const div = document.getElementById('rotateDiv');
let isDragging = false;
let startAngle = 0;
let currentAngle = 0;

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

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

document.addEventListener('mouseup', () => {
  isDragging = false;
});

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

使用GSAP库实现高级动画

通过GSAP等动画库实现复杂旋转效果,如缓动、多轴旋转等。适合需要高级动画控制的场景。

<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.11.4/gsap.min.js"></script>
const div = document.getElementById('rotateDiv');
gsap.to(div, {
  rotation: 360,
  duration: 2,
  repeat: -1,
  ease: "power1.inOut"
});

标签: jsdiv
分享给朋友:

相关文章

div css制作网页

div css制作网页

使用DIV和CSS制作网页的基本方法 DIV和CSS是现代网页布局的核心技术,通过合理的结构设计和样式控制可以实现各种复杂的页面效果。 HTML结构搭建 使用<div>标签划分页面区域,…

js实现分页

js实现分页

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

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现继承

js实现继承

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

js实现授权

js实现授权

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

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…