jquery旋转功能不起作用

时间:2012-11-29 00:28:39

标签: javascript jquery rotation

大家好,此刻我正在试图弄清楚如何旋转div并让它停在一个位置。我对此有一些帮助但是我不确定我做错了什么。任何有关代码的帮助都会很棒。

<script type="text/javascript">
var $elie = $("#super");
rotate(1);

function rotate(degree) {
$elie.css({
    WebkitTransform: 'rotate(' + degree + 'deg)'
});
$elie.css({
    '-moz-transform': 'rotate(' + degree + 'deg)'
});

if (degree < 1196) {
    timer = setTimeout(function() {
        rotate(++degree);
    }, 1);
}
}

2 个答案:

答案 0 :(得分:2)

这是我工作的可重用版本。希望它可以帮助你。

$(function () {

    var rotateAnimation = function (props) {
        // init animation props
        var rotateEl = props.el,
            curAngle = props.startAngle,
            endAngle = props.endAngle;
        // scope angle to parent function
        var angleValue = 'rotate(' + curAngle + 'deg)';

        // define worker function
        var rotate = function () {
            // increment the angle
            curAngle += props.increment;

            // see if we are done animating
            if (curAngle >= endAngle) {
                curAngle = endAngle;
                clearInterval(timer);//stop looping

            }
            // create css value 
            angleValue = 'rotate(' + curAngle + 'deg)';
            rotateEl.css({
                '-moz-transform': angleValue,
                '-webkit-transform': angleValue,
                '-o-transform': angleValue,
                '-ms-transform':angleValue
            });
        };

        var timer = setInterval(rotate, props.delay);//let the fun begin
    };

    $('#super').on('click', function () {
        rotateAnimation({
            el: $(this),
            startAngle: 0,
            endAngle: 1234,
            delay: 1,
            increment: 3
        });
    });

});

答案 1 :(得分:1)

看起来它正在旋转和停止,但1196的值需要一段时间才能到达。这是一个jsfiddle与正在发生的事情。 http://jsfiddle.net/2x3Us/

HTML:

<div id="super" style="background-color: red">hello</div>​

使用Javascript:

var $elie = $("#super");
rotate(1);

function rotate(degree) {
    $elie.css({
        '-ms-transform': 'rotate(' + degree + 'deg)',
        '-webkit-transform': 'rotate(' + degree + 'deg)',
        '-o-transform': 'rotate(' + degree + 'deg)',
        '-moz-transform': 'rotate(' + degree + 'deg)'
    });

    console.log(degree);
    if (degree < 360) {
        timer = setTimeout(function() {
            rotate(++degree);
        }, 1);
    }
}​