当前位置:首页 > 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控制动画的启停。

@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定时器精确控制旋转速度和方向。适合需要交互式控制的场景,如根据用户输入调整旋转。

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"
});

js实现div旋转

标签: jsdiv
分享给朋友:

相关文章

js实现分页

js实现分页

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

div css制作网页

div css制作网页

使用DIV+CSS制作网页的基本方法 在网页设计中,DIV+CSS是常用的布局方式。DIV作为容器元素,配合CSS样式控制,可以实现灵活、响应式的页面布局。 创建HTML结构 使用DIV划分页面区…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounc…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似: fu…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…