1. 程式人生 > >常用外掛二、全屏外掛fullPage.js

常用外掛二、全屏外掛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、引數

controlArrowstrue是否使用控制箭頭向左或向右移動幻燈片
verticalCenteredtrue初始化後,是否垂直居中網頁的內容。如果你想自定義元素的位置,那就設定為false,在外掛初始化後呼叫afterrender回撥函式載入其它的指令碼庫設定你網頁的內容
resizetrue在視窗改變大小後,自動調整網頁中字型的大小。這個引數可能舊版有的,但2.9.6沒有這個引數。網上其他文章很多寫到這個引數。
scrollingSpeed700每個螢幕滾動動畫執行的時間,單位為毫秒(ms)
sectionsColor[]每個section的CSS背景演示。值為陣列。若螢幕個數多於設定的顏色個數,多的螢幕預設沒有背景顏色;若螢幕個數少於設定的顏色個數,那麼後面顏色不起作用。
anchors[]定義導航的錨文字。覽器通過此錨文字連結可以支援前進和後退按鈕功能。這個可作為使用者的書籤,當用戶開啟帶有錨文字的URL時,Fullpage可以自動跳轉到對應的section螢幕或者slide幻燈片位置。注意,錨文字其實就是id,應當是唯一的。
lockAnchorsfalse是否鎖定錨點。如果設定為true,那麼定義滾動時連結中的錨點不變,但函式、回撥還是可以訪問到錨點。這個配置使用的比較少。
loopHorizontaltrue水平的幻燈片是否迴圈切換
continuousHorizontalfalse幻燈片向左滾動到第一個,是否應該直接滾動到最後一個;或向右滾動到最有一個是否應該直接滾動到第一個。和loopHorizontal不相容。擴充套件功能,並要求fullPage>=2.8.3
continuousVerticalfalse螢幕向下滾動到最後一個是否應該直接滾動到第一個;或向上滾動到第一個是否應該直接滾動到最後一個。和loopTop、loopBottom、瀏覽器任何scrollBar(scrollBar:true或autoScrolling:false)都不相容。如果同時設定continuousVertical、loopTop/loopBottom為true,保留的是looTop/loopBottom為true的效果。
loopTopfalse滾動到第一屏後,是否循序滾動到最後一屏(循序滾動是指從第一屏挨個滾動到最後一屏,滾動速度會加快)
loopBottomfalse滾動到最後一屏後,是否循序滾動到第一個(循序滾動是指從最後一屏挨個滾動到第一屏,滾動速度會加快)
css3true使用JS還是CSS3滾動螢幕或幻燈片。如果設定為true,但瀏覽器不支援CSS3,將會用jQuery回撥函式替代。開啟這個屬性,對於支援CSS3的平板電腦、移動裝置,可以加快動畫速度。
autoScrollingtrue螢幕是否自動滾動,還是使用者觸發才會滾動。設定為true,使用者拉動滾動條,會自動滾動到下一屏;如果為false,使用者拉動多少,往下動多少距離。
fitToSectiontrue是否自適應整個視窗的空間。設定為true時,停止滾動時當前屏將填充到整個頁面,否者使用者可以停留在網頁的任何位置。
scrollBarfalse是否使用瀏覽器的滾動條。設定為true時,autoScrolling配置仍然生效,使用者可以拉動滾動條。效果和滾動滑鼠滾輪一樣。
paddingTop0    設定每個屏的上內邊距。值是數值 + 單位,如:paddingTop:'10px'。在使用固定頭部的時候有用,可以為其留下顯示空間。
paddingBottom0設定每個屏的下內邊距。和paddingTop類似。在使用固定底部的時候有用,可以為其留下顯示空間。
fixedElementsnull固定元素,預設為null,需要配置一個jquery選擇器。在頁面滾動時,fixElements設定的元素不滾動(通過將這個元素移到<body>下面)。
normalScrollElementsnull如果你有些元素需要避免自滾動,你需要設定這個選項。值要設定為這些元素的 jQuery選擇器,比如: '#element1, .element2'。設定完後,當滑鼠在這些元素上拉動滾輪時,不會觸發自滾動。這裡不要把屏或幻燈片設定為避免自滾動。
normalScrollElementTouchThreshold5在觸控裝置上起作用。但具體作用是?
bigSectionsDestinationnull當屏的大小大於視口的大小時,是顯示哪一部分。可選值為null,top,bottom。預設值與滾動方向有關,如果是向下滾動到當前屏,預設值是top;如果是向上滾動到當前屏,預設值是bottom。
keyboardScrollingtrue能否通過鍵盤導航,即切換屏/幻燈片
touchSensitivity5瀏覽器視窗的寬度/高度的百分比,用於確定多遠的觸控滑動可以切換到下一屏或下一個幻燈片
scrollHorizontallyfalse能夠通過滑鼠滾動或觸控板的滾動條去滾動。這是擴充套件功能,要求fullPage>=2.8.3。
animateAnchortrue當網頁的URL中有錨文字的時候,定位到屏或幻燈片時,是否通過動畫的形式(由某個屏/幻燈片切換到當前屏/幻燈片的動畫)。true表示通過動畫,false表示直接顯示效果。
recordHistorytrue是否要將網頁滾動的狀態記錄到瀏覽器歷史訪問記錄中。如果加入,可支援後退、前進。當autoScrolling值為false,將會取消自動置位false。
menufalse用來指定和屏關聯的選單。當滾動到某一屏時,會為該選單子元素加上active類。要讓選單子元素和屏對應起來,需要給選單子元素新增一個HTML5的自定義屬性(data-menuanchor),需要和錨文字設定相同的內容。
navigationfalse如果設定為true,將會顯示一個小圓圈組成的快速導航欄。顯示在幻燈片左方或右方。
navigationPositionnone結合引數navigation一起使用,用於設定快速導航欄的位置,可以設定為字元left/right。
navigationTooltips[]定義當navigation設定為true的時候,滑鼠移動到快速導航上面的提示文字,每個屬性中間用英文半形逗號(,)隔開。
showActiveTooltipfalse 設定是否一直顯示navigationTooltips中當前屏對應的提示文字。
slidesNavigationfalse同navigation。不過這個引數是用於設定幻燈片的,並且導航顯示位置不同,顯示在幻燈片上方或下方。
slidesNavPositionbottomslidesNavigation中設定的導航選單顯示的位置,可選的設定值為top/bottom。如果你想修改導航距離頂部的距離或者顏色等樣式,需要修改CSS樣式。
scrollOverflowfalse

這個選項IE8不相容,用於設定當內容超過螢幕的高度的時候,是否裁切多餘的內容。

設定會true時,多餘內容會被自動裁切。可以使用afterRender回撥函式來處理多出的內容;

設定為false時,多餘內容不會被裁切,但剩下的內容仍然不能顯示。可以通過scrolloverflow.min.js外掛來自定義滾動事件。這個外掛要在jQuery之後、fullPage.js之前引入

sectionSelector.section定義用於選擇屏的jQuery選擇器。有時候為了和避免和其他外掛衝突,需要改成.section以外的其他值。
slideSelector.slide定義用於選擇幻燈片的jQuery選擇器。有時候為了和避免和其他外掛衝突,需要改成.section以外的其他值。
responsiveWidth0當視窗縮放到這個寬度值以下,螢幕不再自滾動(autoScrolling:false),而是會出現瀏覽器自帶的滾動條。並且會給<body>加上fp-responsive類,便於使用者設定自適應樣式。
responsiveHeight0當視窗縮放到這個高度值以下,螢幕不再自滾動(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");
		}
	}
});