ImagesViewer 图片查看器
一个功能丰富、响应式的图片查看器,支持缩放、旋转、导航等操作。使用原生javasciprt写。不局限于框架使用。
预览图


特性
- 🖼️ 多图片支持 - 支持单张或多张图片查看
- 🔍 缩放操作 - 鼠标滚轮、按钮、双击缩放
- 🔄 旋转功能 - 左右旋转图片
- 📱 触摸支持 - 移动端手势操作
- 🎨 主题定制 - 可自定义颜色、样式
- ⌨️ 键盘快捷键 - 丰富的键盘操作支持
- 📱 响应式设计 - 适配桌面和移动设备
- 🔄 缩略图导航 - 快速切换图片
- 💾 下载功能 - 支持图片下载
- 🖥️ 全屏模式 - 全屏查看图片
安装和使用
简单用法
// 单张图片
const viewer1 = new ImagesViewer('single-image.jpg');
// 多张图片
const viewer2 = new ImagesViewer({
images: ['img1.jpg', 'img2.jpg', 'img3.jpg'],
});
// 数组形式
const viewer3 = new ImagesViewer(['img1.jpg', 'img2.jpg']);npm
<!-- 引入包 -->
npm install images-viewer-js
<!-- vue 环境 -->
<script>
import ImagesViewer from 'images-viewer-js';
// 使用
const viewer = new ImagesViewer({
images: ['image1.jpg', 'image2.jpg', 'image3.jpg'],
});
</script>浏览器环境
<!-- 引入脚本 -->
<script src="image-viewer.js"></script>
<script>
// 使用全局变量 ImagesViewer
const viewer = new ImagesViewer({
images: ['image1.jpg', 'image2.jpg', 'image3.jpg'],
});
</script>CommonJS/Node.js
const ImagesViewer = require('./image-viewer');
const viewer = new ImagesViewer({
images: ['image1.jpg', 'image2.jpg', 'image3.jpg'],
});AMD
define(['image-viewer'], function (ImagesViewer) {
const viewer = new ImagesViewer({
images: ['image1.jpg', 'image2.jpg', 'image3.jpg'],
});
});配置选项
基本配置
const viewer = new ImagesViewer({
// 图片数组(必需)
images: ['image1.jpg', 'image2.jpg'],
// 点击遮罩关闭
closeOnMaskClick: false,
// 循环浏览
loop: true,
// 按钮配置
buttons: {
zoomIn: true, // 放大
zoomOut: true, // 缩小
rotateLeft: true, // 左旋转
rotateRight: true, // 右旋转
reset: true, // 重置
download: true, // 下载
fullscreen: true, // 全屏
prev: true, // 上一张
next: true, // 下一张
close: true, // 关闭
topClose: true, // 右上角关闭
thumbnails: true, // 缩略图
info: true, // 信息面板
originalSize: true, // 原始尺寸
},
// 图片信息显示
imageInfo: {
visible: false, // 默认显示信息
showName: true, // 显示文件名
showDimensions: true, // 显示尺寸
},
// 主题配置
theme: {
// 背景颜色
viewerBgColor: 'rgba(0, 0, 0, 0.4)',
// 工具栏样式
toolbarBgColor: 'rgba(150, 150, 150, 0.7)',
toolbarBorderRadius: '30px',
toolbarPadding: '8px 12px',
toolbarBottom: '20px',
// 按钮样式
buttonBgColor: 'rgba(150, 150, 150, 0.7)',
buttonHoverBg: 'rgba(200, 200, 200, 0.4)',
buttonSize: '50px',
buttonFontSize: '20px',
buttonBorderRadius: '50%',
// 更多主题配置...
},
});方法
图片导航
// 下一张图片
viewer.nextImage();
// 上一张图片
viewer.prevImage();
// 跳转到指定索引
viewer.currentIndex = 2;
viewer.loadCurrentImage();变换操作
// 缩放
viewer.zoom(0.1); // 放大10%
viewer.zoom(-0.1); // 缩小10%
// 旋转
viewer.rotate(90); // 顺时针旋转90度
viewer.rotate(-90); // 逆时针旋转90度
// 重置变换
viewer.resetTransform();
// 显示原始尺寸
viewer.showOriginalSize();视图控制
// 切换全屏
viewer.toggleFullscreen();
// 显示/隐藏图片信息
viewer.toggleImageInfo();
// 关闭查看器
viewer.close();下载
// 下载当前图片
viewer.downloadImage();键盘快捷键
快捷键 | 功能 |
| 关闭查看器 |
| 上一张图片 |
| 下一张图片 |
| 放大图片 |
| 缩小图片 |
| 重置变换 |
| 切换全屏 |
| 显示/隐藏信息面板 |
鼠标/触摸操作
鼠标操作
- 拖动: 按住鼠标左键拖动图片
- 缩放: 鼠标滚轮
- 双击: 切换缩放状态
- 右键: 无操作(避免上下文菜单)
触摸操作
- 单指拖动: 移动图片
- 双指捏合: 缩放图片
- 双击: 切换缩放状态
主题定制
CSS 变量
查看器使用 CSS 变量进行样式定制,可以通过主题配置修改:
:root {
--viewer-bg-color: rgba(0, 0, 0, 0.4);
--toolbar-bg-color: rgba(150, 150, 150, 0.7);
--button-bg-color: rgba(150, 150, 150, 0.7);
--button-hover-bg: rgba(200, 200, 200, 0.4);
--text-color: rgba(255, 255, 255, 0.9);
--active-color: rgba(100, 150, 255, 0.8);
--shadow-color: rgba(0, 0, 0, 0.2);
--transition-speed: 0.3s;
}自定义主题示例
const viewer = new ImagesViewer({
images: ['image1.jpg', 'image2.jpg'],
theme: {
viewerBgColor: 'rgba(0, 0, 0, 0.8)',
toolbarBgColor: 'rgba(0, 0, 0, 0.6)',
buttonBgColor: 'rgba(255, 255, 255, 0.2)',
buttonHoverBg: 'rgba(255, 255, 255, 0.3)',
textColor: 'rgba(255, 255, 255, 0.9)',
activeColor: 'rgba(66, 133, 244, 0.8)',
},
});响应式设计
查看器会自动适配不同屏幕尺寸:
- 桌面端: 完整的工具栏和功能
- 平板端: 适当缩小的按钮和间距
- 手机端: 紧凑的布局,优化触摸体验
浏览器支持
- Chrome 60+
- Firefox 55+
- Safari 12+
- Edge 79+
注意事项
- 跨域图片: 对于跨域图片,下载功能可能受限
- 大图片: 建议对超大图片进行适当压缩
- 性能: 大量图片时建议使用缩略图预加载
示例
基本示例
<!DOCTYPE html>
<html>
<head>
<title>ImagesViewer 示例</title>
</head>
<body>
<button onclick="openViewer()">查看图片</button>
<script src="image-viewer.js"></script>
<script>
function openViewer() {
const viewer = new ImagesViewer({
images: [
'https://example.com/image1.jpg',
'https://example.com/image2.jpg',
'https://example.com/image3.jpg',
],
closeOnMaskClick: true,
imageInfo: {
visible: true,
},
});
}
</script>
</body>
</html>高级定制示例
const advancedViewer = new ImagesViewer({
images: imageArray,
buttons: {
zoomIn: true,
zoomOut: true,
rotateLeft: true,
rotateRight: true,
reset: true,
download: false, // 禁用下载
fullscreen: true,
prev: true,
next: true,
close: true,
topClose: true,
thumbnails: true,
info: true,
originalSize: true,
},
imageInfo: {
visible: false,
showName: true,
showDimensions: true,
},
theme: {
viewerBgColor: 'rgba(0, 0, 0, 0.6)',
toolbarBgColor: 'rgba(30, 30, 30, 0.8)',
buttonBgColor: 'rgba(255, 255, 255, 0.1)',
buttonHoverBg: 'rgba(255, 255, 255, 0.2)',
textColor: 'rgba(255, 255, 255, 0.9)',
activeColor: 'rgba(66, 133, 244, 0.8)',
},
});许可证
MIT License
















