当前位置:首页 > JavaScript

js实现div旋转

2026-04-04 05:34:25JavaScript

使用 CSS transform 和 JavaScript 控制旋转

通过 JavaScript 动态修改 CSS 的 transform 属性,可以实现 div 的旋转效果。以下是一个基础示例:

js实现div旋转

<div id="rotateDiv" style="width: 100px; height: 100px; background-color: red;"></div>
<button onclick="rotateDiv()">旋转</button>

<script>
  let angle = 0;
  function rotateDiv() {
    angle += 45; // 每次旋转45度
    document.getElementById("rotateDiv").style.transform = `rotate(${angle}deg)`;
  }
</script>

使用 CSS 动画实现连续旋转

通过 CSS @keyframes 定义旋转动画,再用 JavaScript 控制动画的启停:

js实现div旋转

#rotateDiv {
  width: 100px;
  height: 100px;
  background-color: blue;
  animation: spin 2s linear infinite;
  animation-play-state: paused;
}

@keyframes spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}
<div id="rotateDiv"></div>
<button onclick="toggleRotation()">切换旋转</button>

<script>
  function toggleRotation() {
    const div = document.getElementById("rotateDiv");
    const isPaused = div.style.animationPlayState === 'paused';
    div.style.animationPlayState = isPaused ? 'running' : 'paused';
  }
</script>

通过 requestAnimationFrame 实现平滑旋转

适用于需要高性能或复杂控制的场景:

<div id="rotateDiv" style="width: 100px; height: 100px; background-color: green;"></div>
<button onclick="startRotation()">开始旋转</button>
<button onclick="stopRotation()">停止旋转</button>

<script>
  let angle = 0;
  let animationId = null;

  function startRotation() {
    cancelAnimationFrame(animationId); // 防止重复启动
    const div = document.getElementById("rotateDiv");

    function update() {
      angle = (angle + 1) % 360; // 每帧增加1度
      div.style.transform = `rotate(${angle}deg)`;
      animationId = requestAnimationFrame(update);
    }
    update();
  }

  function stopRotation() {
    cancelAnimationFrame(animationId);
  }
</script>

旋转中心点调整

默认旋转中心为元素中心,可通过 transform-origin 修改:

document.getElementById("rotateDiv").style.transformOrigin = "left top"; // 左上角为旋转中心

注意事项

  • 旋转角度单位为 deg(度),也支持 rad(弧度)。
  • 复合变换时需注意 transform 属性的顺序(如 rotatetranslate 的顺序会影响结果)。
  • 性能优化:对大量元素旋转时建议使用 CSS 硬件加速(如 will-change: transform)。

标签: jsdiv
分享给朋友:

相关文章

div css网页制作

div css网页制作

div与CSS基础布局 使用div结合CSS是网页布局的核心方法。div作为块级元素,通过CSS控制其样式和位置。 HTML结构示例: <div class="container">…

css div制作

css div制作

使用CSS制作div元素 在HTML和CSS中,div元素是最常用的容器之一,用于布局和样式设计。以下是一些常见的方法和技巧: 基础div样式 <div class="box">这是一…

js实现分页

js实现分页

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

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js实现授权

js实现授权

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

js计算器的实现

js计算器的实现

实现基础结构 HTML部分需要创建计算器的基本框架,包含显示区域和按钮。使用<div>容器包裹整个计算器,内部设置一个显示屏和多个按钮。 <div class="calculato…