images-viewer-js 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 ybchen292
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,342 @@
1
+ # ImageViewer 图片查看器
2
+
3
+ 一个功能丰富、响应式的图片查看器,支持缩放、旋转、导航等操作。
4
+
5
+ ## 特性
6
+
7
+ - 🖼️ **多图片支持** - 支持单张或多张图片查看
8
+ - 🔍 **缩放操作** - 鼠标滚轮、按钮、双击缩放
9
+ - 🔄 **旋转功能** - 左右旋转图片
10
+ - 📱 **触摸支持** - 移动端手势操作
11
+ - 🎨 **主题定制** - 可自定义颜色、样式
12
+ - ⌨️ **键盘快捷键** - 丰富的键盘操作支持
13
+ - 📱 **响应式设计** - 适配桌面和移动设备
14
+ - 🔄 **缩略图导航** - 快速切换图片
15
+ - 💾 **下载功能** - 支持图片下载
16
+ - 🖥️ **全屏模式** - 全屏查看图片
17
+
18
+ ## 安装和使用
19
+
20
+ ### 浏览器环境
21
+
22
+ ```html
23
+ <!-- 引入脚本 -->
24
+ <script src="image-viewer.js"></script>
25
+
26
+ <script>
27
+ // 使用全局变量 ImageViewer
28
+ const viewer = new ImageViewer({
29
+ images: ['image1.jpg', 'image2.jpg', 'image3.jpg'],
30
+ });
31
+ </script>
32
+ ```
33
+
34
+ ### CommonJS/Node.js
35
+
36
+ ```javascript
37
+ const ImageViewer = require('./image-viewer');
38
+
39
+ const viewer = new ImageViewer({
40
+ images: ['image1.jpg', 'image2.jpg', 'image3.jpg'],
41
+ });
42
+ ```
43
+
44
+ ### AMD
45
+
46
+ ```javascript
47
+ define(['image-viewer'], function (ImageViewer) {
48
+ const viewer = new ImageViewer({
49
+ images: ['image1.jpg', 'image2.jpg', 'image3.jpg'],
50
+ });
51
+ });
52
+ ```
53
+
54
+ ## 配置选项
55
+
56
+ ### 基本配置
57
+
58
+ ```javascript
59
+ const viewer = new ImageViewer({
60
+ // 图片数组(必需)
61
+ images: ['image1.jpg', 'image2.jpg'],
62
+
63
+ // 点击遮罩关闭
64
+ closeOnMaskClick: false,
65
+
66
+ // 循环浏览
67
+ loop: true,
68
+
69
+ // 按钮配置
70
+ buttons: {
71
+ zoomIn: true, // 放大
72
+ zoomOut: true, // 缩小
73
+ rotateLeft: true, // 左旋转
74
+ rotateRight: true, // 右旋转
75
+ reset: true, // 重置
76
+ download: true, // 下载
77
+ fullscreen: true, // 全屏
78
+ prev: true, // 上一张
79
+ next: true, // 下一张
80
+ close: true, // 关闭
81
+ topClose: true, // 右上角关闭
82
+ thumbnails: true, // 缩略图
83
+ info: true, // 信息面板
84
+ originalSize: true, // 原始尺寸
85
+ },
86
+
87
+ // 图片信息显示
88
+ imageInfo: {
89
+ visible: false, // 默认显示信息
90
+ showName: true, // 显示文件名
91
+ showDimensions: true, // 显示尺寸
92
+ },
93
+
94
+ // 主题配置
95
+ theme: {
96
+ // 背景颜色
97
+ viewerBgColor: 'rgba(0, 0, 0, 0.4)',
98
+
99
+ // 工具栏样式
100
+ toolbarBgColor: 'rgba(150, 150, 150, 0.7)',
101
+ toolbarBorderRadius: '30px',
102
+ toolbarPadding: '8px 12px',
103
+ toolbarBottom: '20px',
104
+
105
+ // 按钮样式
106
+ buttonBgColor: 'rgba(150, 150, 150, 0.7)',
107
+ buttonHoverBg: 'rgba(200, 200, 200, 0.4)',
108
+ buttonSize: '50px',
109
+ buttonFontSize: '20px',
110
+ buttonBorderRadius: '50%',
111
+
112
+ // 更多主题配置...
113
+ },
114
+ });
115
+ ```
116
+
117
+ ### 简单用法
118
+
119
+ ```javascript
120
+ // 单张图片
121
+ const viewer1 = new ImageViewer('single-image.jpg');
122
+
123
+ // 多张图片
124
+ const viewer2 = new ImageViewer({
125
+ images: ['img1.jpg', 'img2.jpg', 'img3.jpg'],
126
+ });
127
+
128
+ // 数组形式
129
+ const viewer3 = new ImageViewer(['img1.jpg', 'img2.jpg']);
130
+ ```
131
+
132
+ ## 方法
133
+
134
+ ### 图片导航
135
+
136
+ ```javascript
137
+ // 下一张图片
138
+ viewer.nextImage();
139
+
140
+ // 上一张图片
141
+ viewer.prevImage();
142
+
143
+ // 跳转到指定索引
144
+ viewer.currentIndex = 2;
145
+ viewer.loadCurrentImage();
146
+ ```
147
+
148
+ ### 变换操作
149
+
150
+ ```javascript
151
+ // 缩放
152
+ viewer.zoom(0.1); // 放大10%
153
+ viewer.zoom(-0.1); // 缩小10%
154
+
155
+ // 旋转
156
+ viewer.rotate(90); // 顺时针旋转90度
157
+ viewer.rotate(-90); // 逆时针旋转90度
158
+
159
+ // 重置变换
160
+ viewer.resetTransform();
161
+
162
+ // 显示原始尺寸
163
+ viewer.showOriginalSize();
164
+ ```
165
+
166
+ ### 视图控制
167
+
168
+ ```javascript
169
+ // 切换全屏
170
+ viewer.toggleFullscreen();
171
+
172
+ // 显示/隐藏图片信息
173
+ viewer.toggleImageInfo();
174
+
175
+ // 关闭查看器
176
+ viewer.close();
177
+ ```
178
+
179
+ ### 下载
180
+
181
+ ```javascript
182
+ // 下载当前图片
183
+ viewer.downloadImage();
184
+ ```
185
+
186
+ ## 键盘快捷键
187
+
188
+ | 快捷键 | 功能 |
189
+ | --------- | ----------------- |
190
+ | `ESC` | 关闭查看器 |
191
+ | `←` | 上一张图片 |
192
+ | `→` | 下一张图片 |
193
+ | `+` / `=` | 放大图片 |
194
+ | `-` | 缩小图片 |
195
+ | `0` | 重置变换 |
196
+ | `F` | 切换全屏 |
197
+ | `I` | 显示/隐藏信息面板 |
198
+
199
+ ## 鼠标/触摸操作
200
+
201
+ ### 鼠标操作
202
+
203
+ - **拖动**: 按住鼠标左键拖动图片
204
+ - **缩放**: 鼠标滚轮
205
+ - **双击**: 切换缩放状态
206
+ - **右键**: 无操作(避免上下文菜单)
207
+
208
+ ### 触摸操作
209
+
210
+ - **单指拖动**: 移动图片
211
+ - **双指捏合**: 缩放图片
212
+ - **双击**: 切换缩放状态
213
+
214
+ ## 主题定制
215
+
216
+ ### CSS 变量
217
+
218
+ 查看器使用 CSS 变量进行样式定制,可以通过主题配置修改:
219
+
220
+ ```css
221
+ :root {
222
+ --viewer-bg-color: rgba(0, 0, 0, 0.4);
223
+ --toolbar-bg-color: rgba(150, 150, 150, 0.7);
224
+ --button-bg-color: rgba(150, 150, 150, 0.7);
225
+ --button-hover-bg: rgba(200, 200, 200, 0.4);
226
+ --text-color: rgba(255, 255, 255, 0.9);
227
+ --active-color: rgba(100, 150, 255, 0.8);
228
+ --shadow-color: rgba(0, 0, 0, 0.2);
229
+ --transition-speed: 0.3s;
230
+ }
231
+ ```
232
+
233
+ ### 自定义主题示例
234
+
235
+ ```javascript
236
+ const viewer = new ImageViewer({
237
+ images: ['image1.jpg', 'image2.jpg'],
238
+ theme: {
239
+ viewerBgColor: 'rgba(0, 0, 0, 0.8)',
240
+ toolbarBgColor: 'rgba(0, 0, 0, 0.6)',
241
+ buttonBgColor: 'rgba(255, 255, 255, 0.2)',
242
+ buttonHoverBg: 'rgba(255, 255, 255, 0.3)',
243
+ textColor: 'rgba(255, 255, 255, 0.9)',
244
+ activeColor: 'rgba(66, 133, 244, 0.8)',
245
+ },
246
+ });
247
+ ```
248
+
249
+ ## 响应式设计
250
+
251
+ 查看器会自动适配不同屏幕尺寸:
252
+
253
+ - **桌面端**: 完整的工具栏和功能
254
+ - **平板端**: 适当缩小的按钮和间距
255
+ - **手机端**: 紧凑的布局,优化触摸体验
256
+
257
+ ## 浏览器支持
258
+
259
+ - Chrome 60+
260
+ - Firefox 55+
261
+ - Safari 12+
262
+ - Edge 79+
263
+
264
+ ## 注意事项
265
+
266
+ 1. **跨域图片**: 对于跨域图片,下载功能可能受限
267
+ 2. **大图片**: 建议对超大图片进行适当压缩
268
+ 3. **性能**: 大量图片时建议使用缩略图预加载
269
+
270
+ ## 示例
271
+
272
+ ### 基本示例
273
+
274
+ ```html
275
+ <!DOCTYPE html>
276
+ <html>
277
+ <head>
278
+ <title>ImageViewer 示例</title>
279
+ </head>
280
+ <body>
281
+ <button onclick="openViewer()">查看图片</button>
282
+
283
+ <script src="image-viewer.js"></script>
284
+ <script>
285
+ function openViewer() {
286
+ const viewer = new ImageViewer({
287
+ images: [
288
+ 'https://example.com/image1.jpg',
289
+ 'https://example.com/image2.jpg',
290
+ 'https://example.com/image3.jpg',
291
+ ],
292
+ closeOnMaskClick: true,
293
+ imageInfo: {
294
+ visible: true,
295
+ },
296
+ });
297
+ }
298
+ </script>
299
+ </body>
300
+ </html>
301
+ ```
302
+
303
+ ### 高级定制示例
304
+
305
+ ```javascript
306
+ const advancedViewer = new ImageViewer({
307
+ images: imageArray,
308
+ buttons: {
309
+ zoomIn: true,
310
+ zoomOut: true,
311
+ rotateLeft: true,
312
+ rotateRight: true,
313
+ reset: true,
314
+ download: false, // 禁用下载
315
+ fullscreen: true,
316
+ prev: true,
317
+ next: true,
318
+ close: true,
319
+ topClose: true,
320
+ thumbnails: true,
321
+ info: true,
322
+ originalSize: true,
323
+ },
324
+ imageInfo: {
325
+ visible: false,
326
+ showName: true,
327
+ showDimensions: true,
328
+ },
329
+ theme: {
330
+ viewerBgColor: 'rgba(0, 0, 0, 0.6)',
331
+ toolbarBgColor: 'rgba(30, 30, 30, 0.8)',
332
+ buttonBgColor: 'rgba(255, 255, 255, 0.1)',
333
+ buttonHoverBg: 'rgba(255, 255, 255, 0.2)',
334
+ textColor: 'rgba(255, 255, 255, 0.9)',
335
+ activeColor: 'rgba(66, 133, 244, 0.8)',
336
+ },
337
+ });
338
+ ```
339
+
340
+ ## 许可证
341
+
342
+ MIT License