常用外掛二、全屏外掛fullPage.js
一、fullPage引入和使用
1、引入外掛
全屏外掛fullPage.js依賴jQuery。我下載的是fullPage2.9.6版本,依賴jQuery1.6.0及以上的版本。
先引入jQuery檔案,再引入外掛:
<link rel="stylesheet" type="text/css" href="../jquery.fullPage.css" /> <script src="https://code.jquery.com/jquery-1.9.0.js"></script> <script type="text/javascript" src="../jquery.fullPage.js"></script>
2、編寫HTML
預設情況下,每一螢幕的程式碼都需要有DIV包裹,並且設定DIV的類名為section,預設情況下,第一個setion將作為首頁顯示在頁面上。
<div id="fullpage"> <div class="section">section 1</div> <div class="section">section 2</div> <div class="section">section 3</div> <div class="section">section 4</div> </div>
假如你需要讓某一個section作為首頁的第一屏展示,你只需要給這個section新增一個active的類,Fullpage會自動優先展示這個螢幕,例如定義下面的程式碼:
<div class="section active">section 3</div>
Fullpage自帶左右滑動的幻燈片,只需要在section中新增DIV元素,並且給DIV元素新增slide類,FUllpage會自動生成幻燈片特效,例如下面的程式碼:
<div id="section"> <div class="slide">slide 1</div> <div class="slide">slide 2</div> <div class="slide">slide 3</div> <div class="slide">slide4</div> </div>
3、初始化FullPage
$(document).ready(function() {
$('#fullpage').fullpage();
});
fullPage函式可以傳入引數options,options是一個物件,用於配置fullPage。
比如如果需要迴圈演示,即最後一頁滾動後跳轉到第一頁,將選項continuousVertical設定為true。
$(document).ready(function() {
$('#fullpage').fullpage({continuousVertical:true});
});
二、fullPage的引數、函式、回撥函式
1、引數
controlArrows | true | 是否使用控制箭頭向左或向右移動幻燈片 |
verticalCentered | true | 初始化後,是否垂直居中網頁的內容。如果你想自定義元素的位置,那就設定為false,在外掛初始化後呼叫afterrender回撥函式載入其它的指令碼庫設定你網頁的內容 |
resize | true | 在視窗改變大小後,自動調整網頁中字型的大小。這個引數可能舊版有的,但2.9.6沒有這個引數。網上其他文章很多寫到這個引數。 |
scrollingSpeed | 700 | 每個螢幕滾動動畫執行的時間,單位為毫秒(ms) |
sectionsColor | [] | 每個section的CSS背景演示。值為陣列。若螢幕個數多於設定的顏色個數,多的螢幕預設沒有背景顏色;若螢幕個數少於設定的顏色個數,那麼後面顏色不起作用。 |
anchors | [] | 定義導航的錨文字。覽器通過此錨文字連結可以支援前進和後退按鈕功能。這個可作為使用者的書籤,當用戶開啟帶有錨文字的URL時,Fullpage可以自動跳轉到對應的section螢幕或者slide幻燈片位置。注意,錨文字其實就是id,應當是唯一的。 |
lockAnchors | false | 是否鎖定錨點。如果設定為true,那麼定義滾動時連結中的錨點不變,但函式、回撥還是可以訪問到錨點。這個配置使用的比較少。 |
loopHorizontal | true | 水平的幻燈片是否迴圈切換 |
continuousHorizontal | false | 幻燈片向左滾動到第一個,是否應該直接滾動到最後一個;或向右滾動到最有一個是否應該直接滾動到第一個。和loopHorizontal不相容。擴充套件功能,並要求fullPage>=2.8.3 |
continuousVertical | false | 螢幕向下滾動到最後一個是否應該直接滾動到第一個;或向上滾動到第一個是否應該直接滾動到最後一個。和loopTop、loopBottom、瀏覽器任何scrollBar(scrollBar:true或autoScrolling:false)都不相容。如果同時設定continuousVertical、loopTop/loopBottom為true,保留的是looTop/loopBottom為true的效果。 |
loopTop | false | 滾動到第一屏後,是否循序滾動到最後一屏(循序滾動是指從第一屏挨個滾動到最後一屏,滾動速度會加快) |
loopBottom | false | 滾動到最後一屏後,是否循序滾動到第一個(循序滾動是指從最後一屏挨個滾動到第一屏,滾動速度會加快) |
css3 | true | 使用JS還是CSS3滾動螢幕或幻燈片。如果設定為true,但瀏覽器不支援CSS3,將會用jQuery回撥函式替代。開啟這個屬性,對於支援CSS3的平板電腦、移動裝置,可以加快動畫速度。 |
autoScrolling | true | 螢幕是否自動滾動,還是使用者觸發才會滾動。設定為true,使用者拉動滾動條,會自動滾動到下一屏;如果為false,使用者拉動多少,往下動多少距離。 |
fitToSection | true | 是否自適應整個視窗的空間。設定為true時,停止滾動時當前屏將填充到整個頁面,否者使用者可以停留在網頁的任何位置。 |
scrollBar | false | 是否使用瀏覽器的滾動條。設定為true時,autoScrolling配置仍然生效,使用者可以拉動滾動條。效果和滾動滑鼠滾輪一樣。 |
paddingTop | 0 | 設定每個屏的上內邊距。值是數值 + 單位,如:paddingTop:'10px'。在使用固定頭部的時候有用,可以為其留下顯示空間。 |
paddingBottom | 0 | 設定每個屏的下內邊距。和paddingTop類似。在使用固定底部的時候有用,可以為其留下顯示空間。 |
fixedElements | null | 固定元素,預設為null,需要配置一個jquery選擇器。在頁面滾動時,fixElements設定的元素不滾動(通過將這個元素移到<body>下面)。 |
normalScrollElements | null | 如果你有些元素需要避免自滾動,你需要設定這個選項。值要設定為這些元素的 jQuery選擇器,比如: '#element1, .element2'。設定完後,當滑鼠在這些元素上拉動滾輪時,不會觸發自滾動。這裡不要把屏或幻燈片設定為避免自滾動。 |
normalScrollElementTouchThreshold | 5 | 在觸控裝置上起作用。但具體作用是? |
bigSectionsDestination | null | 當屏的大小大於視口的大小時,是顯示哪一部分。可選值為null,top,bottom。預設值與滾動方向有關,如果是向下滾動到當前屏,預設值是top;如果是向上滾動到當前屏,預設值是bottom。 |
keyboardScrolling | true | 能否通過鍵盤導航,即切換屏/幻燈片 |
touchSensitivity | 5 | 瀏覽器視窗的寬度/高度的百分比,用於確定多遠的觸控滑動可以切換到下一屏或下一個幻燈片 |
scrollHorizontally | false | 能夠通過滑鼠滾動或觸控板的滾動條去滾動。這是擴充套件功能,要求fullPage>=2.8.3。 |
animateAnchor | true | 當網頁的URL中有錨文字的時候,定位到屏或幻燈片時,是否通過動畫的形式(由某個屏/幻燈片切換到當前屏/幻燈片的動畫)。true表示通過動畫,false表示直接顯示效果。 |
recordHistory | true | 是否要將網頁滾動的狀態記錄到瀏覽器歷史訪問記錄中。如果加入,可支援後退、前進。當autoScrolling值為false,將會取消自動置位false。 |
menu | false | 用來指定和屏關聯的選單。當滾動到某一屏時,會為該選單子元素加上active類。要讓選單子元素和屏對應起來,需要給選單子元素新增一個HTML5的自定義屬性(data-menuanchor),需要和錨文字設定相同的內容。 |
navigation | false | 如果設定為true,將會顯示一個小圓圈組成的快速導航欄。顯示在幻燈片左方或右方。 |
navigationPosition | none | 結合引數navigation一起使用,用於設定快速導航欄的位置,可以設定為字元left/right。 |
navigationTooltips | [] | 定義當navigation設定為true的時候,滑鼠移動到快速導航上面的提示文字,每個屬性中間用英文半形逗號(,)隔開。 |
showActiveTooltip | false | 設定是否一直顯示navigationTooltips中當前屏對應的提示文字。 |
slidesNavigation | false | 同navigation。不過這個引數是用於設定幻燈片的,並且導航顯示位置不同,顯示在幻燈片上方或下方。 |
slidesNavPosition | bottom | slidesNavigation中設定的導航選單顯示的位置,可選的設定值為top/bottom。如果你想修改導航距離頂部的距離或者顏色等樣式,需要修改CSS樣式。 |
scrollOverflow | false | 這個選項IE8不相容,用於設定當內容超過螢幕的高度的時候,是否裁切多餘的內容。 設定會true時,多餘內容會被自動裁切。可以使用afterRender回撥函式來處理多出的內容; 設定為false時,多餘內容不會被裁切,但剩下的內容仍然不能顯示。可以通過scrolloverflow.min.js外掛來自定義滾動事件。這個外掛要在jQuery之後、fullPage.js之前引入 |
sectionSelector | .section | 定義用於選擇屏的jQuery選擇器。有時候為了和避免和其他外掛衝突,需要改成.section以外的其他值。 |
slideSelector | .slide | 定義用於選擇幻燈片的jQuery選擇器。有時候為了和避免和其他外掛衝突,需要改成.section以外的其他值。 |
responsiveWidth | 0 | 當視窗縮放到這個寬度值以下,螢幕不再自滾動(autoScrolling:false),而是會出現瀏覽器自帶的滾動條。並且會給<body>加上fp-responsive類,便於使用者設定自適應樣式。 |
responsiveHeight | 0 | 當視窗縮放到這個高度值以下,螢幕不再自滾動(autoScrolling:false)而是會出現瀏覽器自帶的滾動條。並且會給<body>加上fp-responsive類,便於使用者設定自適應樣式。 |
疑問:
1)scrollBar表示顯示瀏覽器滾動條。當fitToSection為false,即使autoScrolling設定為true,拉動瀏覽器滾動條不會發生自滾動,但是拉動滑鼠滾輪會。這跟文件描述似乎不一致
2)normalScrollElementTouchThreshold啥意思
3)continuousHorizontal、scrollHorizontally等不起作用
答:需要安裝擴充套件檔案。目前需要收費。
選項menu使用案例:
<ul id="myMenu">
<li data-menuanchor="firstPage" class="active"><a href="#firstPage">First section</a></li>
<li data-menuanchor="secondPage"><a href="#secondPage">Second section</a></li>
<li data-menuanchor="thirdPage"><a href="#thirdPage">Third section</a></li>
<li data-menuanchor="fourthPage"><a href="#fourthPage">Fourth section</a></li>
</ul>
<div id="fullpage">
<div class="section">section 1</div>
<div class="section">section 2</div>
<div class="section">section 3</div>
<div class="section">section 4</div>
</div>
<script>
$('#fullpage').fullpage({
anchors: ['firstPage', 'secondPage', 'thirdPage', 'fourthPage', 'lastPage'], //滾動到某屏時會給把錨點值賦給該屏的data-anchor屬性
menu: '#myMenu'
});
</script>
2、方法
使用:$.fn.fullpage.方法。比如:$.fn.fullpage.moveSectionUp()。
moveSectionUp() | 向上滾動一屏。如:$.fn.fullpage.moveSectionUp() |
moveSectionDown() | 向下滾動一屏。如:$.fn.fullpage.moveSectionDown() |
moveTo(section, slide) | 滾動到指定屏的指定幻燈片。section可以是呼叫fullPage()的anchors引數指定的值,也可以是數值,1表示第一屏;slide是數值,0表示第一個幻燈片。 比如: $.fn.fullpage.moveTo('firstSlide', 2);跳轉到firstSlide屏的第三個幻燈片 $.fn.fullpage.moveTo(1)跳轉到第一屏的第一個幻燈片。 |
moveSlideRight() | 向右滾動到下一個幻燈片。 |
moveSlideLeft() | 向左滾動到上一個幻燈片。 |
setAutoScrolling(boolean) | 設定頁面滾動方式,設定為 true 時自動滾動。為false時顯示瀏覽器自帶的滾動條 |
fitToSection() | 滾動離得最近的活動屏,讓活動屏適應視口顯示 |
setLockAnchors(lockAnchors) | 是否鎖定錨點。lockAnchors為boolean。設定為true時,錨點不會影響url;為false時,錨點會影響url的值 |
setAllowScrolling(boolean, [directions]) | 新增或移除滑鼠滾輪/觸控板的滾動允許值。預設是都允許的。 引數value是boolean,true表示增加滾動允許值,false表示移除滾動允許值。 引數direction可為all, up, down, left, right,或者這幾個值的結合。多個值之間用逗號分隔,比如:$.fn.fullpage.setAllowScrolling(false, 'down, right')。 |
setKeyboardScrolling(boolean, [directions]) | 新增或移除鍵盤的滾動允許值。比如:$.fn.fullpage.setKeyboardScrolling(false, 'down, right'); 引數value是boolean,true表示增加滾動允許值,false表示移除滾動允許值。 引數direction可為all, up, down, left, right,或者這幾個值的結合。多個值之間用逗號分隔,比如:$.fn.fullpage.setKeyboardScrolling(false, 'down, right'); |
setScrollingSpeed() | 定義以毫秒為單位的滾動速度。 |
destroy(type) | 引數為空或'all'。如果傳入all,所有fullPage.js生成的html標籤和樣式都會移除。 |
3、回撥函式
afterLoad | 滾動到某一屏後的回撥函式,接收 anchorLink 和 index 兩個引數,anchorLink 是錨鏈接的名稱,index 是序號,從1開始計算 |
onLeave | 滾動前的回撥函式,接收 index、nextIndex 和 direction 3個引數:index 是離開的“頁面”的序號,從1開始計算;nextIndex 是滾動到的“頁面”的序號,從1開始計算;direction 判斷往上滾動還是往下滾動,值是 up 或 down。 |
afterRender | 頁面結構生成後的回撥函式,或者說頁面初始化完成後的回撥函式 |
onSlideLeave | 滾動到某一水平滑塊後的回撥函式,與 afterLoad 類似,接收 anchorLink、index、slideIndex、direction 4個引數 |
afterSlideLoad | 某一水平滑塊滾動前的回撥函式,與 onLeave 類似,接收 anchorLink、index、slideIndex、direction 4個引數 |
$('#fullpage').fullpage({
anchors: ['firstPage', 'secondPage', 'thirdPage', 'fourthPage', 'lastPage'],
afterLoad: function(anchorLink, index){
var loadedSection = $(this);
if(index == 3){
alert("Section 3 ended loading");
}
if(anchorLink == 'secondSlide'){
alert("Section 2 ended loading");
}
}
});