2017-07-19 5 views
0

私は、マスク内のSVG画像のサイズを動的に制御するために、Jquery UIスライダを作成しました。左上隅から画像のサイズが変更されます。私はそれが中心からのイメージのサイズを変更することが可能であることを知っているのだろうか?任意のアイデアをいただければ幸いです。 SVGでSVG画像のスケールをスライダで中心から

https://jsfiddle.net/david7418/o497akje/

obj = Snap(".cat"); 
    obj.drag(); 
    var dimens = obj.node.getBoundingClientRect(); 
    $("#slider").slider({ 
     max: dimens.width, 
     min: dimens.width/5, 
     step: 1, 
     value: dimens.width, 
     slide: function(event, ui) { 
      obj.attr({ 
       width: ui.value 
      }); 
     } 
    }); 

答えて

-1

開始する変換のためのデフォルトの位置は左上隅です。だから、これを上書きするためには、明示的にこのようなSVGに変換-の原点を設定する必要があります。

svg { 
    transform-origin: center center; 
} 
+0

私はそれだけでhtmlタグで、通常の画像の上にうまくいくと思います。マスクの少ないところでsvgイメージでは機能しません。 – david0116

+0

ああ。そうですか。 SVGではなく画像を拡大しています。すみません、私の間違いです。私は間違った質問を読んだ。 :) –

1

また、あなたがwidthを調整すると、画像のxyheightを移動する必要があります。

また、割合を返すようにスライダを変更しました。私はそれがもう少し明らかであると思います。

$(function() { 
    obj = Snap(".cat"); 
    var dimens = obj.node.getBoundingClientRect();  
    console.log(dimens.width) 
    $("#slider").slider({ 
     max: 100, 
     min: 100/5, 
     step:1, 
     value:dimens.width, 
     slide: function(event, ui) { 
     w = ui.value * dimens.width/100; 
     h = ui.value * dimens.height/100; 
     obj.attr({ 
      width: w, 
      height: h, 
      x: (dimens.width - w)/2, 
      y: (dimens.height - h)/2 
     }); 
     } 
    }); 
}); 

Updated fiddle

+0

完璧!これはまさに私が欲しいものです。仲間ありがとう。サイズ変更の振る舞いをより合理的にするためにコードを修正しました。 https://jsfiddle.net/david7418/o497akje/5/ もう一度質問してください。マウスで画像を移動できるようドラッグイベントを追加しました。それは画像表示フルスターマスクを維持するために可動範囲を制限することは可能ですか? – david0116

+0

まあ、私は、サイズ変更、回転、ドラッグ(範囲の制限をドラッグする以外)を含むすべてを完了しました。誰かがそれを必要とする場合のデモがここにあります。 https://jsfiddle.net/david7418/o497akje/6/ – david0116

+0

しかし、少し問題があります。移動後に画像を回転すると、画像は常にマスクの中心に戻ります。私はそれが行列計算に何か間違っていると思う。何か案が? – david0116

関連する問題