轻量级全屏滚动插件 fullpage 实现指南

作者:开源拾贝

时间:2026-10-29

浏览:266

介绍一款名为 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 页。

以上介绍了实现类似网易邮箱全屏滚动效果的方法,希望能帮助大家制作出适合自身网站的全屏滚动效果。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章