61

全屏滚动插件fullPage.js

 5 years ago
source link: https://www.helloweba.net/javascript/567.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

mAbuMnn.jpg!web

查看演示 下载源码

使用方法

包含文件

<link rel="stylesheet" type="text/css" href="fullpage.css" />

<!-- 以下行是可选的。 只有在使用选项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"></code> )付父元素中。 注意,父元素不能是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 .


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK