当前位置:首页 > JavaScript

实现图片旋转js

2026-01-16 12:53:14JavaScript

使用CSS transform属性旋转图片

通过CSS的transform属性可以轻松实现图片旋转。以下是一个简单的示例代码:

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

这种方法适用于静态旋转,角度值可以动态调整。

实现图片旋转js

使用Canvas旋转图片

Canvas提供了更灵活的旋转控制,适合需要精确操作的场景:

实现图片旋转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 / 180) * 30); // 旋转30度(弧度制)
  ctx.drawImage(img, -img.width / 2, -img.height / 2);
  ctx.restore();
};

使用requestAnimationFrame实现动画旋转

通过requestAnimationFrame可以实现平滑的动画旋转效果:

let angle = 0;
function rotateImage() {
  const image = document.getElementById('myImage');
  angle = (angle + 1) % 360;
  image.style.transform = `rotate(${angle}deg)`;
  requestAnimationFrame(rotateImage);
}
rotateImage();

使用第三方库(如Three.js)

对于复杂的3D旋转或交互需求,可以使用Three.js等库:

import * as THREE from 'three';
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

const geometry = new THREE.BoxGeometry();
const texture = new THREE.TextureLoader().load('image.jpg');
const material = new THREE.MeshBasicMaterial({ map: texture });
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);
camera.position.z = 5;

function animate() {
  requestAnimationFrame(animate);
  cube.rotation.x += 0.01;
  cube.rotation.y += 0.01;
  renderer.render(scene, camera);
}
animate();

注意事项

  • 性能优化:频繁的DOM操作可能影响性能,建议使用CSS硬件加速(如will-change: transform)。
  • 坐标系:Canvas旋转默认以画布左上角为原点,需通过translate调整中心点。
  • 兼容性:CSS Transform和Canvas均支持现代浏览器,但旧版本可能需要前缀(如-webkit-transform)。

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

相关文章

vue图片实现多选

vue图片实现多选

Vue图片多选实现方法 基础实现方案 使用v-model绑定数组配合input[type="checkbox"]实现多选功能。创建图片列表数据时,每个图片对象应包含唯一标识符: data() {…

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…

vue图片实现多选

vue图片实现多选

Vue 图片多选实现方法 在 Vue 中实现图片多选功能可以通过以下几种方式完成,具体取决于项目需求和复杂度。 使用 v-model 和数组存储选中状态 通过 v-model 绑定一个数组来记录选中…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 const…