jquery - 旋转图像在开始时不需要转

标签 jquery css

我正在尝试改进来自 http://www.htmldrive.net/items/show/1114/-Rotating-hover-Image-with-JQuery 的一些代码

所以问题是: - 当我单击图像(按住鼠标)时,图像将开始旋转。我怎样才能停止第一次旋转。

Fiddle

 r = 360 - Math.round(((180/Math.PI) * Math.atan2(y,x)));
        rDiff = r - rTmp;
 if(isFirst != 1) {  
            r = img.rotation + rDiff;
            img.css("transform","rotate(-"+r+"deg)");
            img.css("-moz-transform","rotate(-"+r+"deg)");
            img.css("-webkit-transform","rotate(-"+r+"deg)");
            img.css("-o-transform","rotate(-"+r+"deg)");
            img.rotation = img.rotation + rDiff;
 } else {
           isFirst = 0;
           // rDiff should be small next time?
 }
 rTmp = r;

我正在尝试过滤第一个旋转。为了更好的代码 View ,请尝试 fiddle 。

最佳答案

您想限制图像在任何时候可以旋转的最大量。这并没有修复初始计算,但它确实增加了最大旋转速度的想法。添加一个名为 maxRotate 的全局变量。这将控制图像旋转在任何时候可以改变的速度。请看下面的代码:

var selectedImg;
var drag = 0;
var isFirst = 0;
var rTmp = 0;
var maxRotate = 15;

$(document).ready(function() {
    $("#content").myrotate();
    $("#fire").myrotate();

});

$(document).mousemove(function(e) {
        if (drag == 1) {
            img = selectedImg;
            x1 = e.pageX;
            y1 = e.pageY;
            x = x1 - img.x0;
            y = y1 - img.y0;
            r = 360 - Math.round(((180/Math.PI) * Math.atan2(y,x)));
            rDiff = r - rTmp;
            if(isFirst != 1 && Math.abs(rDiff) < maxRotate) {  
                r = img.rotation + rDiff;
                img.css("transform","rotate(-"+r+"deg)");
                img.css("-moz-transform","rotate(-"+r+"deg)");
                img.css("-webkit-transform","rotate(-"+r+"deg)");
                img.css("-o-transform","rotate(-"+r+"deg)");
                img.rotation = img.rotation + rDiff;
                $("#1").html("rDiff " + rDiff);
                $("#4").html("tmp r " + r);
                $("#5").html("img rot " + img.rotation);
            } else {
               isFirst = 0;
               // rDiff should be small next time?
            }

            rTmp = r;
        }
});

如果您希望图像能够更快地旋转,请增加 maxRotate 的值。这是一个 fiddle .

关于jquery - 旋转图像在开始时不需要转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15527388/

相关文章:

javascript - 如何将 json ajax 用于谷歌地图标记

javascript - 在 div 内向上滚动时无限滚动

jQuery .click() .toggle() - 更改显示和交换字符

css - 需要帮助设计 react-native-elements 输入组件

HTML 不会覆盖背景图片

html - 调整大小时表单 btn 移动的 CSS 问题

css - JS/jQuery : Dynamically add x pixels to the height of a div with inline style

javascript - 如何在 if 语句中使用 'contains'?

html - 我可以使用 SVG 对象代替网页上的 img 文件吗?

javascript - 加载页面时显示具有匹配子菜单的事件父级 jQuery