2013-03-03 92 views
2

我试图定位一个隐藏的div,然后显示它,然后用一些动画旋转它。jQuery - 位置元素,显示它,然后动画它

这是我走到这一步,这似乎并没有在所有旋转它...

$(this).css({ 'left' : randomNum(offsetStartX, offsetEndX), 
    'top' : randomNum(offsetStartY, offsetEndY) }); 
$(this).show("fast"); 
var cssObj = { 
    msTransform: 'rotate(\'+ rotDegrees + \'deg)', 
    '-moz-transform' : 'rotate(\'+ rotDegrees + \'deg)', 
    '-webkit-transform' : 'rotate(\'+ rotDegrees + \'deg)', 
    '-o-transform' : 'rotate(\'+ rotDegrees + \'deg)', 
    'transform' : 'rotate(\'+ rotDegrees + \'deg)' }; 
$(this).animate(cssObj, "slow"); 

如果我的地方lefttop的CSS为var cssObj,它转动它就好了。不过,我需要将其定位,然后设置为可见,然后使用动画进行旋转。

我该怎么做?

+0

[Animate element transform rotate]的可能重复(http://stackoverflow.com/questions/5462275/animate-element-transform-rotate) – mgibsonbr 2013-03-03 01:12:14

+0

该答案对我没有任何帮助。这实际上与这个问题稍有不同。 – 2013-03-03 01:35:36

+0

在这种情况下,只需等待,近距离投票就会过期...(这就是为什么我也试图回答下面,以满足您的具体要求) – mgibsonbr 2013-03-03 01:39:50

回答

2

检查this question和它的accepted answer。 jQuery animate不能动画非数字属性,这就是为什么使用rotate(...)作为值不受支持的原因。但是,您可以使用step(为任意值创建动画,并在每一步设置不同的旋转)。

$(this).show("fast",function() { 
    var element = $(this); 
    var startDegree = 90; 
    var endDegree = 0; 
    $({ i:startDegree }).animate({ i: endDegree }, { 
     step: function(now,fx) { 
      var cssObj = { 
       msTransform: 'rotate('+ now + 'deg)', 
       '-moz-transform' : 'rotate('+ now + 'deg)', 
       '-webkit-transform' : 'rotate('+ now + 'deg)', 
       '-o-transform' : 'rotate('+ now + 'deg)', 
       'transform' : 'rotate('+ now + 'deg)' }; 
      element.css(cssObj); 
     }, 
     duration:500 
    },'linear'); 
}); 

注意,我开始在回调的旋转动画show - 因此它只是在启动后完成元素显示旋转。

This fiddle已创建合并您的代码和该问题的答案中提供的示例代码(并扩展以支持其他浏览器)。您需要对其进行调整,以便旋转从源程度发生到目标程度(使用变量startDegreeendDegree)。

+0

你如何设置'rotDegrees'变量?我只是看不到它?因为我实际上有一个名为'rotDegrees'的变量,当我尝试你的例子时它不起作用。 – 2013-03-03 01:32:22

+0

@SolomonClosson在原来的答案中,变量被称为'现在',你可以用这种方式重新命名它,以免与你现有的变量冲突。这是['step'回调](http://api.jquery.com/animate/)的第一个参数,它是动画属性的当前值(在本例中为'textIndent')。即'textIndent'从'90'到'0'的动画,我用这个值作为'rotDegrees'(但你也可以使用其他值)。 – mgibsonbr 2013-03-03 01:37:57

+0

这对我不起作用...无论如何谢谢! – 2013-03-03 01:43:52

相关问题