javascript - 关于单击具有特定 id 的元素后图像旋转

标签 javascript jquery rotation

ul 中的 Logo 和元素一旦单击就会旋转图像。默认情况下,图像已经旋转一定 Angular ,然后每次单击图像都会旋转到必要的值。

到目前为止,我使用的是以下内容:

$("#objRotates").css('opacity','.2');
var value = 0;
var prev_value = 0;
$( "li" ).click(function() {
    var text=$(this).text();
    if(text==="text1"){value=0;}
    if(text==="text2"){value=33;}
    if(text==="text3"){value=66;}
    if(prev_value != value){
        $("#objRotates").animate({opacity:'1'});
        $("#objRotates").rotate({
            animateTo:value,
            easing: $.easing.easeInOutExpo,
            center: ["25px", "150px"],
            callback: function(){$("#objRotates").animate({opacity:'0.2'});}
        });
    }
    prev_value = value;
});

上面的代码是之前使用的代码,其中图像起始位置为 0,其动画是从链接文本触发的。

使用 jqueryRotate.js 示例( here )

如何更改代码,以便图像开始位置为一定 Angular ,并且单击具有特定 ID 的元素时动画开始?

至少给出线索..因为现在,看着我的旧代码,我迷失了。提前致谢。

简化 FIDDLE

最佳答案

好的,我创建了几个示例供您查看。第一个是非常基础的,我稍微简化了代码以使其更容易理解。这个事件仅使用完全静态的值和静态 elementId,我很确定根据您昨天对我的评论的回复回答了您的问题。 http://jsfiddle.net/x9ja7/594/

$("#elementId").click(function () {
    var startingAngle = 45;
    var endingAngle = 90;
    var elementToRotate = "img";
    $(elementToRotate).rotate({
        angle: startingAngle,
        animateTo: endingAngle
    });
});

但我还想给出另一个示例,该示例对于多个元素来说是动态且可重复的。使用上面的代码,如果您想通过单击不同的元素来执行此动画,则必须一遍又一遍地复制/粘贴相同的代码。这是一个替代方案。在此示例中,您在可点击元素的数据属性中设置了所有参数,那么该功能是完全可重复的,您只需编写一次。更少的代码=每个人都高兴!示例如下:http://jsfiddle.net/x9ja7/595/

//#region Default starting angles
$("#image1").rotate({ angle: 90 });
$("#image2").rotate({ angle: 20 });
//#endregion

$(".rotateAction").click(function () {
    //#region Optional parameter - used in the optional callback function
    var $self = $(this);
    //#endregion
    var startingAngle = Number($(this).attr("data-startingangle"));
    var endingAngle = Number($(this).attr("data-endingangle"));
    var elementToRotate = $(this).attr("data-elementtorotate");

    //#region If the current angle is the ending angle, reverse the animation - this can be removed if you want, I thought it may be cool to show some of the things you can do with this.
    var currentAngle = $(elementToRotate).getRotateAngle();
    if ( currentAngle[0] === endingAngle) {
        startingAngle = Number($(this).attr("data-endingangle"));
        endingAngle = Number($(this).attr("data-startingangle"));
    }
    //#endregion

    $(elementToRotate).rotate({
        angle: startingAngle,
        animateTo: endingAngle
        //#region This is optional - uncommenting this code would make the animation single-use only
        //, callback: function () { $self.off().removeClass("clickable"); }
        //#endregion
    });
});

希望这有帮助。如果您需要任何其他帮助,请告诉我。

关于javascript - 关于单击具有特定 id 的元素后图像旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26536222/

相关文章:

jquery - 获取元素-moz-transform :rotate value in jQuery

css - 使用 CSS 旋转图像并将它们放回原位

javascript - 如何在 React 应用程序中预取视频?

javascript - 如何使用 mat-select 与 react 形式 formarray Angular

javascript - 从 Ajax 重新加载页面调用函数

javascript - 如何根据 "background position"right(悬停)动态增加 "X"内容?

javascript - iPhone 的函数中断脚本(新手)

javascript - 将新元素放置在父元素包含的子元素之上,并应用 CSS 缩放变换

jQuery Mobile 按钮大小相同

Swift:UIRotationGesture 中手指的中心点在 SKView 中的错误位置?