2012-02-10 19 views
3

http://jsfiddle.net/AndyMP/fVKDy/自動的

このバイオリンは私が解決しようとしている問題を示しています。コンテナDIVは、アニメーション化された2つのDIVに対応しています。 2番目のDIVは、コンテンツが少ないため、1番目のDIVの高さが1番目のDIVよりも小さくなります。私がしようとしているのは、表示されているときに、下のDIVが2番目のDIVのコンテンツの高さに応じて自動的にスライドするようにすることです。しかし、それは2番目のDIVの上を滑り降りる。

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

$(function() { 
    $(".left_slide").click(function() { 
     $(".block1").stop(true, true).animate({ left: -400 }, 500).hide(1000); 
     $(".block2").stop(true, true).animate({ left: 0 }, 500); 
    }); 
}); 
$(function() {  
    $(".right_slide").click(function() { 
     $(".block2").stop(true, true).animate({ left: 400 }, 500); 
     $(".block1").stop(true, true).animate({ left: 0 }, 500); 
    }); 
}); 

CSS

#blog_slide_container { 
position: relative; 
width: 400px; 
z-index: 5; 
overflow: hidden; 
border: 1px solid #000; 
} 
.block1 { 
position: relative; 
top: 0px; 
left: 0px; 
width: 400px; 
z-index: 6; 
background-color: #333; 
color: #FFF; 
} 
.block2 { 
position: absolute; 
top: 0px; 
left: 400px; 
width: 400px; 
z-index: 6; 
background-color: #CCC; 
color: #FFF; 
} 
#bottom_container { 
position: relative; 
float: left; 
width: 100%; 
height: 280px; 
z-index: 3; 
background-color: #000; 
} 
+1

どこから始めるべきかわかりません。アプローチは間違っています。あなたの外側の要素を絶対的な位置に置かないでください。各要素をアニメートしないでください。代わりに、両方のdivでラップし、そのdivだけをアニメーション化します。次に、アクティブなスライドの高さを測定し、それに応じてフッターを移動することができます。 – Fresheyeball

答えて

1

編集: は私の更新をチェックしfiddle

は、動的コンテナの高さを変更するためのコードを追加しました。

チェックアニメーションバージョンhttp://jsfiddle.net/skram/fVKDy/17/

別のバージョン.. http://jsfiddle.net/skram/fVKDy/16/ < - の違いは、下のブロックがアップ/ダウンスライドした後、右/左シフトが起こるということです。


fiddleデモを確認してください。

2つのこと、

  1. #blog_slide_containerに固定の高さを追加しました。アニメーション化すると、アニメーション化されたdivの位置はabsoluteになるので、コンテナのサイズは0 heightになります。
  2. 右クリックしたときの表示をblock1に追加しました。
+0

私は後に何も空白がありません。下のコンテナを上にスライドさせて、どちらかのDIVの下に直接スペースを置かずに置いてください。 – Andy

+0

@Andy:更新されたフィドルを見てください。 http://jsfiddle.net/skram/fVKDy/9/ –

+0

これを今すぐチェックしていただき、ありがとうございます。ボトムアップを行う可能性はありますが、それ以外の場合は完璧です。 – Andy

1

これはそれです...私はそう思います - >http://jsfiddle.net/fVKDy/13/ 両方の部分がここで動作しています。 ブロックに別のラッパーを置き、その親戚を削除してください。必要な静的でない配置は、追加のラッパーのみです。


これは別のバージョンです。 http://jsfiddle.net/fVKDy/5/ もう少し調整するつもりです。

+0

ありがとうございます。それは感謝しています。 – Andy

1

私はこれがあなたが探しているものだと信じています。

http://jsfiddle.net/fVKDy/11/

私が説明(実行する必要があります)で、まもなくして編集に戻ってくるだろう。しかし基本的には、要素自体の代わりにアニメーション化された内部コンテナを追加しました。

+0

最初の部分は完全に機能します。 2番目のDIVが後ろにスライドすると、最初のスライドが戻ってきているのを見ていません。 – Andy

+1

右、私は一方向のみを行い、もう一方は似ています。 –

+0

それを信じているかどうか、私は実際にそれを他の方法で動作させて失敗させようとしました。 – Andy