当前位置:首页 > JavaScript

实现图片旋转js

2026-04-03 23:14:04JavaScript

使用CSS transform属性旋转图片

通过CSS的transform属性可以轻松实现图片旋转效果。将rotate()函数与角度值结合,例如rotate(45deg)表示顺时针旋转45度。

const image = document.getElementById('myImage');
image.style.transform = 'rotate(45deg)'; // 旋转45度

动态旋转可通过修改角度值实现,例如结合用户输入或动画:

实现图片旋转js

let angle = 0;
setInterval(() => {
  angle += 1;
  image.style.transform = `rotate(${angle}deg)`;
}, 50);

使用Canvas API旋转图片

Canvas的rotate()方法需配合translate()调整旋转中心点,避免图片偏离。

实现图片旋转js

const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
const img = new Image();
img.src = 'image.jpg';

img.onload = function() {
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  ctx.save();
  ctx.translate(canvas.width / 2, canvas.height / 2); // 设置旋转中心
  ctx.rotate(Math.PI / 4); // 旋转45度(弧度制)
  ctx.drawImage(img, -img.width / 2, -img.width / 2); // 调整绘制位置
  ctx.restore();
};

使用requestAnimationFrame实现平滑动画

结合requestAnimationFrame实现高性能旋转动画:

function animate() {
  angle = (angle + 1) % 360;
  image.style.transform = `rotate(${angle}deg)`;
  requestAnimationFrame(animate);
}
animate();

响应交互事件旋转图片

通过监听鼠标或触摸事件动态控制旋转:

let isDragging = false;
image.addEventListener('mousedown', () => isDragging = true);
document.addEventListener('mouseup', () => isDragging = false);

document.addEventListener('mousemove', (e) => {
  if (!isDragging) return;
  const rect = image.getBoundingClientRect();
  const centerX = rect.left + rect.width / 2;
  const centerY = rect.top + rect.height / 2;
  const angle = Math.atan2(e.clientY - centerY, e.clientX - centerX) * 180 / Math.PI;
  image.style.transform = `rotate(${angle}deg)`;
});

注意事项

  • 性能优化:频繁操作DOM或Canvas时,使用requestAnimationFrame避免卡顿。
  • 单位选择:CSS使用角度(deg),Canvas使用弧度(rad)。
  • 兼容性:CSS变换和Canvas API均支持现代浏览器,无需额外库。

以上方法覆盖静态旋转、动态动画及交互式旋转场景,可根据需求选择实现方式。

标签: 图片js
分享给朋友:

相关文章

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与…

vue实现组件循环图片

vue实现组件循环图片

Vue 实现组件循环图片的方法 在 Vue 中实现组件循环图片通常可以通过 v-for 指令结合动态数据绑定完成。以下是几种常见的实现方式: 使用静态图片路径数组 假设有一组本地图片路径,可以通过数…

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

css制作图片

css制作图片

使用CSS创建图片效果 CSS可以通过多种方式实现图片的显示、处理和特效。以下是几种常见的方法: 使用background-image属性 在CSS中可以通过background-image属性将图…