2014-01-26 76 views
1

我面臨以下問題:我怎樣才能讓一個div停留在兩個其他div與jqueryui幻燈片laternating?

我有一個包含三個其他div的容器div。 前兩個隱藏(顯示:無)第三個包含:文本,圖像或任何東西。當用戶點擊一個按鈕時,我希望三個div中的第一個可以用jQuery滑動,第三個可以在剛剛出現的那個下面移動。當再次點擊該按鈕時,第一個div應該向上滑動,第二個div也應該通過向上滑動出現。這應該被扭轉,下次按鈕被點擊時,無限...

我已經實現了我認爲會做這項工作,但唉,我錯了。 兩個div完全按照他們的要求移動,但第三個div保持低於其他兩個。

我的HTML是:

<div style="position: relative"> 
<div id="topMenuDivision" style="border: 1px solid; display: none; position:absolute"> 
    here is Div 1 
</div> 
<div id="bottomMenuDivision" style="border: 1px solid; display: none; position:absolute"> 
    here is Div 2 
</div> 
<div style="position: relative"> 
    I want this to be at the bottom, bellow the other two regardless which (if any) is shown 
</div> 

我的JavaScript:

window.currentlyOpen = "none"; 
function togleTheDivs() 
{ 
    if (window.currentlyOpen=='none') 
    { 
     $('#topMenuDivision').show('slide',{direction: 'up'},750,callBack); 
     currentlyOpen = 'top'; 
    }else if (window.currentlyOpen=='top') 
    { 
     $('#topMenuDivision').hide('slide',{direction: 'up'},750,callBack); 
     $('#bottomMenuDivision').show('slide',{direction: 'down'},750,callBack); 
     currentlyOpen = 'bottom'; 
    }else if (window.currentlyOpen=='bottom') 
    { 
     $('#topMenuDivision').show('slide',{direction: 'up'},750,callBack); 
     $('#bottomMenuDivision').hide('slide',{direction: 'down'},750,callBack); 
     currentlyOpen = 'top'; 
    } 
} 

function callBack() 
{ 

} 

這裏是我的代碼的jsfiddle:

http://jsfiddle.net/QTW3u/9/

可能是定位?錯誤地使用幻燈片?我在這裏不知所措... 任何想法?

回答

0

你的代碼很好,唯一的問題是前兩個div的絕對定位。 如果您刪除它們,它就會起作用。

但是接下來,您可能會發現在前兩個div可見的時候(動畫期間)底部跳轉。避免這種情況的最簡單的方法,只有當第一個移動完成時纔會動畫第二個。

事情是這樣的:http://jsfiddle.net/QTW3u/16/

if (window.currentlyOpen=='none') 
{ 
    $('#topMenuDivision').show('slide',{direction: 'up'},750); 
    currentlyOpen = 'top'; 
}else if (window.currentlyOpen=='top') 
{ 
    $('#topMenuDivision').hide('slide',{direction: 'up'},750,function() { 
     $('#bottomMenuDivision').show('slide',{direction: 'down'},750); 
    }); 
    currentlyOpen = 'bottom'; 
}else if (window.currentlyOpen=='bottom') 
{ 
    $('#bottomMenuDivision').hide('slide',{direction: 'up'},750, function() { 
     $('#topMenuDivision').show('slide',{direction: 'down'},750); 
    }); 
    currentlyOpen = 'top'; 
} 
+0

不,這不是必要的行爲。當你點擊按鈕時,圖層會離開,出現間隙,然後新的移動到位。那裏一定不能有差距。再加上第一次點擊按鈕,新的div必須從下面,下一次從上面來。 –

+0

我明白了。那麼沒有真正的方法來定位基於非父/子絕對元素的元素。但在你的情況下,你仍然可以僞造它。你對那個怎麼想的? http://jsfiddle.net/QTW3u/17/ – Skwal

+0

好吧,這就是我正在尋找。只是一個問題,以便我明白髮生了什麼。在我的示例中,顯示div時容器高度發生變化。即使我將第三個div放在相對或絕對位置並綁定到容器的底部,它仍然不會在顯示第一個div時移動。爲什麼? –

相關問題