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 相关文章推荐
prototype Element学习笔记(篇一)
Oct 26 Javascript
JS常用表单验证方法总结
May 22 Javascript
Node.js中的事件驱动编程详解
Aug 16 Javascript
JS中的form.submit()不能提交表单的错误原因
Oct 08 Javascript
javascript实现将文件保存到本地方法汇总
Jul 26 Javascript
浅谈angular.js中实现双向绑定的方法$watch $digest $apply
Oct 14 Javascript
AngularJS基础 ng-show 指令简单示例
Aug 03 Javascript
用原生js统计文本行数的简单示例
Aug 19 Javascript
spring+angular实现导出excel的实现代码
Feb 27 Javascript
微信小程序全局变量改变监听的实现方法
Jul 15 Javascript
prettier自动格式化去换行的实现代码
Aug 25 Javascript
vue自定义右键菜单之全局实现
Apr 09 Vue.js
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/01/30 PHP
javascript 浏览器判断 绑定事件 arguments 转换数组 数组遍历
2009/07/06 Javascript
JavaScript Cookie 直接浏览网站分网址
2009/12/08 Javascript
jQuery渐变发光导航菜单的实例代码
2013/03/27 Javascript
jquery的attr方法禁用表单元素禁用输入内容
2014/06/23 Javascript
JavaScript中的style.cssText使用教程
2014/11/06 Javascript
轻松搞定jQuery.noConflict()
2016/02/15 Javascript
JS百度地图搜索悬浮窗功能
2017/01/12 Javascript
常用jQuery选择器汇总
2017/02/02 Javascript
浅谈node中的exports与module.exports的关系
2017/08/01 Javascript
ES6中Array.includes()函数的用法
2017/09/20 Javascript
详解适配器在JavaScript中的体现
2018/09/28 Javascript
前端js中的事件循环eventloop机制详解
2019/05/15 Javascript
Vue将页面导出为图片或者PDF
2020/08/17 Javascript
layer.js open 隐藏滚动条的例子
2019/09/05 Javascript
Vue学习之axios的使用方法实例分析
2020/01/06 Javascript
jQuery 实现扁平式小清新导航
2020/07/07 jQuery
如何使用JS console.log()技巧提高工作效率
2020/10/14 Javascript
对python 命令的-u参数详解
2018/12/03 Python
python实现吃苹果小游戏
2020/03/21 Python
解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题
2020/07/14 Python
HTML5标签小集
2011/08/02 HTML / CSS
详解px单位html5响应式方案
2018/03/08 HTML / CSS
简约控的天堂:The Undone
2016/12/21 全球购物
巴西女装购物网站:Eclectic
2018/04/24 全球购物
个性化皮包、小袋、生活配件:Mon Purse
2019/03/26 全球购物
小学教师学期末自我评价
2013/09/25 职场文书
七年级政治教学反思
2014/02/03 职场文书
网络技术专业求职信
2014/02/18 职场文书
单位委托书范本
2014/04/04 职场文书
阳光体育活动实施方案
2014/05/25 职场文书
群众路线教育实践活动对照检查材料思想汇报(副处级领导)
2014/10/04 职场文书
政风行风整改方案
2014/10/25 职场文书
铁路安全反思材料
2014/12/24 职场文书
《曾国藩家书》读后感——读家书,立家风
2019/08/21 职场文书
剑指Offer之Java算法习题精讲二叉树专项训练
2022/03/21 Java/Android