Вращение HTML-элемента с помощью мыши (или mouseevent) с примененным масштабированием CSS - PullRequest
0 голосов
/ 23 марта 2019

Я нашел пример поворота HTML-элемента в старом вопросе SO:

http://jsfiddle.net/superasn/w48rsvp2/

К сожалению, как только я применяю любое увеличение (style = "zoom: 0.5") к родительскому элементу, вращение становится шатким.

http://jsfiddle.net/superasn/mv2oqL36/2/ (с увеличением 0,5 и смещением 500 пикселей на родительский элемент)

Код для вращения такой:

$(document).ready(function() {
  // the same as yours.
  function rotateOnMouse(e, pw) {
      var offset = pw.offset();
      var center_x = (offset.left) + ($(pw).width() / 2);
      var center_y = (offset.top) + ($(pw).height() / 2);
      var mouse_x = e.pageX;
      var mouse_y = e.pageY;
      var radians = Math.atan2(mouse_x - center_x, mouse_y - center_y);
      var degree = (radians * (180 / Math.PI) * -1) + 100;
      //            window.console.log("de="+degree+","+radians);
      $(pw).css('-moz-transform', 'rotate(' + degree + 'deg)');
      $(pw).css('-webkit-transform', 'rotate(' + degree + 'deg)');
      $(pw).css('-o-transform', 'rotate(' + degree + 'deg)');
      $(pw).css('-ms-transform', 'rotate(' + degree + 'deg)');
  }

  $('.drop div img').mousedown(function(e) {
    e.preventDefault(); // prevents the dragging of the image.
    $(document).bind('mousemove.rotateImg', function(e2) {
      rotateOnMouse(e2, $('.drop div img'));
    });
  });

  $(document).mouseup(function(e) {
    $(document).unbind('mousemove.rotateImg');
  });
});

Я думаю, что функция rotateOnMouse должна каким-то образом учитывать масштаб CSS родительского элемента, но я не могу понять это.

Мои вопросы: какие изменения мне необходимо внести в функцию rotateOnMouse для вычисления degree переменной после увеличения?

...