2012-04-12 17 views
1

私のウェブサイトには、divの絶対位置を持つdivがあります。私が望むのは、ブラウザの中央で拡大して配置するdivをクリックするときです。私が試した何 固定divを固定divにアニメ化

はこれです:

それは働いていたが、何が起こったことは、私の画面の中央にアニメーション化するよりも、#macが最初に私の画面の左上隅に位置していることである
$j("#mac").click(function(){ 
$j('#mac').css({ 
     position: 'fixed' 
    }); 

$j('#mac').animate({ 
    width: 923, 
    height: 498, 
    left: ($j(window).innerWidth() - 923)/2, 
    top: ($j(window).innerHeight() - 498)/2 
    }, 1000)}); 

。これは、固定された位置の使用のために意味をなさない。しかし、私はその位置を使用しないときは、divは中心に位置しません。

私は画面の左上隅に位置調整をしたくありませんが、divは元の位置から画面の中央に移動する必要があります。

誰かがこれを行う方法を知っていますか?

ありがとうございます!

+0

絶対位置を使用する場合は、スクロール位置を追加してビューポートの中央に移動する必要があります。 –

+0

@SvenBiederあなたの答えに感謝します。これを行う方法の例が少しありますか? –

+0

あなたは固定位置でそれをしたのと同じ方法でそれを行います。左にはwindow.pageXOffsetを追加し、上にwindow.pageYOffsetを追加します –

答えて

2

CSSの位置をfixedに変更すると同時に、DIVの現在の上と左の位置を見つけ、同様に設定します。正しい場所でアニメーションを開始する必要があります。

var offset = $j('#mac').offset(); 

$j('#mac').css({ 
    position: 'fixed', 
    top: offset.top, 
    left: offset.left 
}); 
+0

ありがとうございます、この作品は魅力的です! –

+0

ジョン、もう1つ質問です。 divを輪郭のサイズと位置に縮小すると、アニメーションは画面の下部で開始します。どのように私はこれを正しく設定できますか? –

+0

私は固定位置を維持しようとしていましたが、以前の位置に戻って行きます。だからあなたが始めた「オフセット」に戻ってください。次に絶対位置に戻してください。基本的には、それが前にあった場所を覚えておいてから、絶対にもう一度切り替える前にその場所に戻ってください。 –