javascript - 如何使用 jQuery 拖动时旋转元素?

标签 javascript jquery rotation

我正在创建一个带有旋转轮的网站。用户应该能够通过用鼠标拖动来旋转该轮子。我在 jQuery 中实现了这个并且它可以工作(旋转)。但它在 90 度到 180 度之间的表现与预期一致。当它旋转超过或小于这个范围时,我会看到一些意想不到的反弹。

这是我的代码:

$(document).ready(function(){
    var isDragging = false;

    $("#box").mousemove(function(e){
        if(isDragging){
            e.preventDefault();

            var rx = $(this).width() / 2;
            var ry = $(this).height() / 2;

            var px = e.clientX - $(this).offset().left - rx;
            var py = e.clientY - $(this).offset().top - ry;

            var a = Math.atan2(py,px) * 180 / Math.PI + 90;

            if(py <= 0 && px < 0){a = 360 + a;}

            $(this).css("-webkit-transform","rotate(" + a + "deg)");
        }
    });

    $("#box").mousedown(function(){
        isDragging = true;
    });

    $("*").mouseup(function(){
        isDragging = false;
    });
});

有什么问题吗?怎么解决?

最佳答案

您应该查看此处发布的答案。

How to make object rotate with drag, how to get a rotate point around the origin use sin or cos?

这是他们答案中的工作 fiddle

http://jsfiddle.net/mgibsonbr/tBgLh/11/

它涉及使您的 html 看起来与此类似。

<div class="draggable_wp">
  <div class="el"></div>
  <div class="handle"></div>
</div>

关于javascript - 如何使用 jQuery 拖动时旋转元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28528244/

相关文章:

javascript - 如何顺时针或逆时针旋转图像,以较短者为准?

javascript - 如何在javascript中过滤和添加剩余的obj

javascript - 将 'ng-include' 添加到应用程序后,Angular $httpProvider 拦截器停止为 "UI Grid"工作

ios - 设备旋转后 UIKeyboard 高度不同

swift - 找到旋转的 SKSpriteNode 的精确帧

javascript - 在 Three.js 中恢复旋转

javascript - 如何根据类名和同级更改特定表格单元格的文本?

javascript - 如何创建动画motion img

javascript - jquery - 在foreach循环后获取元素的html

java - 如何提高 Graphics2D 中的图像旋转质量?