2012-01-08 52 views
0

我正在設計一個帶有jQuery動畫效果的div的頁面。這包括移動div並縮放它們(通過在.animate()參數中設置寬度和高度)。在使用我的MacBook的動畫中,我沒有發現使用Chrome和Firefox的任何缺陷,但是我被告知,如果該頁面單獨保留8-10分鐘,則div開始移出位置。動畫在一段時間後開始移動

  1. 這怎麼可能?難道在較慢的計算機上,動畫不會同步?我在同一時間爲5個div製作動畫,並且爲動畫的迴歸設置了一個內部(每8秒),並且我還將動畫速度設置爲較慢。

  2. 我動畫的東西像left += 200px而不是例如left = 450px因爲在Firefox中所有的div會跳到屏幕左側的div,其中一些跳躍到目前爲止離開他們走出屏幕。

    我想這是因爲我使用的是父容器div來包含移動的div並使用margin-left: auto; margin-right:auto居中這個div容器和設置動畫的div的left屬性時,火狐將它們視爲之初有left:0動畫。我將容器div的位置設置爲相對的,但將動畫的div設置爲絕對的(因爲我不希望它們干擾彼此的位置)。有沒有更好的方法來做到這一點?

+0

你能在的jsfiddle此設置或提供一個鏈接,我們可以看到?我有點困惑。 – Sandeep 2012-01-09 03:51:47

回答

1

你可以用更少的代碼和更少的頭痛來做到這一點。在班

.tablet1{ 
    height:100px; 
    width:140px; 
    margin-left:-540px; 
    top: 200px; 
    z-index:10; 
} 

2.使用普通函數來處理所有的過渡

1.商店平板電腦位置屬性。如果你使用switchClass

switchTabletsRight = function(){ 
    var i, next, max = 5; 
    for(i = 1; i <= max; i++){ 
    next = (i < max)? i + 1 : 1; 
    $(".tablet" + i).switchClass("tablet" + i, "tablet" + next); 
    } 
};​ 

3.調用與setInterval的一般功能

JQuery用戶界面會爲你做所有的工作。

var loop = setInterval(function(){ 
    switchTabletsRight(); 
},2000); 

這裏的概念證明的jsfiddle:http://jsfiddle.net/nRHag/6/

+0

謝謝,這是一個非常好的概念。但實施後,我發現了一些問題:一段時間後,動畫開始不同步,平板電腦將在不同的時間而不是同時移動。然後,因爲我在中間有一個大的平板電腦,剩餘邊距爲-300像素,當我將其移動到右側時,其左側的邊距爲+ 400ish,因此移動變得不自然,並且不像其他平板電腦那樣運行。 – 2012-02-22 10:59:54

+0

如果您使用的是switchClass,則平板電腦不可能以中間狀態結束。小提琴運行幾個小時,沒有退化,你有代碼示例,我可以看到你是如何實現它? – RSG 2012-02-22 20:30:36