jquery实现全屏滚动


Posted in Javascript onDecember 28, 2015

在很多情况下,我们需要页面的全屏滚动,尤其是移动端。今天简要的介绍一下全屏滚动的知识。

一.全屏滚动的原理
1.js动态获取屏幕的高度。

获取屏幕的高度,设置每一屏幕的高度。

2.监听mousewheel事件。

监听mousewheel事件,并判断滚轮的方向,向上或向下滚动一屏。

二.jQuery插件fullpages介绍
fullPage.js 是一个基于 jQuery 的插件,它能够很方便、很轻松的制作出全屏网站,主要功能有:

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

使用方法

1、引入文件

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

2、HTML

<div id="dowebok">
  <div class="section">
    <h3>第一屏</h3>
  </div>
  <div class="section">
    <h3>第二屏</h3>
  </div>
  <div class="section">
    <h3>第三屏</h3>
  </div>
  <div class="section">
    <h3>第四屏</h3>
  </div>
</div>

每个 section 代表一屏,默认显示“第一屏”,如果要指定加载页面时显示的“屏幕”,可以在对应的 section 加上class=”active”,如:

<div class="section active">第三屏</div>

同时,可以在 section 内加入 slide(左右滑动),如:

<div id="fullpages">
  <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(){
  $('#fullpages').fullpage();
});

可以进行跟多的配置:

$(document).ready(function() {
  $('#fullpages').fullpage({
    //Navigation
    menu: '#menu',
    lockAnchors: false,
    anchors:['firstPage', 'secondPage'],
    navigation: false,
    navigationPosition: 'right',
    navigationTooltips: ['firstSlide', 'secondSlide'],
    showActiveTooltip: false,
    slidesNavigation: true,
    slidesNavPosition: 'bottom',

    //Scrolling
    css3: true,
    scrollingSpeed: 700,
    autoScrolling: true,
    fitToSection: true,
    fitToSectionDelay: 1000,
    scrollBar: false,
    easing: 'easeInOutCubic',
    easingcss3: 'ease',
    loopBottom: false,
    loopTop: false,
    loopHorizontal: true,
    continuousVertical: false,
    normalScrollElements: '#element1, .element2',
    scrollOverflow: false,
    touchSensitivity: 15,
    normalScrollElementTouchThreshold: 5,

    //Accessibility
    keyboardScrolling: true,
    animateAnchor: true,
    recordHistory: true,

    //Design
    controlArrows: true,
    verticalCentered: true,
    resize : false,
    sectionsColor : ['#ccc', '#fff'],
    paddingTop: '3em',
    paddingBottom: '10px',
    fixedElements: '#header, .footer',
    responsiveWidth: 0,
    responsiveHeight: 0,

    //Custom selectors
    sectionSelector: '.section',
    slideSelector: '.slide',

    //events
    onLeave: function(index, nextIndex, direction){},
    afterLoad: function(anchorLink, index){},
    afterRender: function(){},
    afterResize: function(){},
    afterSlideLoad: function(anchorLink, index, slideAnchor, slideIndex){},
    onSlideLeave: function(anchorLink, index, slideIndex, direction, nextSlideIndex){}
  });
});

三.动手写全屏滚动
这里主要介绍监听mousewheel事件及滚动。

由于mousewheel事件的兼容性,引用jquery-mousewheel插件来监听滚轮事件。

通过参数delta可以获取鼠标滚轮的方向和速度(旧版本需要传delta参数,新版本不需要,直接用event取)。如果delta的值是负的,那么滚轮就是向下滚动,正的就是向上。

// using on
$('#my_elem').on('mousewheel', function(event) {
  console.log(event.deltaX, event.deltaY, event.deltaFactor);
});

// using the event helper
$('#my_elem').mousewheel(function(event) {
  console.log(event.deltaX, event.deltaY, event.deltaFactor);
});

可以根据需求使用fullpages实现全屏滚动(上下,左右),也可以使用jquery-mousewheel定制不同高度的全屏滚动。

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
JavaScript TO HTML 转换
Jun 26 Javascript
jquery动态改变form属性提交表单
Jun 03 Javascript
浅谈JavaScript函数节流
Dec 09 Javascript
javascript面向对象之this关键词用法分析
Jan 13 Javascript
JQuery替换DOM节点的方法
Jun 11 Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
May 10 Javascript
精彩的Bootstrap案例分享 重点在注释!(选项卡、栅格布局)
Jul 01 Javascript
jQuery简单设置文本框回车事件的方法
Aug 01 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
Feb 14 Javascript
vue利用axios来完成数据的交互
Mar 23 Javascript
Angular 5.x 学习笔记之Router(路由)应用
Apr 08 Javascript
小程序登录态管理的方法示例
Nov 13 Javascript
AngularJS使用angular-formly进行表单验证
Dec 27 #Javascript
延时加载JavaScript代码提高速度
Dec 27 #Javascript
AngularJS使用ngMessages进行表单验证
Dec 27 #Javascript
详解maxlength属性在textarea里奇怪的表现
Dec 27 #Javascript
SublimeText自带格式化代码功能之reindent
Dec 27 #Javascript
Javascript removeChild()删除节点及删除子节点的方法
Dec 27 #Javascript
JavaScript的removeChild()函数用法详解
Dec 27 #Javascript
You might like
openPNE常用方法分享
2011/11/29 PHP
php实现统计邮件大小的方法
2013/08/06 PHP
php ImageMagick windows下安装教程
2015/01/26 PHP
php的PDO事务处理机制实例分析
2017/02/16 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
2017/03/15 PHP
PHP实现的随机红包算法示例
2017/08/14 PHP
PHP多进程通信-消息队列使用
2019/03/08 PHP
jQuery ReferenceError: $ is not defined 错误的处理办法
2013/05/10 Javascript
JQuery异步加载无限下拉框级联功能实现示例
2014/02/19 Javascript
extjs_02_grid显示本地数据、显示跨域数据
2014/06/23 Javascript
jQuery中:gt选择器用法实例
2014/12/29 Javascript
jQuery实现带分组数据的Table表头排序实例分析
2015/11/24 Javascript
js获取Get值的方法
2016/09/29 Javascript
快速掌握jquery分页插件jqPaginator的使用方法
2017/08/09 jQuery
快速解决Vue项目在IE浏览器中显示空白的问题
2018/09/04 Javascript
Vue路由模块化配置的完整步骤
2019/08/14 Javascript
6种JavaScript继承方式及优缺点(小结)
2020/02/06 Javascript
element-ui 实现响应式导航栏的示例代码
2020/05/08 Javascript
Python读写Excel文件方法介绍
2014/11/22 Python
Python中的Matplotlib模块入门教程
2015/04/15 Python
wxpython中Textctrl回车事件无效的解决方法
2016/07/21 Python
python之django母板页面的使用
2018/07/03 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
2018/12/19 Python
python实现一个简单的udp通信的示例代码
2019/02/01 Python
python接口自动化如何封装获取常量的类
2019/12/24 Python
解决Python发送Http请求时,中文乱码的问题
2020/04/30 Python
Html5实现用户注册自动校验功能实例代码
2016/05/24 HTML / CSS
教师教学评估方案
2014/05/09 职场文书
文明和谐家庭事迹材料
2014/05/18 职场文书
本科生就业推荐信
2014/05/19 职场文书
领导干部保密承诺书
2014/08/30 职场文书
口才训练演讲稿范文
2014/09/16 职场文书
2014年党风建设工作总结
2014/11/19 职场文书
2014学生会工作总结报告
2014/12/02 职场文书
服装店员工管理制度
2015/08/07 职场文书
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
2022/04/14 Python