はじめての 画像 Zoom and pan jQuery プラグイン 入門

画像の拡大・縮小(zoom:zooming ズーミング)と移動(pan:panning パンニング)を実装するZoom and pan jQuery プラグイン「e-smart-zoom-jquery.js」を紹介します。
jQueryプラグイン「e-smart-zoom-jquery.js」は、指定した画像の拡大や縮小(zoom - zooming)、および 拡大した画像を移動するカメラのようなパン操作(pan - panning)を行うことができます。
このページの作成は、つぎのサイトを引用・参照しました。
画像の拡大・縮小と移動(パン)「pan and zoom 」


1 インストール

プラグイン「e-smart-zoom-jquery.js」およびjQueryをつぎのサイトからsmartJQueryZoom-master.zipをダウンロードします。 GitHub smartJQueryZoom(「緑色Code」ボタンクリック→「Download Zip」クリック)。
smartJQueryZoom-master.zipを解凍後、srcフォルダ全体をサーバーへアップロードします。
srcフォルダの内容はつぎのとおりです。

・インクルードHTML
<!-- jQuery -->
<script type="text/javascript" src="./src/jquery-1.11.0.min.js"></script>
<!-- Zoom and pan jQuery plugin  -->
<script src="./src/e-smart-zoom-jquery.min.js"></script>

2 表示画像HTML

DIV領域(画像表示領域)の大きさは、横幅は画面いっぱいに、縦幅は「IMGタグ定義時の画像の高さ」になります。 例えば、960X720(px)の画像をimgタグでwidth=600と指定した場合、縦幅(h:height)は、次のように計算します。
960:720=600:h → 縦幅h =720X600÷960=450px 。
画像表示領域のイメージは、、クイックデモ 参照。

<div id="imgContainer">
  <img id="imageFullScreen" src="./img/cherry-blossom-1260641_960_720.jpg" width="600"/>
</div>

3 jQuery プラグイン「e-smart-zoom-jquery.js」の起動

jQuery プラグインを起動し、画像の拡大・縮小(zoom)と移動(pan)を実現します。 プラグイン起動時は、上「表示画像HTML」のimgタグのid名を指定します。


 3.1 基本機能+起動オプション省略(javascript)

    基本機能+起動オプション省略のイメージは、クイックデモ 参照。

 $(document).ready(function() {
    $("#imageFullScreen").smartZoom(); // start plugin behaviour optionなし
  });


 3.2 基本機能+起動オプションあり(javascript)

    基本機能+起動オプションありのイメージは、 クイックデモ 参照。

$(document).ready(function() {
  $("#imageFullScreen").smartZoom({'containerBackground':'skyblue'}); // start plugin behaviour  optionあり
  });


 3.3 応用機能+起動オプションあり(javascript)

    応用機能のイメージは、クイックデモ 参照。

$(document).ready(function() {
 // プラグイン起動、全起動オプション
 $("#imageFullScreen").smartZoom(
        options = {
           'top' : '0', // zoom target container top position in pixel
           'left' : '0', // zoom target container left position in pixel
           'width' : '100%', // zoom target container width in pixel or in percent
           'height' : '100%', // zoom target container height in pixel or in percent 
           'easing' : 'smartZoomEasing', // jquery easing function used when the browser doesn't support css transitions
           'maxScale' : 5, // the max scale that will be applied on the zoom target
           'dblClickMaxScale' : 1.8, // the max scale that will be applied on the zoom target on double click 5段階ズーム
           'mouseEnabled' : true, // enable plugin mouse interaction 
           'scrollEnabled' : true, // enable plugin mouse wheel behviour
           'dblClickEnabled' : true, // enable plugin mouse doubleClick behviour
           'mouseMoveEnabled' : true, // enable plugin target drag behviour
           'moveCursorEnabled' : true, // show moveCursor for drag
           'touchEnabled' : true, // enable plugin touch interaction 
           'dblTapEnabled' : true, // enable plugin double tap behaviour 
           'pinchEnabled' : true, // enable zoom when user pinch on target
           'touchMoveEnabled' : true, // enable target move via touch
           'containerBackground' : '#00bfff', // zoom target container background color (if containerClass is not set) 背景色
           'containerClass' : ''// class to apply to zoom target container if you whant to change background or borders (don't change size or position via css)
          } 
   );  

  // クリック 画像を移動(パン)制御
  $('#topPositionMap,#leftPositionMap,#rightPositionMap,#bottomPositionMap').bind("click", moveButtonClickHandler); 
  // クリック 拡大と縮小(ズーム)制御
  $('#zoomInButton,#zoomOutButton').bind("click", zoomButtonClickHandler); 

  // 拡大と縮小(zooming)ボタン制御 → クイックデモ参照
  function zoomButtonClickHandler(e){ 
    var scaleToAdd = 0.8;
    if(e.target.id == 'zoomOutButton')
      scaleToAdd = -scaleToAdd;
    $('#imageFullScreen').smartZoom('zoom', scaleToAdd);
  }
  // 画像を移動(panning)ボタン制御 → クイックデモ参照
  function moveButtonClickHandler(e){  
    var pixelsToMoveOnX = 0;
    var pixelsToMoveOnY = 0;
    switch(e.target.id){
      case "leftPositionMap":
        pixelsToMoveOnX = 50;
        break;
      case "rightPositionMap":
        pixelsToMoveOnX = -50;
        break;
      case "topPositionMap":
        pixelsToMoveOnY = 50;
        break;
      case "bottomPositionMap":
        pixelsToMoveOnY = -50;	
        break;
    }
    $('#imageFullScreen').smartZoom('pan', pixelsToMoveOnX, pixelsToMoveOnY);
  }
});

4 これまでのまとめ

これまでのまとめとして、機能別に3つのサンプルHTMLをつぎのとおり作成しました。
サンプルの使用原本画像の大きさは、960x720pxです。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>サンプル1 Zoom and pan 基本機能+起動オプション省略</title>

</head>
<body>
<h1 style="text-align:center">サンプル1 Zoom and pan 基本機能+起動オプション省略</h1>
<div id="imgContainer">
  <img id="imageFullScreen" src="./img/cherry-blossom-1260641_960_720.jpg" width="800"/>
</div>

<!-- jQuery -->
<script type="text/javascript" src="./src/jquery-1.11.0.min.js"></script>
<!-- Zoom and pan jQuery plugin  -->
<script src="./src/e-smart-zoom-jquery.min.js"></script>

<!-- プラグイン「e-smart-zoom-jquery.js」の起動 -->
<script>
 $(document).ready(function() {
    $("#imageFullScreen").smartZoom(); // start plugin behaviour optionなし
  });
</script>
<br>
<br>
引用・参照:<a href="https://webkaru.net/jquery-plugin/pan-and-zoom/" target=~_blank">jQueryプラグイン「pan and zoom」</a>
<hr>
<center>
 <a href="http://urbanqee.com" target="_top">
 <img src="http://urbanqee.com/cgi-ssi/counter/wwwcount.cgi?hide+m3ico2_on.gif" border=0 title="HOMEへ">
 </a><br>(c)urbanqee.com 2022. 6.22
</center>

</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>サンプル2 Zoom and pan 基本機能+起動オプションあり</title>

</head>
<body>
<h1 style="text-align:center">サンプル2 Zoom and pan 基本機能+起動オプションあり</h1>
<div id="imgContainer">
  <img id="imageFullScreen" src="./img/cherry-blossom-1260641_960_720.jpg" width=""/>
</div>

<!-- jQuery -->
<script type="text/javascript" src="./src/jquery-1.11.0.min.js"></script>
<!-- Zoom and pan jQuery plugin  -->
<script src="./src/e-smart-zoom-jquery.min.js"></script>

<!-- プラグイン「e-smart-zoom-jquery.js」の起動 -->
<script>
$(document).ready(function() {
  $("#imageFullScreen").smartZoom({'containerBackground':'skyblue'}); // start plugin behaviour  optionあり
  });
</script>
<br><br>
引用・参照:<a href="https://webkaru.net/jquery-plugin/pan-and-zoom/" target=~_blank">jQueryプラグイン「pan and zoom」</a>
<hr>
<center>
 <a href="http://urbanqee.com" target="_top">
 <img src="http://urbanqee.com/cgi-ssi/counter/wwwcount.cgi?hide+m3ico2_on.gif" border=0 title="HOMEへ">
 </a><br>(c)urbanqee.com 2022. 6.22
</center>

</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>サンプル3 Zoom and pan 応用機能+起動オプションあり</title>

<style>
.box{
  display: inline-block;
  font-size: 16px;
}

.boxContainer{
  font-size: 0;
}
</style>

</head>
<body>
<div id="imgContainer">
  <img id="imageFullScreen" src="./img/cherry-blossom-1260641_960_720.jpg" width="600"/>
</div>

<!-- jQuery -->
<script type="text/javascript" src="./src/jquery-1.11.0.min.js"></script>
<!-- Zoom and pan jQuery plugin  -->
<script src="./src/e-smart-zoom-jquery.min.js"></script>
・<b>画像制御パネル</b>
<div id="positionButtonDiv" class="boxContainer">
<div class="box" style="border:0px solid #dcdcdc;text-align: center;vertical-align: top;">
  <p><small><b>▼拡大と縮小 <br>(5段階zoom)</b></small><br><br>
    <span>
      <img id="zoomInButton" class="zoomButton" src="./img/zoomIn.png" title="zoom in" alt="zoom in" />
      <img id="zoomOutButton" class="zoomButton" src="./img/ZoomOut.png" title="zoom out" alt="zoom out" />
    </span>
<br>
  </p>
</div>
<div class="box" style="border:0px solid #dcdcdc;text-align: center;vertical-align: top;margin-left:10px">
  <p><small><b>▼画像を移動(pan)</b></small><br><br>
    <span class="positionButtonSpan">
      <map name="positionMap" class="positionMapClass">
      <area id="topPositionMap" shape="rect" coords="20,0,40,20" title="move up" alt="move up"/>
      <area id="leftPositionMap" shape="rect" coords="0,20,20,40" title="move left" alt="move left"/>
      <area id="rightPositionMap" shape="rect" coords="40,20,60,40" title="move right" alt="move right"/>
      <area id="bottomPositionMap" shape="rect" coords="20,40,40,60" title="move bottom" alt="move bottom"/>
      </map>
      <img src="./img/position.png" usemap="#positionMap" />
    </span>
  </p>
 </div>
<div  class="box" >
<h1 style="text-align:center">サンプル3 Zoom and pan 応用機能+起動オプションあり</h1>
</div>
</div>

<!-- プラグイン「e-smart-zoom-jquery.js」の起動 -->
<script>
$(document).ready(function() {
 // プラグイン起動、全起動オプション
 $("#imageFullScreen").smartZoom(
        options = {'top' : '0', // zoom target container top position in pixel
           'left' : '0', // zoom target container left position in pixel
           'width' : '100%', // zoom target container width in pixel or in percent
           'height' : '100%', // zoom target container height in pixel or in percent 
           'easing' : 'smartZoomEasing', // jquery easing function used when the browser doesn't support css transitions
           'maxScale' : 5, // the max scale that will be applied on the zoom target
           'dblClickMaxScale' : 1.8, // the max scale that will be applied on the zoom target on double click 5段階ズーム
           'mouseEnabled' : true, // enable plugin mouse interaction 
           'scrollEnabled' : true, // enable plugin mouse wheel behviour
           'dblClickEnabled' : true, // enable plugin mouse doubleClick behviour
           'mouseMoveEnabled' : true, // enable plugin target drag behviour
           'moveCursorEnabled' : true, // show moveCursor for drag
           'touchEnabled' : true, // enable plugin touch interaction 
           'dblTapEnabled' : true, // enable plugin double tap behaviour 
           'pinchEnabled' : true, // enable zoom when user pinch on target
           'touchMoveEnabled' : true, // enable target move via touch
           'containerBackground' : '#00bfff', // zoom target container background color (if containerClass is not set) 背景色
           'containerClass' : ''// class to apply to zoom target container if you whant to change background or borders (don't change size or position via css)
          } 
   );  
  // クリック 画像を移動(パン)制御
  $('#topPositionMap,#leftPositionMap,#rightPositionMap,#bottomPositionMap').bind("click", moveButtonClickHandler); 
  // クリック 拡大と縮小(ズーム)制御
  $('#zoomInButton,#zoomOutButton').bind("click", zoomButtonClickHandler); 
  // 拡大と縮小(zooming)ボタン制御 → クイックデモ参照
  function zoomButtonClickHandler(e){ 
    var scaleToAdd = 0.8;
    if(e.target.id == 'zoomOutButton')
      scaleToAdd = -scaleToAdd;
    $('#imageFullScreen').smartZoom('zoom', scaleToAdd);
  }
  // 画像を移動(panning)ボタン制御 → クイックデモ参照
  function moveButtonClickHandler(e){  
    var pixelsToMoveOnX = 0;
    var pixelsToMoveOnY = 0;
    switch(e.target.id){
      case "leftPositionMap":
        pixelsToMoveOnX = 50;
        break;
      case "rightPositionMap":
        pixelsToMoveOnX = -50;
        break;
      case "topPositionMap":
        pixelsToMoveOnY = 50;
        break;
      case "bottomPositionMap":
        pixelsToMoveOnY = -50;	
        break;
    }
    $('#imageFullScreen').smartZoom('pan', pixelsToMoveOnX, pixelsToMoveOnY);
  }
});

</script>
<br><br>
引用・参照:<a href="https://webkaru.net/jquery-plugin/pan-and-zoom/" target=~_blank">jQueryプラグイン「pan and zoom」</a>
<hr>
<center>
 <a href="http://urbanqee.com" target="_top">
 <img src="http://urbanqee.com/cgi-ssi/counter/wwwcount.cgi?hide+m3ico2_on.gif" border=0 title="HOMEへ">
 </a><br>(c)urbanqee.com 2022. 6.22
</center>

</body>
</html>

1 インストール2 表示画像HTML3 プラグインの起動4 これまでのまとめTOP




 最終更新日:2022. 6.28(初版)