以下是一个使用原生JavaScript实现的简单图片预览、旋转、放大、缩小和拖拽功能的示例代码。
HTML部分:
<div id="image-container">
<img id="preview-image" src="path_to_your_image.jpg" alt="Image to preview" />
</div>
CSS部分:
#image-container {
width: 300px;
height: 300px;
overflow: hidden;
position: relative;
cursor: move;
}
#preview-image {
width: 100%;
height: auto;
transform-origin: center center; /* necessary for rotating the image */
transition: transform 0.3s ease; /* for smooth transformations */
position: absolute; /* necessary for drag and drop */
}
JavaScript部分:
const container = document.getElementById('image-container');
const img = document.getElementById('preview-image');
let isDragging = false;
let startX, startY, x, y;
// 拖拽功能
container.addEventListener('mousedown', function(e) {
isDragging = true;
startX = e.clientX - parseInt(img.style.left);
startY = e.clientY - parseInt(img.style.top);
});
document.addEventListener('mousemove', function(e) {
if (isDragging) {
x = e.clientX - startX;
y = e.clientY - startY;
img.style.left = x + 'px';
img.style.top = y + 'px';
}
});
document.addEventListener('mouseup', function() {
isDragging = false;
});
// 缩放功能
const scale = (ratio) => {
img.style.width = (img.width * ratio / 100) + 'px';
img.style.height = (img.height * ratio / 100) + 'px';
};
// 放大
const zoomIn = () => scale(120);
// 缩小
const zoomOut = () => scale(80);
// 旋转功能
const rotate = (angle) => {
img.style.transform = `rotate(${angle}deg)`;
};
// 顺时针旋转
const rotateClockwise = () => rotate(img.getAttribute('data-angle') + 90);
// 逆时针旋转
const rotateCounterClockwise = () => rotate(img.getAttribute('data-angle') - 90);
// 绑定按钮事件
document.getElementById('zoom-in').addEventListener('click', zoomIn);
document.getElementById('zoom-out').addEventListener('click', zoomOut);
document.getElementById('rotate-cw').addEventListener('click', rotateClockwise);
document.getElementById('rotate-ccw').addEventListener('click', rotateCounterClockwise);
确保在HTML中添加对应的按钮以绑定这些事件:
<button id="zoom-in">放大</button>
<button id="zoom-out">缩小</button>
<button id="rotate-cw">顺时针旋转</button>
<button id="rotate-ccw">逆时针旋转</button>
这段代码提供了图片的基本预览功能,并添加了拖拽、缩放、旋转的按钮,以及相应的JavaScript函数来处理这些操作。记得将图片的src
属性替换为你要预览的图片路径。