当前位置:首页 > JavaScript

js实现箭头旋转

2026-02-02 21:00:35JavaScript

使用 CSS 动画实现箭头旋转

通过 CSS 的 transform@keyframes 实现平滑旋转效果。定义一个箭头元素(如 div 或 SVG),添加 CSS 类控制旋转。

<style>
  .arrow {
    width: 20px;
    height: 20px;
    background: url('arrow-icon.svg') no-repeat; /* 替换为箭头图标 */
    transition: transform 0.3s ease;
  }
  .rotate {
    transform: rotate(180deg);
  }
</style>

<div class="arrow" id="arrow"></div>
<script>
  document.getElementById('arrow').addEventListener('click', function() {
    this.classList.toggle('rotate');
  });
</script>

使用 JavaScript 动态控制旋转角度

通过 style.transform 动态修改旋转角度,适合需要精确控制旋转的场景。

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

function rotateArrow() {
  angle += 90;
  arrow.style.transform = `rotate(${angle}deg)`;
  arrow.style.transition = 'transform 0.5s ease';
}

使用 Canvas 绘制旋转箭头

通过 Canvas API 实现动态绘制和旋转,适合复杂动画需求。

<canvas id="canvas" width="100" height="100"></canvas>
<script>
  const canvas = document.getElementById('canvas');
  const ctx = canvas.getContext('2d');
  let rotation = 0;

  function drawArrow() {
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    ctx.save();
    ctx.translate(50, 50);
    ctx.rotate((rotation * Math.PI) / 180);

    // 绘制箭头形状
    ctx.beginPath();
    ctx.moveTo(0, -20);
    ctx.lineTo(15, 10);
    ctx.lineTo(-15, 10);
    ctx.closePath();
    ctx.fillStyle = 'black';
    ctx.fill();

    ctx.restore();
  }

  setInterval(() => {
    rotation += 5;
    drawArrow();
  }, 100);
</script>

使用 GSAP 库实现高级动画

GSAP 提供更流畅的动画控制和复杂时间线管理。

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

注意事项

  • 性能优化:优先使用 CSS 动画(硬件加速),避免频繁触发重排。
  • 兼容性:transform 需前缀处理旧版浏览器(如 -webkit-transform)。
  • 中心点调整:通过 transform-origin 修改旋转中心位置(默认元素中心)。

js实现箭头旋转

标签: 箭头js
分享给朋友:

相关文章

css下拉箭头的制作

css下拉箭头的制作

使用伪元素制作下拉箭头 通过CSS的::after或::before伪元素结合边框属性创建箭头。设置元素的position: relative,伪元素使用绝对定位调整位置。 .dropdown {…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js画图实现

js画图实现

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

js实现授权

js实现授权

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

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…