全屏滚动插件fullPage.js

本文介绍使用fullPage.js插件可轻易创建全屏滚动网站。很多网站只有一个首页,它是由多个可以滚动的全屏内容组成,使用鼠标滚动或方向键可控制滚屏,支持CSS3动画和手机触屏,效果非常高大上。

全屏滚动插件fullPage.js

查看演示 下载源码

使用方法

包含文件
<link rel="stylesheet" type="text/css" href="https://zhishitu.com" />

<!-- 以下行是可选的。 只有在使用选项css3:false,并且您希望使用其他缓动效果,而非“linear”、“swing”或“easeInOutCubic”时才有必要。 -->
<script src="/vendors/easings.min.js"></script>

<!-- 以下行仅在使用选项scrollOverflow:true的情况下是必需的 -->
<script type="text/javascript" src="/vendors/scrolloverflow.min.js"></script>

<script type="text/javascript" src="/fullpage.js"></script>
知识兔

如果您愿意,可以使用bower或npm安装fullPage.js:

// 使用bower
bower install fullpage.js

// 使用npm
npm install fullpage.js
知识兔
HTML结构

HTML文件中的首行HTML代码必须使用HTML DOCTYPE 声明,否则可能会遇到代码段高度问题。HTML 5 doctype中的示例: <!DOCTYPE html>

<div id="fullpage">
    <div class="section">Some section</div>
    <div class="section">Some section</div>
    <div class="section">Some section</div>
    <div class="section">Some section</div>
</div>
知识兔

每个代码段定义为包含.section的元素。 第一个代码段作为第一屏,是默认激活。 代码段应被包含在(即<div id="fullpage"> )父元素中。 注意,父元素不能是body元素。

如果你想定义一个与众不同的起始页面,而不是原始第一段或第一个滑动页,只需将.active类添加到你想首先载入的段或滑动页。

<div class="section active">Some section</div>
知识兔
Javascript

用原生Javascript初始化,只需要在关闭</body>标签之前调用fullPage.js。

new fullpage('#fullpage', {
    //options here
    autoScrolling:true,
    scrollHorizontally: true
});

//methods
fullpage_api.setAllowScrolling(false);
知识兔

也可以使用jQuery进行初始化,前提需要先引用jQuery库。

$(document).ready(function() {
    $('#fullpage').fullpage({
        //options here
        autoScrolling:true,
        scrollHorizontally: true
    });

    //methods
    $.fn.fullpage.setAllowScrolling(false);
});
知识兔

功能选项

所有选项设置的更复杂的初始化如下所示:

var myFullpage = new fullpage('#fullpage', {
    //导航
    menu: '#menu',  //绑定菜单,设定的相关属性与 anchors 的值对应后,菜单可以控制滚动
    lockAnchors: false, //(默认为false)确定URL中的锚是否在库中完全有效。 您仍然可以在函数和回调内部使用锚,但是它们在滚动网站时不起任何作用。 如果你想在URL中使用锚点来将fullPage.js和其他插件结合起来,那就很有用。
    anchors:['firstPage', 'secondPage'], //定义要在每个部分的URL上显示的锚链接(#example)。 锚点的值应该是独一无二的。 数组中的锚的位置将限定锚被应用于哪些部分。
    navigation: false, //如果设置为true,则会显示一个由小圆圈组成的导航栏
    navigationPosition: 'right', //(默认none)可以设置为left或right,并定义导航栏显示的位置(如果使用的话)
    navigationTooltips: ['firstSlide', 'secondSlide'], //(默认为[])定义要使用导航圈的工具提示。 如果您愿意,也可以在每个部分中使用属性data-tooltip来定义它们
    showActiveTooltip: false, //显示垂直导航中主动查看节的持久工具提示
    slidesNavigation: false, //如果设置为true,则会显示一个导航栏,该导航栏由站点上每个横向滑块的小圆圈组成。
    slidesNavPosition: 'bottom', //定义滑块的横向导航栏的位置。 值为top和bottom。

    //滚动
    css3: true, //是否使用 CSS3 transforms 滚动
    scrollingSpeed: 700, //滚动速度,单位为毫秒
    autoScrolling: true, //是否使用插件的滚动方式,如果选择 false,则会出现浏览器自带的滚动条
    fitToSection: true, //确定是否section放入视窗中
    fitToSectionDelay: 1000, //如果fitToSection设置为true,则延迟 以毫秒为单位
    scrollBar: false, //确定是否使用站点的滚动条。 在使用滚动条的情况下,autoScrolling功能仍将按预期工作。 用户也可以使用滚动条自由滚动网站,当滚动完成时,fullPage.js将适配屏幕上的部分。
    easing: 'easeInOutCubic', //定义用于垂直和水平滚动的过渡效果。
    easingcss3: 'ease', //定义在使用css3:true的情况下使用的过渡效果。
    loopBottom: false, //滚动到最底部后是否滚回顶部
    loopTop: false, //滚动到最顶部后是否滚底部
    loopHorizontal: true, //定义水平滑块是否在到达上一张或上一张幻灯片后循环
    continuousVertical: false, //是否循环滚动,与 loopTop 及 loopBottom 不兼容
    
    normalScrollElements: '#element1, .element2', //如果你想在滚动某些元素时避免自动滚动,这是你需要使用的选项
    scrollOverflow: false, //内容超过满屏后是否显示滚动条
    touchSensitivity: 15, //定义浏览器窗口宽度/高度的百分比,以及滑动到下一个节/幻灯片必须测量的距离
    normalScrollElementTouchThreshold: 5, //定义html节点树的跳数阈值Fullpage将测试normalScrollElements是否匹配,以允许在触摸设备上的div的滚动功能。
    bigSectionsDestination: null, //定义如何滚动到比视口大的部分。 默认情况下,如果您来自目的地上方的部分,fullPage.js将滚动到顶部,如果您来自目的地之下的部分,则会滚动到底部。 可能的值是top,bottom,null。

    //可访问
    keyboardScrolling: true, //定义是否可以使用键盘浏览内容
    animateAnchor: true, //定义给定锚点(#)的站点的负载是否会随着动画滚动到其目的地或直接加载给定部分
    recordHistory: true, //定义是否将网站的状态推送到浏览器的历史记录。 设置为true时,网站的每个部分/幻灯片将作为新页面,浏览器的后退和前进按钮将滚动部分/幻灯片以达到网站的上一个或下一个状态。 当设置为false时,URL将保持更改,但不会影响浏览器的历史记录。 使用autoScrolling:false时,该选项会自动关闭。

    //设计
    controlArrows: true, //确定是否将幻灯片的控制箭头向右或向左移动
    verticalCentered: true, //在段落内部垂直居中。 当设置为true时,您的代码将被库包装。可考虑使用委托或在afterRender回调中加载其他脚本
    sectionsColor : ['#ccc', '#fff'], //为每个部分定义CSSbackground-color属性
    paddingTop: '3em', //与顶部的距离
    paddingBottom: '10px', //与底部距离
    fixedElements: '#header, .footer', //定义当使用css3选项保持固定时,哪些元素将从插件的滚动结构中移除。 它需要一个字符串与这些元素的Javascript选择器。 (例如:fixedElements:'#element1,.element2')
    responsiveWidth: 0, //一个正常的滚动(autoScrolling:false)将在定义的宽度下以像素为单位使用。 如果用户希望将自己的响应式CSS用于身体标记,则会将fp-responsive类添加到身体标记中。 例如,如果设置为900,则每当浏览器的宽度小于900时,插件将像正常站点一样滚动。
    responsiveHeight: 0, //一个正常的滚动(autoScrolling:false)将在定义的高度下以像素为单位使用。 如果用户希望将自己的响应式CSS用于身体标记,则会将fp-responsive类添加到身体标记中。 例如,如果设置为900,则每当浏览器的高度小于900时,插件将像正常站点一样滚动。

    //自定义选择器
    sectionSelector: '.section', //定义用于插件部分的Javascript选择器。 有时可能需要更改,以避免与使用与fullpage.js相同的选择器的其他插件的问题。
    slideSelector: '.slide', //定义用于插件幻灯片的Javascript选择器。 有时可能需要更改,以避免与使用与fullpage.js相同的选择器的其他插件的问题。

    lazyLoading: true, //延迟加载默认是激活的,这意味着它会延迟加载包含属性data-src的任何媒体元素

    //事件
    onLeave: function(index, nextIndex, direction){},//滚动前的回调函数,接收 index、nextIndex 和 direction 3个参数:index 是离开的“页面”的序号,从1开始计算;nextIndex 是滚动到的“页面”的序号,从1开始计算;direction 判断往上滚动还是往下滚动,值是 up 或 down。
    afterLoad: function(origin, destination, direction){}, //滚动结束之后,一旦加载了节,就会触发回调。
    afterRender: function(){}, //这个回调在页面结构生成后立即被触发。 这是您要用来初始化其他插件的回调函数,或者触发任何需要文档准备就绪的代码
    afterResize: function(width, height){},//调整浏览器窗口大小后,会触发此回调。
    afterResponsive: function(isResponsive){}, //在fullpage.js从正常模式变为响应模式或从响应模式变为正常模式之后,此回调将被触发
    afterSlideLoad: function(section, origin, destination, direction){}, //滚动结束后,加载一个section的幻灯片后触发回调。
    onSlideLeave: function(section, origin, destination, direction){} //一旦用户离开幻灯片转到另一个幻灯片,就会触发此回调。返回false将在移动发生之前取消移动。
});
知识兔

方法

moveSectionUp() 向上滚动

moveSectionDown() 向下滚动

moveTo(section, slide) 滚动到

moveSlideRight() slide 向右滚动

moveSlideLeft() slide 向左滚动

setAutoScrolling() 设置页面滚动方式,设置为 true 时自动滚动

setAllowScrolling() 添加或删除鼠标滚轮/触控板控制

setKeyboardScrolling() 添加或删除键盘方向键控制

setScrollingSpeed() 定义以毫秒为单位的滚动速度

其他

延迟加载

fullPage.js提供了一种延迟加载图像、视频和音频元素的方式,这样它们不会减慢网站的加载速度,也不会浪费数据传输。 当使用延迟加载时,所有这些元素只有在进入视口时才会加载。 要启用延迟加载,您只需将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>
知识兔

如果您已经使用另一个使用data-src的延迟加载解决方案,则可以通过设置 lazyLoading: false选项来禁用fullPage.js延迟加载。

自动播放

对于视频或音频使用属性 autoplay,或者对于youtube iframe使用参数autoplay=1将使得在加载页面时播放媒体元素。 在段落/幻灯片载入使用而不是属性data-autoplay播放。 例如:

<audio data-autoplay>
    <source src="http://metakoncept.hr/horse.ogg" type="audio/ogg">
</audio>
知识兔
暂停

嵌入式HTML5<video>/<audio>和Youtube iframe在离开某个段落或幻灯片时自动暂停。 可以通过使用属性data-keepplaying来禁用。 例如:

<audio data-keepplaying>
    <source src="http://metakoncept.hr/horse.ogg" type="audio/ogg">
</audio>
知识兔

此外,fullpage.js还可以使用扩展插件,更多详情请查看fullpage.js项目官网:https://github.com/alvarotrigo/fullPage.js.

计算机