2012-03-25 205 views
13

所以我很新的Javascript和JQuery。我想創建的是雙列頁面,左列的鏈接將導致右側的div從左向右水平滑動,並在再次單擊時滑出視圖。我知道我需要使用幻燈片切換效果,但我無法實現它的方式,每個單獨的鏈接導致不同的div滑動...我試圖調整我通過谷歌搜索找到幾個jsfiddles,但談到JavaScript時,我很迷茫。水平滑動div與JQuery

到目前爲止,這是唯一的小提琴,我已經能夠成功地調整... http://jsfiddle.net/bridget_kilgallon/HAQyK/
但這些幻燈片垂直,並且點擊時加載所有的div。

下面是我的希望我沒有任何JavaScript的頁面佈局創造了小提琴...... http://jsfiddle.net/bridget_kilgallon/NhanG/

請幫幫忙! :) -Bridget

回答

34

不幸的是,jQuery沒有現成的「水平」滑動動畫。除非你使用像jQuery UI這樣的更大的包。但我不認爲這是必要的。

你唯一想要的就是創造性地使用jQuery中的animate()函數來實現效果。

我不知道你會想要去的,因爲描述是含糊的所以我做了2例在面板開關影響很小其中之一:

http://jsfiddle.net/sg3s/rs2QK/ - 從左邊的這一個幻燈片面板打開,向右靠近

http://jsfiddle.net/sg3s/RZpbK/ - 面板從左向右滑動打開,然後靠近左側打開新面板。

資源:

你不能用純CSS做到這一點,還沒有反正。對轉換的支持是基本的,並且僅限於基於webkit的瀏覽器。所以,既然你需要jQuery來巧妙地使用它,但是在使用JS之前,你仍然需要確保你儘可能的使用CSS風格。請注意,我在JS中不使用任何視覺樣式/操作。

+0

第一把小提琴恰到好處。按照您的建議添加腳本之前,我會確保創建我的css。這讓我的生活變得更輕鬆 - 非常感謝你! :D – 2012-03-25 22:58:26

+0

想想你想做什麼,並相應地在css中放置元素,以便它們處於最佳位置,以便在需要時立即啓動。 – sg3s 2012-03-25 23:16:44

+0

這裏有一個我到目前爲止css明智的小提琴:http://jsfiddle.net/bridget_kilgallon/sMDyB/4/小提琴工作正常,但轉換不在Dreamweaver中工作..任何想法?再次感謝-BK – 2012-03-26 02:23:12

1

您可以使用jQuery UI中的effects模塊並使用show('slide')。看看http://jsfiddle.net/HAQyK/1/

+0

這裏一個DIV的另一個小提琴:http://jsfiddle.net/bridget_kilgallon/6eKGj/這幾乎正是我要找的除外。 .. 1.所有的div出現在鏈接被點擊時 - 我怎樣才能鏈接到每個單獨的div? 2.有什麼辦法讓鏈接在第二次點擊鏈接時反向滑動? (即click1上的幻燈片1 click2上的幻燈片離開屏幕) – 2012-03-25 22:50:48

2

如果沒有使用JavaScript,只能使用CSS轉換。雖然這些非常令人印象深刻,但就我發現的情況而言,它們並不是特別好,用於條件動畫;他們基本上可以從一個起點到另一個點然後返回(基於瀏覽器本身可用的本地瀏覽器事件),使用JS可以添加/刪除其他類並讓元素移動到您的內容中,但不是用'just'CSS(儘管我很想在這方面證明是錯誤的)。

我已經能夠拿出,到目前爲止最好的是:

#left { 
    float:left; 
    width:200px; 
} 
.right { 
    height: 0; 
    background-color: #fff; 
    margin-left: 205px; 
    overflow: hidden; 
    -webkit-transition: all 1s linear; 
    -ms-transition: all 1s linear; 
    -o-transition: all 1s linear; 
    -moz-transition: all 1s linear; 
    transition: all 1s linear; 
} 
.right:target { 
    display: block; 
    height: 5em; 
    background-color: #ffa; 
    -webkit-transition: all 1s linear; 
    -ms-transition: all 1s linear; 
    -o-transition: all 1s linear; 
    -moz-transition: all 1s linear; 
    transition: all 1s linear; 
}​ 

JS Fiddle demo

這不會從側面滑動(儘管你可以做到這一點,如果你想),因爲它看起來不太好,因爲內容重新迴流,因爲元素的寬度發生了變化。


編輯,因爲我想我可能誤解了原來的問題的一部分:

...我沒有任何JavaScript

喜歡既然如此,以及評論(下)似乎表明,jQuery的一個好的選擇,這可能是值得作爲示範:

​$('#left a').click(
    function(){ 
     var div = $('div').not('#left').eq($(this).index('#left a')); 
     var others = $('div[data-visible="true"]'); 
     others.each(
      function(){ 
       $(this).animate({ 
        'left' : '2000px' 
       },1000,function(){ 
        $(this).removeAttr('style data-visible'); 
       }); 
      }); 
     if (div.attr('data-visible')) { 
      div.animate({ 
       'left' : '2000px' 
      },1000,function(){ 
       $(this).removeAttr('style data-visible'); 
      }); 
     } 
     else { 
      div.animate({ 
       'left' : '210px' 
      },1000).attr('data-visible',true); 
     } 
    });​​​​​​​​ 

JS Fiddle demo

參考文獻:

+0

非常好,感謝回覆!我印象深刻,你不需要腳本來做到這一點。我知道你可以使用animate函數來改變div的寬度來創建一個水平滑動,但我並不是對內容變化寬度感到興奮(我認爲這就是你所指的重新流動)。我不反對使用jQuery創建幻燈片 - 我只是對它很新穎。你偶然會知道會產生這種效果的腳本嗎? – 2012-03-25 22:10:53

+0

是的;當我閱讀「我不想使用任何javascript」時,我想我誤解了你的意思。 ......這是漫長的一天...... = /我不知道一個預先存在的腳本(儘管我懷疑有很多),但這裏似乎有效。如果看到編輯,請按照'


'=) – 2012-03-25 22:32:02

+0

rad。那真好;那真甜!唯一的問題是點擊同一個鏈接兩次div滑過一路? – 2012-03-25 22:37:02

0

這是您想要的代碼。 經證實,適用於IE,Safari,Chrome,Firefox等。

以下是HTML部分。

<div id="slide-wrap" style="width:1000px; height:200px; overflow:hidden; padding:0 auto;"> 
     <div id="inner-wrap" style="float:left;"> 
      <!-- 'Put Inline contains here like below.' --> 
      <div class='containBox' style="width:250px; height:100%; float:left; display:inline-block;"></div> 
      <!-- ... --> 
      <div class='containBox' style="width:250px; height:100%; float:left; display:inline-block;"></div> 
      <!-- 'Put Inline contains here like above.' --> 
     </div> 
     <div style="display: block; width:40px; height:60px; position: absolute; margin-left:0px; margin-top:40px"> 
      <img id='scroll_L_Arrow' src='../assets/img/l-arrow.png' onclick="scrollThumb('Go_L')"/> 
     </div> 
     <div style="display: block; width:40px; height:60px; position: absolute; margin-left:960px; margin-top:40px"> 
      <img id='scroll_R_Arrow' src='../assets/img/r-arrow.png' onclick="scrollThumb('Go_R')"/> 
     </div> 
    </div> 

這裏是jQuery在JavaScript函數中的一部分。

 function scrollThumb(direction) { 
     if (direction=='Go_L') { 
      $('#slide-wrap').animate({ 
       scrollLeft: "-=" + 250 + "px" 
      }, function(){ 
       // createCookie('scrollPos', $('#slide-wrap').scrollLeft()); 
      }); 
     }else 
     if (direction=='Go_R') { 
      $('#slide-wrap').animate({ 
       scrollLeft: "+=" + 250 + "px" 
      }, function(){ 
       // createCookie('scrollPos', $('#slide-wrap').scrollLeft()); 
      }); 
     } 
     } 

對於隱藏箭頭請看這裏。 Detect end of horizontal scrolling div with jQuery

0
$(function() { 
$("#wizardV").steps({ 
    headerTag: "h2", 
    bodyTag: "section", 
    transitionEffect: "slideLeft", 
    stepsOrientation: "vertical" 
}); 
}); 

* //嚮導是一個包含所有內容