当前位置:首页 > JavaScript

js实现div旋转

2026-04-04 05:34:25JavaScript

使用 CSS transform 和 JavaScript 控制旋转

通过 JavaScript 动态修改 CSS 的 transform 属性,可以实现 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 控制动画的启停:

#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 修改:

js实现div旋转

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

注意事项

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

标签: jsdiv
分享给朋友:

相关文章

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

div css制作网页

div css制作网页

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

js实现按钮点击

js实现按钮点击

实现按钮点击的JavaScript方法 HTML按钮元素 在HTML中创建按钮元素,为其添加id或class以便JavaScript选择: <button id="myButton">点…

js分页实现

js分页实现

分页的基本原理 分页的核心是通过计算当前页码和数据偏移量,从服务器或本地数据中截取对应范围的数据进行展示。通常需要以下参数:当前页码(currentPage)、每页条数(pageSize)、总数据量(…