当前位置:首页 > JavaScript

实现图片旋转js

2026-02-28 22:46:50JavaScript

实现图片旋转的 JavaScript 方法

使用 CSS transform 属性

通过修改元素的 transform 属性实现旋转效果。以下代码示例将图片旋转 90 度:

const image = document.getElementById('myImage');
image.style.transform = 'rotate(90deg)';

可以动态调整旋转角度:

实现图片旋转js

let angle = 0;
function rotateImage() {
  angle += 90;
  image.style.transform = `rotate(${angle}deg)`;
}

使用 Canvas API

通过 Canvas 的 rotate() 方法实现更复杂的旋转控制:

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

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/2); // 90度旋转
  ctx.drawImage(img, -img.width/2, -img.width/2);
  ctx.restore();
};
img.src = 'image.jpg';

使用第三方库

对于更高级的旋转需求,可以考虑使用库如 Fabric.js:

实现图片旋转js

const canvas = new fabric.Canvas('canvas');
fabric.Image.fromURL('image.jpg', function(img) {
  img.set({
    angle: 45,
    left: 100,
    top: 100
  });
  canvas.add(img);
});

动画旋转效果

结合 CSS transition 实现平滑旋转动画:

.image {
  transition: transform 0.5s ease;
}
const image = document.querySelector('.image');
image.style.transform = 'rotate(180deg)';

响应鼠标/手势旋转

实现拖拽旋转功能:

let isDragging = false;
let startAngle = 0;
let currentAngle = 0;

image.addEventListener('mousedown', (e) => {
  isDragging = true;
  startAngle = getAngle(e);
});

window.addEventListener('mousemove', (e) => {
  if (!isDragging) return;
  const newAngle = getAngle(e);
  currentAngle += newAngle - startAngle;
  image.style.transform = `rotate(${currentAngle}deg)`;
  startAngle = newAngle;
});

function getAngle(e) {
  const rect = image.getBoundingClientRect();
  return Math.atan2(e.clientY - rect.top, e.clientX - rect.left) * 180 / Math.PI;
}

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

相关文章

vue实现拖动图片验证

vue实现拖动图片验证

Vue 实现拖动图片验证功能 核心思路 拖动图片验证通常需要用户将图片拖动到指定区域或按正确顺序排列。实现时需要处理拖拽事件、验证逻辑和视觉反馈。 实现步骤 1. 基础组件结构 <templ…

js防抖和节流实现

js防抖和节流实现

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

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…

vue实现无缝图片

vue实现无缝图片

实现无缝图片轮播的方法 在Vue中实现无缝图片轮播,可以通过以下步骤完成。这种方法利用Vue的响应式特性和CSS动画,确保图片切换平滑且无缝。 使用vue-awesome-swiper库 安装vue…

js 实现全屏

js 实现全屏

使用 requestFullscreen 方法 通过调用元素的 requestFullscreen 方法可以实现全屏。该方法兼容现代浏览器,但不同浏览器可能需要前缀。 const element =…

js 实现图片轮播

js 实现图片轮播

基础实现方案 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS负责样式布局,JavaScript处理轮播逻辑。 <div class="…