如何在每次点击时用CSS转换/转换JS将对象旋转120度

How to rotate an object 120deg on every click with CSS-transition/transform throu JS

本文关键字:转换 JS 对象 120度 旋转 CSS      更新时间:2023-09-26

每次按下按钮时,我都想将我的blueRect从原来的位置旋转120度,我无法让它正常工作,有人能知道我的代码出了什么问题吗?我知道我没有掌握所有的前缀。jsfiddle:http://jsfiddle.net/a0mycee7/

<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<style>
    #blueRect{
        width: 50px;
        height: 50px;
        background-color: #aaaaff;
        border: solid 3px #000000;
        margin-left: 30px;
        transition: all 2s ease-out;
        -moz-transition: all 2s ease-out;
    }
</style>
<script type="text/javascript">
   var angle = 0;
   $('#right').click(function() {
       //$(this).toggleClass('active');
       angle+=120;
        $('#blueRect').css ({
            'transform: rotate(' + angle + 'deg)',
            '-webkit-transform: rotate(' + angle + 'deg)',
               '-moz-transform: rotate(' + angle + 'deg)',
                 '-o-transform: rotate(' + angle + 'deg)',
                '-ms-transform: rotate(' + angle + 'deg)'
        });
    });
</script>
</head>
<body>
<div id="background">
    <div id="blueRect">
    </div>
</div>
<button id="right">1</button>
</body>
</html>

.css()函数需要散列而不是数组:Fiddle

基本上,改变

$('#blueRect').css ({
        'transform: rotate(' + angle + 'deg)',
        '-webkit-transform: rotate(' + angle + 'deg)',
           '-moz-transform: rotate(' + angle + 'deg)',
             '-o-transform: rotate(' + angle + 'deg)',
            '-ms-transform: rotate(' + angle + 'deg)'
    });

$('#blueRect').css ({
        'transform': 'rotate(' + angle + 'deg)',
        '-webkit-transform': 'rotate(' + angle + 'deg)',
           '-moz-transform': 'rotate(' + angle + 'deg)',
             '-o-transform': 'rotate(' + angle + 'deg)',
            '-ms-transform': 'rotate(' + angle + 'deg)'
    });

这引发了一个错误BTW,因为您的初始代码有花括号({}),但实际上应该有方括号([]),因为它不包含键值对。下次好好利用浏览器中的JS控制台(或者使用Firefox时使用FireBug)。

传递给.css的参数不是有效对象。以下代码应该有效:

(jQuery没有加载到fiddle中,也是必需的:)

var angle = 0;
$('#right').click(function() {
   //$(this).toggleClass('active');
   angle+=120;
    $('#blueRect').css ({
        'transform': 'rotate(' + angle + 'deg)',
        '-webkit-transform': 'rotate(' + angle + 'deg)',
           '-moz-transform': 'rotate(' + angle + 'deg)',
             '-o-transform': 'rotate(' + angle + 'deg)',
            '-ms-transform': 'rotate(' + angle + 'deg)'
    });
});