当前位置:首页 > JavaScript

js实现图片旋转

2026-02-28 22:48:21JavaScript

使用CSS transform实现图片旋转

通过CSS的transform属性结合JavaScript动态修改旋转角度,实现图片旋转效果。以下是一个基础实现示例:

<img id="rotateImage" src="your-image.jpg" alt="Rotating Image">
<button onclick="rotateImage()">旋转图片</button>

<script>
  let currentRotation = 0;
  function rotateImage() {
    currentRotation += 90;
    document.getElementById('rotateImage').style.transform = `rotate(${currentRotation}deg)`;
  }
</script>

使用canvas实现精确旋转

对于需要更精确控制的旋转(如非90度倍数旋转),可以使用canvas API:

function rotateCanvasImage(imageElement, degrees) {
  const canvas = document.createElement('canvas');
  const ctx = canvas.getContext('2d');

  // 调整canvas尺寸以适应旋转后的图像
  const rad = degrees * Math.PI / 180;
  canvas.width = Math.abs(imageElement.width * Math.cos(rad)) + 
                 Math.abs(imageElement.height * Math.sin(rad));
  canvas.height = Math.abs(imageElement.height * Math.cos(rad)) + 
                  Math.abs(imageElement.width * Math.sin(rad));

  // 执行旋转
  ctx.translate(canvas.width/2, canvas.height/2);
  ctx.rotate(rad);
  ctx.drawImage(imageElement, -imageElement.width/2, -imageElement.height/2);

  return canvas.toDataURL();
}

实现平滑动画旋转

使用CSS动画实现连续平滑旋转效果:

@keyframes spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

.rotating {
  animation: spin 2s linear infinite;
}
// 添加/移除旋转类
document.getElementById('imageId').classList.toggle('rotating');

响应手势旋转(移动端)

通过触摸事件实现手势旋转:

let lastAngle = 0;
const image = document.getElementById('image');

image.addEventListener('touchmove', (e) => {
  if (e.touches.length === 2) {
    const touch1 = e.touches[0];
    const touch2 = e.touches[1];

    const currentAngle = Math.atan2(
      touch2.clientY - touch1.clientY,
      touch2.clientX - touch1.clientX
    ) * 180 / Math.PI;

    if (lastAngle !== 0) {
      const angleDiff = currentAngle - lastAngle;
      const currentRotation = parseInt(image.style.transform.replace(/[^0-9]/g, '') || '0');
      image.style.transform = `rotate(${currentRotation + angleDiff}deg)`;
    }

    lastAngle = currentAngle;
  }
});

image.addEventListener('touchend', () => {
  lastAngle = 0;
});

使用第三方库(如jQuery)

如果需要简化操作,可以使用jQuery实现:

$('#rotateBtn').click(function() {
  let rotation = ($('#myImage').data('rotation') || 0) + 90;
  $('#myImage').css({
    'transform': 'rotate(' + rotation + 'deg)',
    '-webkit-transform': 'rotate(' + rotation + 'deg)',
    '-ms-transform': 'rotate(' + rotation + 'deg)'
  }).data('rotation', rotation);
});

js实现图片旋转

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

相关文章

网页制作css图片切换

网页制作css图片切换

CSS图片切换的实现方法 使用CSS实现图片切换可以通过多种方式完成,以下是几种常见的方法: 纯CSS轮播图 通过CSS动画和关键帧实现自动轮播效果。定义一个容器,内部放置多个图片,利用anima…

vue2实现图片懒加载

vue2实现图片懒加载

实现图片懒加载的方法 在Vue2中实现图片懒加载可以通过以下方法完成,核心原理是监听图片是否进入可视区域,再动态加载图片资源。 使用IntersectionObserver API Interse…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('imag…

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 /…