当前位置:首页 > JavaScript

js实现图片翻转

2026-01-30 14:51:25JavaScript

使用CSS transform实现图片翻转

通过CSS的transform属性结合JavaScript动态添加类名或样式,实现图片水平或垂直翻转效果。

水平翻转
添加CSS样式定义翻转效果:

.flip-horizontal {
  transform: scaleX(-1);
}

垂直翻转

.flip-vertical {
  transform: scaleY(-1);
}

JavaScript动态切换类名:

js实现图片翻转

const img = document.getElementById('myImage');
img.classList.toggle('flip-horizontal'); // 水平翻转切换

使用Canvas实现高级翻转

通过Canvas的drawImage方法配合变换矩阵实现更灵活的翻转控制。

水平翻转绘制

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

img.onload = function() {
  ctx.translate(canvas.width, 0);
  ctx.scale(-1, 1);
  ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
};
img.src = 'image.jpg';

垂直翻转绘制

js实现图片翻转

ctx.translate(0, canvas.height);
ctx.scale(1, -1);

使用WebGL实现3D翻转

通过Three.js等库实现3D空间内的图片翻转动画:

const texture = new THREE.TextureLoader().load('image.jpg');
const material = new THREE.MeshBasicMaterial({ map: texture });
const geometry = new THREE.PlaneGeometry(1, 1);
const mesh = new THREE.Mesh(geometry, material);

// X轴旋转180度实现垂直翻转
mesh.rotation.x = Math.PI; 
// Y轴旋转180度实现水平翻转
mesh.rotation.y = Math.PI;

实现动画过渡效果

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

.flip-animation {
  transition: transform 0.5s ease;
  transform-style: preserve-3d;
}

JavaScript控制动画:

let isFlipped = false;
function toggleFlip() {
  const img = document.getElementById('myImage');
  isFlipped = !isFlipped;
  img.style.transform = isFlipped ? 'rotateY(180deg)' : 'rotateY(0)';
}

注意事项

  1. 跨域问题:Canvas操作需注意图片的跨域限制,服务器需设置Access-Control-Allow-Origin
  2. 性能优化:对视频或大图使用CSS硬件加速(will-change: transform
  3. 兼容性:老版本浏览器需加前缀如-webkit-transform
  4. 点击区域:翻转后需注意元素交互区域的坐标变化

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

相关文章

vue实现图片打点

vue实现图片打点

实现图片打点的基本思路 图片打点功能通常指在图片上添加可交互的标记点,点击或悬停时显示相关信息。Vue实现该功能需要结合DOM操作和事件监听。 核心步骤 准备图片和容器 在Vue组件中设置一个相对定…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…