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跨域刷新实现代码
Jan 01 Javascript
editable.js 基于jquery的表格的编辑插件
Oct 24 Javascript
jquery实现更改表格行顺序示例
Apr 30 Javascript
angularJS中$apply()方法详解
Jan 07 Javascript
jQuery解析XML文件同时动态增加js文件的方法
Jun 01 Javascript
jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
Aug 22 Javascript
jQuery鼠标悬浮链接弹出跟随图片实例代码
Jan 08 Javascript
Uploadify上传文件方法
Mar 16 Javascript
设置点击文本框或图片弹出日历控件的实现代码
May 12 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
Dec 16 Javascript
jQuery实现拖拽可编辑模块功能代码
Jan 12 Javascript
浅谈node模块与npm包管理工具
Jan 03 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
PHP使用静态方法的几个注意事项
2014/09/16 PHP
使用composer命令加载vendor中的第三方类库 的方法
2019/07/09 PHP
PHP实现爬虫爬取图片代码实例
2021/03/03 PHP
IE JS无提示关闭窗口不提示的方法
2010/04/29 Javascript
腾讯与新浪的通过IP地址获取当前地理位置(省份)的接口
2010/07/26 Javascript
javascript 折半查找字符在数组中的位置(有序列表)
2010/12/09 Javascript
js取得url地址参数实例
2013/02/22 Javascript
javascript中的原型链深入理解
2014/02/24 Javascript
javascript检查浏览器是否支持flash的实现代码
2014/08/14 Javascript
JavaScript实现打开链接页面的方式汇总
2016/06/02 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
JS经典正则表达式笔试题汇总
2016/12/15 Javascript
angularJs的ng-class切换class
2017/06/23 Javascript
JS实现的全排列组合算法示例
2017/10/09 Javascript
实例讲解javascript实现异步图片上传方法
2017/12/05 Javascript
在Swiper内如何制作CSS3动画效果示例代码
2017/12/07 Javascript
jquery实现楼层滚动效果
2018/01/01 jQuery
深入解析koa之异步回调处理
2019/06/17 Javascript
[02:33]2018DOTA2亚洲邀请赛赛前采访——LGD
2018/04/04 DOTA
调试Python程序代码的几种方法总结
2015/04/28 Python
对numpy中的数组条件筛选功能详解
2018/07/02 Python
Python企业编码生成系统总体系统设计概述
2019/07/26 Python
Python通过递归获取目录下指定文件代码实例
2019/11/07 Python
世界第一曲奇连锁店:Mrs. Fields Cookies
2017/02/04 全球购物
Bluebella法国官网:英国性感内衣品牌
2019/05/03 全球购物
三陽商会官方网站:Sanyo iStore
2019/05/15 全球购物
德国高尔夫商店:Golfshop.de
2019/06/22 全球购物
现代绅士日常奢侈品:Todd Snyder
2019/12/13 全球购物
《邮票齿孔的故事》教学反思
2014/02/22 职场文书
司法建议书范文
2014/05/13 职场文书
党员个人剖析材料(四风问题)
2014/10/07 职场文书
单位租车协议书
2015/01/29 职场文书
交通事故被告答辩状
2015/05/22 职场文书
2016年会开场白台词
2015/06/01 职场文书
劳动合同变更协议书范本
2019/04/18 职场文书
thinkphp 获取控制器及控制器方法
2021/04/16 PHP