2013-03-03 94 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

相關問題