轻量级全屏滚动插件 fullpage 实现指南
介绍一款名为 fullpage 的轻量级全屏滚动插件,该插件不依赖任何JS库,体积不足9KB,兼容IE5.5及以上版本及移动端。文章详细说明了其HTML结构、CSS样式配置及JS初始化参数,并提供了prev、next等API接口,适用于构建个人主页或网页应用。
插件特性与兼容性
本文介绍的 fullpage 插件与 fullPage.js 不同,它具有更好的兼容性,最低可支持至 IE6 浏览器。该插件不依赖任何 JavaScript 库,可以独立运行。尽管功能丰富度不及 fullPage.js,但足以满足一般使用需求,特别是其动画效果支持自由设定缩放和旋转,能产生多样化的视觉特效。此外,它还支持 fullPage.js 未提供的水平滚动功能。
- 该插件兼容桌面端(IE5.5及以上版本)以及手机端设备。
- 开发者可以利用它来构建个人主页或各类网页应用。
- 这是一个小巧的框架,体积不足 9KB,且无需引入 jQuery。
在详细介绍之前,先查看运行效果演示。

引入与配置
引入核心库文件即可,由于 fullpage 不依赖其他 JS 库,因此只需单独引入它本身。
<script src="js/fullPage.min.js"></script>
接下来编写 HTML 结构代码。
//请在head区加入以下代码,移动端使用
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1">
<!--[if lte IE 7]>
<body scroll="no">
<![endif]-->
<!--[if gt IE 7]><!-->
<body>
<!--<![endif]-->
<div id="pageContain">
<div class="page page1 current">
<div class="contain">
</div>
</div>
<div class="page page2">
<div class="contain">
</div>
</div>
<div class="page page3" data-step="4">
<div class="contain">
<p class="demo-data-step">data-step可以让你在不切屏的情况下更换动画</p>
</div>
</div>
<div class="page page4">
<div class="contain">
</div>
</div>
<div class="page page5">
<div class="contain">
</div>
</div>
<div class="page page6">
<div class="contain">
</div>
</div>
</div>
<ul id="navBar">
<li>0</li>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
</body>
编写 CSS 样式,对于不熟悉 CSS3 的开发者建议先补充相关知识,此处不再赘述。CSS 可根据项目具体需求自由定义。
html {
-ms-touch-action: none; /* 阻止windows Phone 的默认触摸事件 */
}
body,
div,
p {
margin: 0;
padding: 0;
}
ul {
list-style: none;
}
body {
width: 100%;
*cursor: default;
overflow: hidden;
font: 16px/1.5 "Microsoft YaHei",Helvetica,STHeiti STXihei,Microsoft JhengHei,Arial;
}
#pageContain {
overflow: hidden;
}
.page {
display: none;
width: 100%;
height: 100%;
overflow: hidden;
position: absolute;
top: 0;
left: 0;
}
.contain {
width: 100%;
height: 100%;
display: none;
position: relative;
z-index: 0;
}
.current .contain,.slide .contain {
display: block;
}
.current {
display: block;
z-index: 1;
}
.slide {
display: block;
z-index: 2;
}
.swipe {
display: block;
z-index: 3;
transition-duration: 0ms !important;
-webkit-transition-duration: 0ms !important;
}
.page1 {
background: #37c1e3;
}
.page2 {
background: #009922;
}
.page3 {
background: #992211;
}
.page4 {
background: #ff00ff;
}
.page5 {
background: #00ff00;
}
.page6 {
background: #22ffff;
}
#navBar {
z-index: 3;
position: absolute;
top: 10%;
right: 3%;
}
#navBar .active {
background: #ccc;
}
#navBar li {
cursor: pointer;
margin-bottom: 10px;
transition: all .7s ease;
border-radius: 50%;
line-height: 40px;
text-align: center;
width: 40px;
height: 40px;
}
p {
width: 200px;
height: 100px;
color:#fff;
text-align: center;
position: absolute;
left: 50%;
top: 50%;
margin-left: -100px;
margin-top: -50px;
opacity: 1;
transition: all .8s ease;
transform-origin: 50% 50%;
}
.step1 p {
transform: translate(0, -50px);
-webkit-transform: translate(0, -50px);
}
.step2 p {
opacity: 0;
transform: scale(2);
-webkit-transform: scale(2);
}
.step3 p {
transform: scale(1);
-webkit-transform: scale(1)
opacity: 1;
}
.step4 p {
-webkit-transform: rotate(360deg) translate(0,-200px) scale(.3);
transform: rotate(360deg) translate(0,-200px) scale(.3);
opacity: 0;
}
编写 JavaScript 代码以实现最终效果。
var runPage;
runPage = new FullPage({
id : 'pageContain', // 容器id
slideTime : 800, // 每页切换时间,单位为毫秒
continuous : false, // 是否循环(即能从最后页跳到第一页面)
effect : { // 滚动效果
transform : {
translate : 'Y', // 'X'|'Y'|'XY'|'none' X轴|Y轴|XY轴|无
scale : [.1, 1], // [scalefrom, scaleto] [起始缩放比例, 结束时缩放比例]
rotate : [0, 0] // [rotatefrom, rotateto] [起始旋转角度, 结束时旋转角度]
},
opacity : [0, 1] // [opacityfrom, opacityto][起始透明度, 结束时透明度]
},
mode : 'wheel,touch,nav:navBar', // 转换模式 'wheel,touch,nav:navBar' 表示 '滚轮,触摸,导航条:导航条id'
easing : 'ease' // easing('ease','ease-in','ease-in-out' 或使用贝塞尔曲线 [.33, 1.81, 1, 1];
// ,onSwipeStart : function(index, thisPage) { // 触摸开始时的回调函数
// return 'stop';
// }
// ,beforeChange : function(index, thisPage) { // 滑动开始时的回调函数
// return 'stop';
// }
// ,callback : function(index, thisPage) { // 滑动结束后的回调函数
// alert(index);
// };
});
参数与接口
以下是详细的参数设置说明。
id:String 类型,指定外层包裹容器的 id。
slideTime:Integer 类型,默认值 800,表示每页切换的时间(单位为毫秒)。
effect:Object 类型,默认值为空对象 {},用于配置效果参数。
mode:String 类型,默认值为空字符串,定义转换模式,例如 'wheel,touch,nav:navBar' 表示启用滚轮、触摸及导航条(导航条id为navBar)。
callback:Function 类型,定义滑动结束后的回调函数。
接口说明。
Fullpage 提供了一些接口供调用该插件的开发者使用:
prev():直接滑向上一页。
next():直接滑入下一页。
thisPage():返回当前页码。
go(num):直接滑到第 num 页。
以上介绍了实现类似网易邮箱全屏滚动效果的方法,希望能帮助大家制作出适合自身网站的全屏滚动效果。
JS 怎么使用 pako.js 解压 gzip 数据流
2026-11-05 15:54:33
零基础先学JavaScript还是Python?对比学习难度与上手曲线
2026-11-05 14:47:40
JS代码反混淆:主流在线工具与本地软件推荐
2026-11-04 19:28:41
浏览器控制台查看格式化JSON有哪些实用技巧
2026-11-04 16:56:53
JS控制台打印基础:console.log语法与多参数用法
2026-11-04 09:23:11
