teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

補足依頼欄に合わせて追記

2021/07/17 06:34

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア37470

answer CHANGED
@@ -18,4 +18,74 @@
18
18
  [https://www.jqueryscript.net/demo/smooth-pan-zoom-alotta/](https://www.jqueryscript.net/demo/smooth-pan-zoom-alotta/)
19
19
  [https://www.npmjs.com/package/react-image-zoom-pan](https://www.npmjs.com/package/react-image-zoom-pan)
20
20
  [https://www.cssscript.com/demo/vanilla-js-library-for-image-zoom-and-pan/](https://www.cssscript.com/demo/vanilla-js-library-for-image-zoom-and-pan/)
21
- [https://www.cssscript.com/demo/image-pan-lc-mouse-drag/](https://www.cssscript.com/demo/image-pan-lc-mouse-drag/)
21
+ [https://www.cssscript.com/demo/image-pan-lc-mouse-drag/](https://www.cssscript.com/demo/image-pan-lc-mouse-drag/)
22
+
23
+ ---
24
+
25
+ # 補足依頼欄に合わせて追記
26
+
27
+ サンプル置いておきます。
28
+
29
+ [https://jsfiddle.net/Lhankor_Mhy/jw91yx3p/](https://jsfiddle.net/Lhankor_Mhy/jw91yx3p/)
30
+
31
+
32
+ ```js
33
+ $.fn.ImageExpansion = function (options) {
34
+ var target = $(this);
35
+ var settings = $.extend({
36
+ 'pan': 2,
37
+ 'drag': 100
38
+ }, options);
39
+ /*
40
+ * 初期設定
41
+ */
42
+ var setImage = function (obj) {
43
+
44
+ //画像のSRC取得
45
+ var src = $("img", target).attr('src');
46
+ //右の枠の大きさ ドラッグ枠の数値 * 倍率
47
+ var hw = settings.drag * settings.pan;
48
+ $(".pan_image", target).css({ 'width': hw, 'height': hw });
49
+ //右の枠へ背景画像を設定
50
+ $(".pan_image", target).css({ 'background-image': 'url(' + src + ')' });
51
+ //左の画像の幅を倍率で割り、max-widthに指定する幅を得る
52
+ var img_w = $("img", target).width();
53
+ img_w = Math.floor(img_w / settings.pan);
54
+ var img_h = $("img", target).height();
55
+ img_h = Math.floor(img_h / settings.pan);
56
+ //左の枠の幅を上で計算した幅と高さに設定
57
+ $(target).css({ 'width': img_w, 'height': img_h });
58
+ //左の画像を上で計算した幅と高さに設定
59
+ $("img", target).css({ 'max-width': img_w, 'height': img_h });
60
+ //ドラッグ枠の大きさを設定
61
+ $(".pan_mouse", target).css({ 'width': settings.drag, 'height': settings.drag });
62
+ };
63
+
64
+ /*
65
+ * ドラッグ
66
+ */
67
+ $(".pan_mouse", target).draggable({
68
+ containment: "parent"
69
+ });
70
+
71
+ /*
72
+ * ドラッグした距離で背景画像の位置を変更
73
+ */
74
+ $(".pan_mouse", target).on('mousemove', function (e) {
75
+ //image_expansion ウインド上の位置
76
+ var div = $(target).offset();
77
+ var ex_left = Math.floor(div.left);
78
+ var ex_top = Math.floor(div.top);
79
+ //pan_mouse ウインド上の位置
80
+ var div = $('.pan_mouse', target).offset();
81
+ var pan_left = Math.floor(div.left);
82
+ var pan_top = Math.floor(div.top);
83
+ //image_expansion内におけるpan_mouseの上下位置差分
84
+ var left = (pan_left - ex_left) * settings.pan;
85
+ var top = (pan_top - ex_top) * settings.pan;
86
+
87
+ $(".pan_image", target).css({ 'background-position': '-' + left + 'px -' + top + 'px' });
88
+ });
89
+ return setImage($(this));
90
+ };
91
+ ```

1

ついでに、適当にググってみた結果を貼っておきます。

2021/07/17 06:34

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア37470

answer CHANGED
@@ -1,4 +1,21 @@
1
1
  いっそ、Leaflet.js とかはどうですか?
2
2
 
3
3
  [Leaflet.jsを使って任意の画像の拡縮を行いたい - Qiita](https://qiita.com/yuskesuzki@github/items/5fd2fcb52729061da33c)
4
- [leaflet js 画像拡大 - Google 検索](https://www.google.com/search?q=leaflet+js+画像拡大)
4
+ [leaflet js 画像拡大 - Google 検索](https://www.google.com/search?q=leaflet+js+画像拡大)
5
+
6
+ ---
7
+
8
+ ついでに、適当にググってみた結果を貼っておきます。
9
+
10
+ [https://www.jqueryscript.net/demo/Simple-jQuery-Image-Crop-Zoom-Plugin-ZoomCrop/](https://www.jqueryscript.net/demo/Simple-jQuery-Image-Crop-Zoom-Plugin-ZoomCrop/)
11
+ [https://www.jqueryscript.net/demo/jQuery-Plugin-To-Pan-An-Image-In-A-Container-simplePan/](https://www.jqueryscript.net/demo/jQuery-Plugin-To-Pan-An-Image-In-A-Container-simplePan/)
12
+ [https://www.jqueryscript.net/demo/Customizable-jQuery-Image-Zoom-Pan-Plugin-panzoom/](https://www.jqueryscript.net/demo/Customizable-jQuery-Image-Zoom-Pan-Plugin-panzoom/)
13
+ [https://www.jqueryscript.net/demo/Simple-jQuery-Image-Zoom-With-Mouse-Wheel-or-Touch-Scroll/](https://www.jqueryscript.net/demo/Simple-jQuery-Image-Zoom-With-Mouse-Wheel-or-Touch-Scroll/)
14
+ [https://www.jqueryscript.net/demo/SVG-Zooming-Panning-Plugin-jQuery-SvgZoom/](https://www.jqueryscript.net/demo/SVG-Zooming-Panning-Plugin-jQuery-SvgZoom/)
15
+ [https://www.jqueryscript.net/demo/Touch-enabled-Image-Zooming-Panning-Plugin-jQuery-imgViewer2/](https://www.jqueryscript.net/demo/Touch-enabled-Image-Zooming-Panning-Plugin-jQuery-imgViewer2/)
16
+ [https://www.jqueryscript.net/demo/Simple-Image-Viewer-jQuery/](https://www.jqueryscript.net/demo/Simple-Image-Viewer-jQuery/)
17
+ [https://www.jqueryscript.net/demo/zoom-wheel-pan-drag-image/](https://www.jqueryscript.net/demo/zoom-wheel-pan-drag-image/)
18
+ [https://www.jqueryscript.net/demo/smooth-pan-zoom-alotta/](https://www.jqueryscript.net/demo/smooth-pan-zoom-alotta/)
19
+ [https://www.npmjs.com/package/react-image-zoom-pan](https://www.npmjs.com/package/react-image-zoom-pan)
20
+ [https://www.cssscript.com/demo/vanilla-js-library-for-image-zoom-and-pan/](https://www.cssscript.com/demo/vanilla-js-library-for-image-zoom-and-pan/)
21
+ [https://www.cssscript.com/demo/image-pan-lc-mouse-drag/](https://www.cssscript.com/demo/image-pan-lc-mouse-drag/)