06-移動(dòng)端開發(fā)教程-fullpage框架

CSS3的新特性已經(jīng)講完了撞羽,接下來(lái)我們看一下jQuery的一個(gè)全屏jQuery全屏滾動(dòng)插件fullPage.js徐矩。我們經(jīng)常見(jiàn)到一些全屏的特絢麗頁(yè)面抱完,手指或者鼠標(biāo)滑動(dòng)一下就是一整屏切換蔚舀,而且還有各種效果附较。比如:全屏滑動(dòng)案例

下面我們就介紹一下jQuery的fullPage.js的如何使用及常用的配置吃粒。

1. fullpage.js的主要功能

fullPage.js是一個(gè)基于jquery的插件,它能很方便的制作出全屏網(wǎng)站拒课,github地址徐勃。

主要功能有:

  1. 支持鼠標(biāo)滾動(dòng)事示。
  2. 支持前后退和鍵盤控制。
  3. 多個(gè)回調(diào)函數(shù)僻肖。
  4. 支持手機(jī)肖爵,平板觸摸事件。
  5. 支持css3動(dòng)畫臀脏。
  6. 支持窗口縮放劝堪。
  7. 窗口縮放時(shí)自動(dòng)調(diào)整。
  8. 可設(shè)置滾動(dòng)寬度揉稚,背景顏色秒啦,滾動(dòng)速度,循環(huán)選項(xiàng)搀玖,回調(diào)帝蒿,文本對(duì)齊方式等。

2. fullpage.js的使用

2.1 兼容性

fullpage.js是jQuery的插件巷怜,需要依賴jQuery葛超,要求jQuery最低的版本是1.6+。瀏覽器能兼容到ie8+及其他現(xiàn)代瀏覽器延塑。

2.2 下載fullpage.js

第一種方法: 直接下載壓縮包绣张,地址

第二種方法: 使用前端的包管理工具

// With bower
bower install fullpage.js

// With npm
npm install fullpage.js

第三種: CDNJS地址:https://cdnjs.com/libraries/fullPage.js

2.3 引入文件及文件依賴關(guān)系

fullpage.js插件依賴:fullpage的css文件,jQuery关带,如果設(shè)置了options中css3: false*侥涵,如果你用除了jQuery的默認(rèn)linearswing緩動(dòng)的效果之外的緩動(dòng)效果的話,需要添加 jQuery UI library宋雏。

引入依賴的文件芜飘,注意順序!

<!--引入fullpage.js插件的樣式磨总,必須-->
<link rel="stylesheet" type="text/css" href="jquery.fullPage.css" />

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<!-- 如果是ie8瀏覽器或者設(shè)置了css3: false 那么需要引入jQuery的easing緩動(dòng)插件嗦明,默認(rèn)可以省略就行了。 -->
<script src="vendors/jquery.easings.min.js"></script>

<!--引入jQuery的插件fullpage.js核心文件-->
<script type="text/javascript" src="jquery.fullPage.js"></script>

2.4 編寫頁(yè)面結(jié)構(gòu)

編寫html的頁(yè)面結(jié)構(gòu)蚪燕,每個(gè)section獨(dú)占一屏幕娶牌,默認(rèn)顯示第一屏。

<div id="fullpage">
  <div class="section">第一屏</div>
  <div class="section">第二屏</div>
  <div class="section">第三屏</div>
  <div class="section">第四屏</div>
</div>

如果需要從非第一屏開始顯示馆纳,則需要給對(duì)應(yīng)的section添加active樣式類即可诗良。

<div class="section active">第三屏</div>

2.5 編寫初始化的腳本

$(function() {
  $('#fullpage').fullpage();
});

完整代碼:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>全屏插件</title>
  <link rel="stylesheet" href="./js/fullpage/jquery.fullpage.css">
  <script src="./js/jquery-1.11.3.min.js"></script>
  <script src="./js/fullpage/jquery.fullpage.min.js"></script>
</head>
<body>
  <div id="dowebok">
    <div class="section">
      <h3>第一屏</h3>
    </div>
    <div class="section">
      <h3>第二屏</h3>
    </div>
    <div class="section">
      <h3>第三屏</h3>
    </div>
    <div class="section">
      <h3>第四屏</h3>
    </div>
  </div>
  <script>
    $(function () {
      $('#dowebok').fullpage();
    });
  </script>
</body>
</html>

3. fullpage的初始化的設(shè)置

在初始化全屏插件的時(shí)候,有很多設(shè)置項(xiàng)鲁驶。如下所示:

$(document).ready(function() {
    $('#fullpage').fullpage({
        //Navigation
        menu: '#menu',
        lockAnchors: false,
        anchors:['firstPage', 'secondPage'],
        navigation: false,
        navigationPosition: 'right',
        navigationTooltips: ['firstSlide', 'secondSlide'],
        showActiveTooltip: false,
        slidesNavigation: false,
        slidesNavPosition: 'bottom',

        //Scrolling
        css3: true,
        scrollingSpeed: 700,
        autoScrolling: true,
        fitToSection: true,
        fitToSectionDelay: 1000,
        scrollBar: false,
        easing: 'easeInOutCubic',
        easingcss3: 'ease',
        loopBottom: false,
        loopTop: false,
        loopHorizontal: true,
        continuousVertical: false,
        continuousHorizontal: false,
        scrollHorizontally: false,
        interlockedSlides: false,
        dragAndMove: false,
        offsetSections: false,
        resetSliders: false,
        fadingEffect: false,
        normalScrollElements: '#element1, .element2',
        scrollOverflow: false,
        scrollOverflowReset: false,
        scrollOverflowOptions: null,
        touchSensitivity: 15,
        normalScrollElementTouchThreshold: 5,
        bigSectionsDestination: null,

        //Accessibility
        keyboardScrolling: true,
        animateAnchor: true,
        recordHistory: true,

        //Design
        controlArrows: true,
        verticalCentered: true,
        sectionsColor : ['#ccc', '#fff'],
        paddingTop: '3em',
        paddingBottom: '10px',
        fixedElements: '#header, .footer',
        responsiveWidth: 0,
        responsiveHeight: 0,
        responsiveSlides: false,
        parallax: false,
        parallaxOptions: {type: 'reveal', percentage: 62, property: 'translate'},

        //Custom selectors
        sectionSelector: '.section',
        slideSelector: '.slide',

        lazyLoading: true,

        //events
        onLeave: function(index, nextIndex, direction){},
        afterLoad: function(anchorLink, index){},
        afterRender: function(){},
        afterResize: function(){},
        afterResponsive: function(isResponsive){},
        afterSlideLoad: function(anchorLink, index, slideAnchor, slideIndex){},
        onSlideLeave: function(anchorLink, index, slideIndex, direction, nextSlideIndex){}
    });
});

哇有很多設(shè)置項(xiàng)鉴裹,還有事件處理程序。

他們的詳細(xì)介紹如下:

  • 選項(xiàng)
選項(xiàng) 類?????型 默認(rèn)值 說(shuō)明
verticalCentered 字符串 true 內(nèi)容是否垂直居中
resize 布爾值 false 字體是否隨著窗口縮放而縮放
slidesColor 函數(shù) 無(wú) 設(shè)置背景顏色
anchors 數(shù)組 無(wú) 定義錨鏈接
scrollingSpeed 整數(shù) 700 滾動(dòng)速度,單位為毫秒
easing 字符串 easeInQuart 滾動(dòng)動(dòng)畫方式
menu 布爾值 false 綁定菜單径荔,設(shè)定的相關(guān)屬性與 anchors 的值對(duì)應(yīng)后葛作,菜單可以控制滾動(dòng)
navigation 布爾值 false 是否顯示項(xiàng)目導(dǎo)航
navigationPosition 字符串 right 項(xiàng)目導(dǎo)航的位置,可選 left 或 right
navigationColor 字符串 #000 項(xiàng)目導(dǎo)航的顏色
navigationTooltips 數(shù)組 項(xiàng)目導(dǎo)航的 tip
slidesNavigation 布爾值 false 是否顯示左右滑塊的項(xiàng)目導(dǎo)航
slidesNavPosition 字符串 bottom 左右滑塊的項(xiàng)目導(dǎo)航的位置猖凛,可選 top 或 bottom
controlArrowColor 字符串 #fff 左右滑塊的箭頭的背景顏色
loopBottom 布爾值 false 滾動(dòng)到最底部后是否滾回頂部
loopTop 布爾值 false 滾動(dòng)到最頂部后是否滾底部
loopHorizontal 布爾值 true 左右滑塊是否循環(huán)滑動(dòng)
autoScrolling 布爾值 true 是否使用插件的滾動(dòng)方式,如果選擇 false绪穆,則會(huì)出現(xiàn)瀏覽器自帶的滾動(dòng)條
scrollOverflow 布爾值 false 內(nèi)容超過(guò)滿屏后是否顯示滾動(dòng)條
css3 布爾值 false 是否使用 CSS3 transforms 滾動(dòng)
paddingTop 字符串 0 與頂部的距離
paddingBottom 字符串 0 與底部距離
fixedElements 字符串 無(wú)
normalScrollElements 無(wú)
keyboardScrolling 布爾值 true 是否使用鍵盤方向鍵導(dǎo)航
touchSensitivity 整數(shù) 5
continuousVertical 布爾值 false 是否循環(huán)滾動(dòng)辨泳,與 loopTop 及 loopBottom 不兼容
animateAnchor 布爾值 true
  • 事件
名稱 說(shuō)明
afterLoad 滾動(dòng)到某一屏后的回調(diào)函數(shù),接收 anchorLink 和 index 兩個(gè)參數(shù)玖院,anchorLink 是錨鏈接的名稱菠红,index 是序號(hào),從1開始計(jì)算
onLeave 滾動(dòng)前的回調(diào)函數(shù)难菌,接收 index试溯、nextIndex 和 direction 3個(gè)參數(shù):index 是離開的“頁(yè)面”的序號(hào),從1開始計(jì)算郊酒;
nextIndex 是滾動(dòng)到的“頁(yè)面”的序號(hào)遇绞,從1開始計(jì)算;
direction 判斷往上滾動(dòng)還是往下滾動(dòng)燎窘,值是 up 或 down摹闽。
afterRender 頁(yè)面結(jié)構(gòu)生成后的回調(diào)函數(shù),或者說(shuō)頁(yè)面初始化完成后的回調(diào)函數(shù)
afterSlideLoad 滾動(dòng)到某一水平滑塊后的回調(diào)函數(shù)褐健,與 afterLoad 類似付鹿,接收 anchorLink、index蚜迅、slideIndex舵匾、direction 4個(gè)參數(shù)
onSlideLeave 某一水平滑塊滾動(dòng)前的回調(diào)函數(shù),與 onLeave 類似谁不,接收 anchorLink坐梯、index、slideIndex刹帕、direction 4個(gè)參數(shù)

案例1:延遲加載案例:

<!--圖片或者視頻的延遲加載, 只需要把src改成data-src -->
<img data-src="image.png">
<video>
    <source data-src="video.webm" type="video/webm" />
    <source data-src="video.mp4" type="video/mp4" />
</video>
<!--另外不能在初始化的設(shè)置:lazyLoading: true ,不能為false-->

案例2:設(shè)置不同屏的背景色

$('#fullpage').fullpage({
    sectionsColor: ['#f2f2f2', '#4BBFC3', '#7BAABE', 'whitesmoke', '#000'],
});

4. fullpage的方法

名稱 說(shuō)明
moveSectionUp() 向上滾動(dòng)
moveSectionDown() 向下滾動(dòng)
moveTo(section, slide) 滾動(dòng)到
moveSlideRight() slide 向右滾動(dòng)
moveSlideLeft() slide 向左滾動(dòng)
setAutoScrolling() 設(shè)置頁(yè)面滾動(dòng)方式烛缔,設(shè)置為 true 時(shí)自動(dòng)滾動(dòng)
setAllowScrolling() 添加或刪除鼠標(biāo)滾輪/觸控板控制
setKeyboardScrolling() 添加或刪除鍵盤方向鍵控制
setScrollingSpeed() 定義以毫秒為單位的滾動(dòng)速度

例如:

$('#moveSectionUp').click(function(e){
  e.preventDefault();
  $.fn.fullpage.moveSectionUp();
});     
  1. 配合animate.css實(shí)現(xiàn)動(dòng)態(tài)效果案例

首先說(shuō)明animate.css本身就有兼容問(wèn)題,ie9+瀏覽器可以無(wú)視轩拨,另外考慮到手機(jī)的性能践瓷,移動(dòng)端盡量不要使用大量動(dòng)畫。

一般情況下都是用戶進(jìn)入某個(gè)屏的時(shí)候亡蓉,動(dòng)畫開始啟動(dòng)入場(chǎng)晕翠,離開的時(shí)候啟動(dòng)出場(chǎng)(可以省略),然后下一屏開始入場(chǎng)。配合animate.css的問(wèn)題淋肾,animate的動(dòng)畫添加上animated樣式和具體的動(dòng)畫類型才會(huì)具有動(dòng)畫效果硫麻。如果一開始全設(shè)置好了那么只有第一屏有動(dòng)畫效果,不是我們想要的結(jié)果樊卓。

配合fullpage的onLeave事件拿愧,可以實(shí)現(xiàn)在上一屏離開的時(shí)候,給下一屏添加動(dòng)畫樣式類碌尔,并把上一屏的動(dòng)畫樣式類去掉浇辜。動(dòng)畫樣式類可以提前記錄在一個(gè)數(shù)組中或者是放到動(dòng)畫元素的自定義屬性中。例如代碼:

<div id="fullpage">
    <div class="section s1">
      <h3 class="sec-title amt amt-delay-3 lightSpeedIn" amt="lightSpeedIn">人工智能時(shí)代唾戚,學(xué)習(xí)編程讓孩子不一樣的未來(lái)柳洋!</h3>
      <div class="img-list amt amt-delay-6 bounceInUp" amt="bounceInUp">
        <img data-src="./img/s1-1.png" alt="孩子的未來(lái)">
        <img data-src="./img/s1-2.jpg" alt="孩子的未來(lái)">
        <img data-src="./img/s1-3.jpg" alt="孩子的未來(lái)">
      </div>
    </div>
    <div class="section s2">
      <h3 class="sec-title amt amt-delay-3" amt="bounceInDown">我們的理念</h3>
      <ul class="s2-l amt amt-delay-6" amt="slideInLeft">
        <li class="s2-l-item">imagine(想象):讓孩子去天馬行空;</li>
        <li class="s2-l-item">create(創(chuàng)造):通過(guò)創(chuàng)造現(xiàn)實(shí)結(jié)合起來(lái)叹坦;</li>
        <li class="s2-l-item">play(動(dòng)手玩):親自動(dòng)手創(chuàng)作項(xiàng)目熊镣;</li>
        <li class="s2-l-item">share(分享):項(xiàng)目分享給其他人;</li>
        <li class="s2-l-item">reflect(反思):對(duì)項(xiàng)目的反思和改進(jìn)募书。</li>
      </ul>
      <div class="s2-r amt amt-delay-8" amt="slideInRight">
        <img data-src="./img/s2-1.png" alt="少兒編程">
      </div>
    </div>
</div>
<script>
    $(function () {
      $('#fullpage').fullpage({
        sectionsColor: ['rgba(88,185,156, 1)', '#fff', '#DE8910', '#0da5d6', 'rgb(235, 76, 67)', 'rgb(141, 127, 219)', 'rgb(227,135,88)','rgb(98,198,188)' ],
        lazyLoading: true,
        onLeave: function (index, nextIndex, direction) {
          $('.section').find('.amt').each(function(index, elem) {
            var amt = $(elem).attr('amt');
            $(elem).removeClass(amt);
          })
     
          $('.section').eq(nextIndex-1).find('.amt').each(function(index, elem) {
            var amt = $(elem).attr('amt');
            $(elem).addClass(amt)
          })
        }
      });
    });
  </script>

fullpage.js + animate.css案例參考地址:案例


聯(lián)系老馬

對(duì)應(yīng)視頻地址:https://qtxh.ke.qq.com/
老馬qq: 515154084
老馬微信:請(qǐng)掃碼

掃碼加老馬微信

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末绪囱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子莹捡,更是在濱河造成了極大的恐慌毕箍,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件道盏,死亡現(xiàn)場(chǎng)離奇詭異而柑,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)荷逞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門媒咳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人种远,你說(shuō)我怎么就攤上這事涩澡。” “怎么了坠敷?”我有些...
    開封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵妙同,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我膝迎,道長(zhǎng)粥帚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任限次,我火速辦了婚禮芒涡,結(jié)果婚禮上柴灯,老公的妹妹穿的比我還像新娘。我一直安慰自己费尽,他們只是感情好赠群,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著旱幼,像睡著了一般查描。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上柏卤,一...
    開封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天冬三,我揣著相機(jī)與錄音,去河邊找鬼闷旧。 笑死,一個(gè)胖子當(dāng)著我的面吹牛钧唐,可吹牛的內(nèi)容都是我干的忙灼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼钝侠,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼该园!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起帅韧,我...
    開封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤里初,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后忽舟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體双妨,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年叮阅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了刁品。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡浩姥,死狀恐怖挑随,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情勒叠,我是刑警寧澤兜挨,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站眯分,受9級(jí)特大地震影響拌汇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜弊决,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一担猛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦傅联、人聲如沸先改。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)仇奶。三九已至,卻和暖如春比驻,著一層夾襖步出監(jiān)牢的瞬間该溯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工别惦, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留狈茉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓氯庆,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親堤撵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容