2012-04-30 10 views
0

私はコンテナ内に2つのdivを持つレイアウトを持っています。here's a JSFiddle of the layout私はディスプレイから右の列をアニメートし、左の列を100%の幅に調整して新しく作成された領域を塗りたいとします。これは、私が持っているjQueryコードです。2つのdivs - 幅と左の属性をアニメーション化するJQuery

if ($('div#right').offset().left > $('#container').width()) { 
     // Bring right-column back onto display 

      $('div#right').animate({ 
      left:'0' 
      }, 600); 

      $('div#left').animate({ 
      width:'50%' 
      }, 200); 
     } else { 

// Animate column off display. 
      $('div#right').animate({ 
      left:'+50%' 
      }, 600); 

      $('div#left').animate({ 
      width:'100%' 
      }, 1000); 
     } 

コンテナのオーバーフロー-xが非表示に設定されています。私が抱えている問題は、左の列を100%に拡大すると、右の列が左の列の下に表示されます。なぜなら、それでもコンテナ内の領域が占有され、左の列は徐々に100%コンテナの幅。

これを達成する方法についてのご意見はありますか?

+0

「表示から右の列をアニメーション化したいですか? –

+0

これを参照してください:http://sscce.org – Sparky

+0

配置していないので、要素の位置をアニメーション表示することはできません。絶対または相対のような位置を追加し、アニメーションを作成する前にCSSの左右のプロパティに値を追加します。要素が浮動小数点になると、jQueryはアニメーションをどこから開始するのか分かりません。 – adeneo

答えて

0
$('#container').click(function(){ 
    if (parseInt($('div#right').css('right'),10) < 0) { 
      // Bring right-column back onto display 
       $('div#right').animate({ 
        right:'0%' 
       }, 1000); 

       $('div#left').animate({ 
       width:'45%' 
       }, 600); 
      } else { 

    // Animate column off display. 
       $('div#right').animate({ 
        right:'-45%' 
       }, 600); 

       $('div#left').animate({ 
       width:'100%' 
       }, 1000); 
    } 

});

これは優れたソリューションです。浮動小数点の代わりに絶対配置を使用してください:jsFiddle:http://jsfiddle.net/YNAJZ/38/

+0

これは私が持っていたものですが、右側のdivの内容は幅が0%に近づくにつれて醜いものに見えます。私は幅を同じに保つ必要があります。 'right'が単なる背景色である限り、あなたの例はうまく見えます。 – Jack

+0

これはあなたが探しているものでなければなりません。それは絶対位置を使用する必要があるので、幅ではなくdivの位置をアニメートします。それを試して、それがあなたのために働くかどうか私に知らせてください。 http://jsfiddle.net/YNAJZ/38/ –

+0

私は絶対に要素を配置することはできません。これは私がStackoverflowで投稿しなければならなかった理由でした;) – Jack

関連する問題