2011-09-27 106 views

回答

1
  • 什麼是200?在嗎? PX?使用測量。 「200像素」。

  • 您沒有設置動畫的高度和寬度:{寬度:「200像素」,高度:「爲200px」}

  • 我放棄了對汽車的高度。主動CSS規則。動畫需要照顧。

代碼:

$(document).delegate('.rewards-process li:not(.active)', 'click', function(e) 
    { 
     var toActive = $(this); 
     $('.rewards-process li.active').addClass('transition'); 
     $('.rewards-process li.active').animate({ 
      width:'90px' 
      , height: '90px'},1000,function() { 
       $('.rewards-process li.active').removeClass('active').removeClass('transition'); 
      }); 

$(toActive).animate({ 
    width:'200px' 
    , height: '200px'},300,function(){ 
     //animation complete 
     $(toActive).addClass('active') 
    }); 

}); 

我有時用這個技巧搞清楚一個動態的高度:

function getElementHeight(e, width) { 
$("body").append("<div id='test' style='width:" + width + "'>" + e.html() + "</div>").hide(); 
    var h = e.outerHeight(); 
    e.remove(); 
    return h; 
} 

您需要確保該CSS不會搞砸。

基本上你用最終寬度創建元素,計算它的高度,然後刪除它。此功能將返回一個數字,您需要添加px,您可以在動畫中使用它。

但是你不需要這個。自動爲您設置高度動畫,您的CSS規則只是將其禁用。例如,this fiddle will work just fine

+0

嗨Radagaisus,謝謝你的幫助!不幸的是,我不能爲李的長度設置一個靜態高度,因爲我不知道內容會是什麼 – Allison

+0

有幾種方法可以做到這一點。我將它們添加到我的答案中。 – CamelCamelCamel

+0

感謝幫助,我將需要重新修改隱藏和顯示內容的方式(onclick,內容包含一系列活動獲取顯示:截至目前爲止)。但很好的建議,很好的瞭解jQuery會爲我做這個,如果我只是修復我的方法。非常感謝 – Allison

0

要爲高度設置動畫,只需在動畫調用中的寬度下添加高度值即可。

跳到最後是由瀏覽器試圖自動重新佈局所有元素引起的。爲了防止這種情況發生,您應該將它們全部放入網格中,然後在動畫完成時重新佈置網格。

+0

時才需要使用測量值,我聽到您對瀏覽器嘗試重新佈置所有元素的評論。我不能添加高度:'200px',但因爲我不確定容器中會放什麼內容......所以沒有設置高度。也許我會收集最高元素的高度,然後將其添加到動畫中... hmm – Allison

+0

使用jQuery .height()方法先收集高度,然後使用它填充高度值。 –

0

這條線在你的CSS是導致跳。

.rewards-process .active img, .rewards-process .active p {display:block; } 

嘗試刪除「display:block」屬性,它應該順利進行。找到一種方法來解決這個問題。它應該很容易。

+0

實際上僅在此選擇器上「.rewards-process .active p」 –