2012-01-08 11 views
0

jQueryでアニメーション化されたdivでページを設計しています。これにはdivの移動とスケーリング(.animate()パラメータの間の幅と高さの設定)が含まれます。クロムとFirefoxの両方を使って、私のMacBookを使ったアニメーションの傷は見えませんが、私が8〜10分間放置するとdivの位置がずれることがありました。アニメーションがしばらくしてからシフトを開始します

  1. これはどのように可能ですか?遅いコンピュータでアニメーションが同期されないことがありますか?私は同時に5つのdivsをアニメーション化しており、アニメーションが繰り返すためのインターバル(8秒ごと)を設定し、アニメーションの速度も遅く設定しました。

  2. 彼らは画面から出てくることを私が代わりにFirefoxのすべてのdivが画面の左側にジャンプしますので、たとえばleft = 450pxためのleft += 200pxのようなものを持つdivをアニメーション化していて、そのうちのいくつかは、これまでに残さジャンプ。

    私は動いてdiv要素を含んでおり、このコンテナのdivを中心にmargin-left: auto; margin-right:autoを使用するために、親コンテナのdivを使用していますし、アニメーションのdivのleft属性を設定するとき、Firefoxはの初めにleft:0を持つものとして扱いますので、それはだと思いますアニメーション。コンテナdivの位置を相対的なものとして設定しますが、アニメーションのdivは絶対的なものとして設定します(私はそれらが互いの位置を妨害しないようにします)。これを行うより良い方法はありますか?

+0

あなたはJSFiddleでこれを設定するか、私たちが見ることができるリンクを与えることができますか?私は少し混乱しています。 – Sandeep

答えて

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のUIはあなたのためにすべての作業を行います。

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

ここでは概念のJSfiddleの証拠です:http://jsfiddle.net/nRHag/6/

+0

ありがとう、それはとても良いコンセプトです。しかし、それを実装した後、私はいくつかの問題を発見しました。しばらくすると、アニメーションが非同期になり始め、タブレットは同時にではなく異なるタイミングで動きます。そして、中央に大きなタブレットがあり、余白が-300pxのままになっているので、右に移動すると、余白が+ 400ishになり、不自然になり、他のタブレットのように振る舞いません。 –

+0

switchClassを使用している場合は、タブレットが中間の状態になることは不可能です。フィドルは何時間も劣化することなく走っていますが、実装した方法が分かるコードサンプルがありますか? – RSG

関連する問題