2013-04-25 95 views
3

我試圖創建一個效果,當一個鏈接被點擊時,它使初始div滑動到左側,並顯示第二個div滑動到左側,當鏈接是點擊從第二個div div滑向右側,第一個div也向右滑動。jquery從左到右滑動使div跳到幻燈片

這裏是我到目前爲止的代碼

HTML

<div id="box1"> 
    <a href="#" id="click1">Click to show other div</a> 
    <br> 
    Ut accumsan dignissim lorem non posuere.Aliquam iaculis nibh ultricies sem amet.Class aptent taciti sociosqu ad posuere. 
</div> 

<div id="box2" style="display:none"> 
    <a href="#" id="click2">Click to show other div</a> 
    <br> 
    Ut accumsan dignissim lorem non posuere.Aliquam iaculis nibh ultricies sem amet.Class aptent taciti sociosqu ad posuere. 
</div> 

JS

$(document).ready(function() { 
    $('#click1').click(function() { 
     $('#box1').hide("slide", { 
      direction: "left" 
     }, 1000); 
     $('#box2').show("slide", { 
      direction: "right" 
     }, 1000); 
    }); 
    $('#click2').click(function() { 
     $('#box2').hide("slide", { 
      direction: "right" 
     }, 1000); 
     $('#box1').show("slide", { 
      direction: "left" 
     }, 1000); 
    }); 
}); 

這裏是的jsfiddle鏈接與我有什麼到目前爲止http://jsfiddle.net/rayshinn/abNmN/4/

的問題是,當我點擊鏈接並調用第二個隱藏div j的幻燈片動畫進入到位。有沒有一種方法可以在沒有div彈出/跳躍效果的情況下從左至右創建流暢的動畫?

謝謝你的幫助。

+0

謝謝@BaconJuice! – 2015-10-05 14:16:28

回答

3

在相對定位的包裝中使用絕對定位。

Fiddle exemple(更新)

HTML

<div id="wrapper"> 
    <div class="slidingDiv" id="box1">...</div> 
    <div class="slidingDiv" id="box2" style="display:none">...</div> 
</div> 

CSS

#wrapper { 
    position:relative; 
} 

#wrapper div { 
    position:absolute; 
    top:0; 
} 

的Javascript自動高度計算

var maxHeight = 0; 
$('.slidingDiv').each(function() { 
    if($(this).height() > maxHeight) maxHeight = $(this).height(); 
}); 
$('#wrapper').height(maxHeight); 
+0

偉大的解決方案!然而,由於#wrapper div {position:absolute}屬性,包裝器中的所有div現在似乎都堆疊在一起。有關此修復的任何想法?再次感謝。 – BaconJuice 2013-04-25 19:07:23

+1

問題是,當您使用position:relative與絕對定位的元素相對時,包裝器的高度不是由瀏覽器設置的。您有2個解決方案來解決此問題。 第一個是爲包裝的樣式添加一個固定值。第二個是添加一個小腳本,它會根據包裝器內部組件的大小自動計算包裝器的高度。我將用第二種解決方案編輯我的帖子。 – pdegand59 2013-04-25 19:51:00

+0

完美作品,謝謝! – BaconJuice 2013-04-26 15:35:41