Javascript 单击并拖动以旋转

标签 javascript jquery rotation

我正在尝试通过单击并拖动来旋转元素(例如表盘)。 我已经掌握了基本概念,但它有点小问题。

请在此处查看我当前的示例:https://jsfiddle.net/o5jjosvu/

在元素内单击并拖动时,它会抖动。但是当光标位于元素外部时,它会平滑转换。

光标内部元素 cursor INSIDE element

光标外部元素 cursor OUTSIDE element

我认为问题是由于我处理事件的方式造成的,但我不确定。

$('.element').on('mousedown', function() {
    $(document).bind('mousemove', function() {
        // Calculate rotation
    });
});
$(document).on('mouseup', function() {
    $(document).unbind('mousemove');
});

任何帮助都会很好,谢谢。

最佳答案

Jquery offset 函数返回元素的最左边和最上面的相对位置。它与元素的边框无关。

example image about offset

由于您的中心没有改变,您可以在函数之外计算它并在之后使用它。你可以这样做 https://jsfiddle.net/o5jjosvu/65/ .

如果要移动元素,请更改当时的中心位置。

关于Javascript 单击并拖动以旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48916517/

相关文章:

javascript - 在鼠标悬停时应用工具提示

javascript - 阻止 div 滑过页面顶部

javascript - 如何确保代码在 window.location.href 之前运行

c++ - 计算旋转角度

ios - 每次单击按钮时将 UIButton 旋转 90 度

javascript - RaphaelJS 旋转不起作用

javascript - 如何创建可以包含在父项目中并运行该包的 npm 包?

javascript - 计算动态添加的输入中的值

javascript - 仅特定文件路径的浏览器加载错误 - 内部服务器错误 500

jQuery - 使用 jQuery 将 CSS3 动画添加到 div