【jQuery】スワイプ / マウスホイールイベントを拾うには...

■ スワイプ / マウスホイールイベントを拾うには...

問題点

ブラウザ(IEFirefoxChrome etc)によって拾い方が異なる。
http://codaholic.org/?p=1139

今回の解決案

jQuery を使う

■ サンプル

例1:マウスホイールによる画像を拡大・縮小する

https://blogs.yahoo.co.jp/dk521123/37720717.html
の『例3:画像を拡大・縮小する』をスワイプ / マウスホイール対応する
<!DOCTYPE html>
<html lang="jp">
<head>
<meta charset="utf-8">
<title>Demo</title>
</head>
<body>
<h1>Demo for canvas</h1>
<canvas id="sample" width="1000" height="1000"></canvas>
<script src="https://code.jquery.com/jquery-1.12.4.js" integrity="sha256-Qw82+bXyGq6MydymqBxNPYTaUXXq7c8v3CwiYwLLNXU=" crossorigin="anonymous"></script>
<script type="text/javascript">
$(function(){
  var canvas = document.getElementById('sample');
  var context = canvas.getContext('2d');
  var image = new Image();
  image.crossOrigin = "";
  image.src = "https://raw.githubusercontent.com/fengyuanchen/cropperjs/master/docs/images/picture.jpg";
  image.onload = function() {
    canvas.width = image.width;
    canvas.height = image.height;
    context.drawImage(image, 0, 0, image.width, image.height);
  }
  
  var scale = 1;
  var mousewheelevent = 'onwheel' in document ? 'wheel' : 'onmousewheel' in document ? 'mousewheel' : 'DOMMouseScroll';
  $(document).on(mousewheelevent,function(event){
    event.preventDefault();
    var delta = event.originalEvent.deltaY ? -(event.originalEvent.deltaY) : event.originalEvent.wheelDelta ? event.originalEvent.wheelDelta : -(event.originalEvent.detail);
    if (delta < 0){
      scale = scale - 0.01;
    } else {
      scale = scale + 0.01;
    }
    zoom(scale);
  });
  
  function zoom(scale) {
    // 一旦クリア 
    context.clearRect(0, 0, canvas.width, canvas.height);
    // 拡大縮小
    context.scale(scale, scale);
    // 再描画
    context.drawImage(image, 0, 0);
    // 変換マトリクスを元に戻す
    context.scale(1 / scale, 1 / scale);
  }
});
</script>
</body>
</html>


関連記事

Canvas ~ ブラウザ上に図を描く ~

https://blogs.yahoo.co.jp/dk521123/37720717.html