FullPage.js 基于 jQuery 的全屏滚动插件

发布于 2017-07-15 11:41:10 字数 6843 浏览 3071 评论 12

如今我们经常能见到全屏网站,尤其是国外网站。这些网站用几幅很大的图片或色块做背景,再添加一些简单的内容,显得格外的高端大气上档次。FullPage.js 是一个基于 jQuery 的全屏滚动插件,它能够很方便、很轻松的制作出全屏网站。

主要功能

  • 支持鼠标滚动
  • 支持前进后退和键盘控制
  • 多个回调函数
  • 支持手机、平板触摸事件
  • 支持 CSS3 动画
  • 支持窗口缩放
  • 窗口缩放时自动调整
  • 可设置滚动宽度、背景颜色、滚动速度、循环选项、回调、文本对齐方式等等

兼容性

fullPage.js 支持 IE8+ 及其他现代浏览器。

使用方法

1、引入文件

<link rel="stylesheet" href="css/jquery.fullPage.css">
<script src="js/jquery.min.js"></script>
<script src="js/jquery-ui.min.js"></script>
<script src="js/jquery.fullPage.js"></script>

2、HTML

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

3、JavaScript

$(function(){
    $('#fullpage').fullpage({
        'verticalCentered': false,
        'css3': true,
        'sectionsColor': ['#254875', '#00FF00', '#254587', '#695684'],
        anchors: ['page1', 'page2', 'page3', 'page4'],
        'navigation': true,
        'navigationPosition': 'right',
        'navigationTooltips': ['fullPage.js', 'Powerful', 'Amazing', 'Simple']
    })
})

经测试,最好至少有 anchors 这个参数,否则在火狐浏览器中,第一次滚动可能会直接滚到网页的底部,非常影响用户体验。

可选配置

1、选项

选项类型默认值说明
verticalCentered字符串true内容是否垂直居中
resize布尔值false字体是否随着窗口缩放而缩放
slidesColor函数设置背景颜色
anchors数组定义锚链接
scrollingSpeed整数700滚动速度,单位为毫秒
easing字符串easeInQuart滚动动画方式
menu布尔值false绑定菜单,设定的相关属性与 anchors 的值对应后,菜单可以控制滚动
navigation布尔值false是否显示项目导航
navigationPosition字符串right项目导航的位置,可选 left 或 right
navigationColor字符串#000项目导航的颜色
navigationTooltips数组项目导航的 tip
slidesNavigation布尔值false是否显示左右滑块的项目导航
slidesNavPosition字符串bottom左右滑块的项目导航的位置,可选 top 或 bottom
controlArrowColor字符串#fff左右滑块的箭头的背景颜色
loopBottom布尔值false滚动到最底部后是否滚回顶部
loopTop布尔值false滚动到最顶部后是否滚底部
loopHorizontal布尔值true左右滑块是否循环滑动
autoScrolling布尔值true是否使用插件的滚动方式,如果选择 false,则会出现浏览器自带的滚动条
scrollOverflow布尔值false内容超过满屏后是否显示滚动条
css3布尔值false是否使用 CSS3 transforms 滚动
paddingTop字符串0与顶部的距离
paddingBottom字符串0与底部距离
fixedElements字符串
normalScrollElements
keyboardScrolling布尔值true是否使用键盘方向键导航
touchSensitivity整数5
continuousVertical布尔值false是否循环滚动,与 loopTop 及 loopBottom 不兼容
animateAnchor布尔值true
normalScrollElementTouchThreshold整数5

2、方法

名称说明
moveSectionUp()向上滚动
moveSectionDown()向下滚动
moveTo(section, slide)滚动到
moveSlideRight()slide 向右滚动
moveSlideLeft()slide 向左滚动
setAutoScrolling()设置页面滚动方式,设置为 true 时自动滚动
setAllowScrolling()添加或删除鼠标滚轮/触控板控制
setKeyboardScrolling()添加或删除键盘方向键控制
setScrollingSpeed()定义以毫秒为单位的滚动速度

3、回调函数

名称说明
afterLoad滚动到某一屏后的回调函数,接收 anchorLink 和 index 两个参数,anchorLink 是锚链接的名称,index 是序号,从1开始计算
onLeave滚动前的回调函数,接收 index、nextIndex 和 direction 3个参数:
index 是离开的“页面”的序号,从1开始计算;
nextIndex 是滚动到的“页面”的序号,从1开始计算;
direction 判断往上滚动还是往下滚动,值是 up 或 down。
afterRender页面结构生成后的回调函数,或者说页面初始化完成后的回调函数
afterSlideLoad滚动到某一水平滑块后的回调函数,与 afterLoad 类似,接收 anchorLink、index、slideIndex、direction 4个参数
onSlideLeave某一水平滑块滚动前的回调函数,与 onLeave 类似,接收 anchorLink、index、slideIndex、direction 4个参数

自定义Section高度

很多用户留言说无法自定义底部Footer的高度,我也查阅了很多资料,都没有发现方法,但是无意间看到一个Fullpage的示例,实现自定义底部高度的方法,而且是不算在滑动的Section里面,在需 要自定义高度的DIV里面,只需要给Section添加 .fp-auto-height 类就可以实现自定义高度。

相关链接

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(12

afterSlideLoad 用于判断滚动到某个幻灯片的回调函数,用法如下:

$('#fullpage').fullpage({
	anchors: ['firstPage', 'secondPage', 'thirdPage', 'fourthPage', 'lastPage'],
	afterSlideLoad: function( anchorLink, index, slideAnchor, slideIndex){
		var loadedSlide = $(this);
		//first slide of the second section
		if(anchorLink == 'secondPage' && slideIndex == 1){
			alert("First slide loaded");
		}
		//second slide of the second section (supposing #secondSlide is the
		//anchor for the second slide
		if(index == 2 && slideIndex == 'secondSlide'){
			alert("Second slide loaded");
		}
	}
});
清晨说ぺ晚安 2017-11-16 14:36:49

afterSlideLoad 这个回调函数怎么用?可以看一下个例子

瑾兮 2017-11-16 14:35:19

图片太大会是个问题,你可以考虑使用 background-size 属性把图片等比例缩放。当值设置为 cover 的时候,就可以以最短的一边为准,等比例缩放背景图。

灵芸 2017-11-16 14:28:33

有个问题,图片是1920px*1080px的,在小屏幕中会切掉一部分内容,我在想能不能做到等比例缩放呢?

Jsmile 回复 想挽留 2017-11-16 14:27:54

当鼠标划入的时候,使用setAllowScrolling(false)方法取消掉fullpage的鼠标滑轮监听。当鼠标滑出的时候,重新添加监听器。

$('#demo').mouseover(function(){
	$.fn.fullpage.setAllowScrolling(false);
}).mouseout(function(){
	$.fn.fullpage.setAllowScrolling(true);
})
想挽留 2017-11-16 14:27:17

用什么方法能使滑轮事件失效?

瑾兮 回复 想挽留 2017-11-16 14:26:29

针对你的问题:
1、anchor可以为数字,这个参数只是定义锚链接的name。
2、超出部分不能显示滚动条的问题,请参见这条评论
3、这个插件监听页面内的鼠标滑轮事件,如果想其他的内容区域不受控制,可以给这个内容区域添加一个mouseover的监听器,判断鼠标是否在这个内容区域内。

想挽留 2017-11-16 14:24:48

我的页面分为左右2个div,左边的层展示图片,右边的层则显示对应的评论,尝试用这个插件后发现以下问题:
1.anchor参数不能为纯数字,否则滚动会出错。
2.评论所在的这个层设置了css为overflow-y:auto,当评论内容很多超出层容器的时候,滚动条会出现,但却是灰色的没有滑块,无法滚动。
3.我只想要左边的图片层滚动,不需要右边的评论层也跟着滚动,但是现在是无论鼠标是在图片层还是评论层,都会触发滚动事件。

想挽留 回复 甜柠檬 2017-11-16 14:21:57

没有选择元素,fullPage 不知道给哪个元素添加这个效果。

甜柠檬 2017-11-16 14:21:21

fullpage 插件我引用本地的 js 却不起作用,是什么原因呢?
报的错是fullPage: Error! Fullpage.js needs to be initialized with a selector. For example: $(‘#myContainer’).fullpage();

Jsmile 回复 偏爱自由 2017-11-06 15:38:06

引用 jquery.slimscroll.min.js 设置 scrollOverflowtrue,如果内容超出了屏幕,就会自动在右边出现拖动滑条。

偏爱自由 2017-11-06 15:35:54

前面两屏使用fullpage完成刷屏,最后一屏使用fullpage,完成刷屏,但是最后一屏会剩下很多东西,一屏显示不完,这就需要使用鼠标滚动完成浏览,求指点怎么做

~没有更多了~

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

沧笙踏歌

文章 0 评论 0

山田美奈子

文章 0 评论 0

佚名

文章 0 评论 0

岁月无声

文章 0 评论 0

暗藏城府

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文