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 相关文章推荐
基于jquery1.4.2的仿flash超炫焦点图播放效果
Apr 20 Javascript
Jquery中dialog属性小记
Sep 03 Javascript
再谈javascript图片预加载技术(详细演示)
Mar 12 Javascript
被遗忘的javascript的slice() 方法
Apr 20 Javascript
js获取及修改网页背景色和字体色的方法
Dec 29 Javascript
JavaScript获取URL中参数querystring的方法详解
Oct 11 Javascript
微信小程序实现文字无限轮播效果
Dec 28 Javascript
详解Node.js异步处理的各种写法
Jun 09 Javascript
JavaScript实现的3D旋转魔方动画效果实例代码
Jul 31 Javascript
vue el-table实现行内编辑功能
Dec 11 Javascript
JavaScript数组类型Array相关的属性与方法详解
Sep 08 Javascript
vue-cli3项目打包后自动化部署到服务器的方法
Sep 16 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
xtree.js 代码
2007/03/13 Javascript
IE bug table元素的innerHTML
2010/01/11 Javascript
js 实现在离开页面时提醒未保存的信息(减少用户重复操作)
2013/01/16 Javascript
JavaScript地图拖动功能SpryMap的简单实现
2013/07/17 Javascript
jquery封装的对话框简单实现
2013/07/21 Javascript
jquery解析XML字符串和XML文件的方法说明
2014/02/21 Javascript
JavaScript中用getDate()方法返回指定日期的教程
2015/06/09 Javascript
全面了解JS中的匿名函数
2016/06/29 Javascript
Bootstrap 实现查询的完美方法
2016/10/26 Javascript
jQuery实现立体式数字动态增加(animate方法)
2016/12/21 Javascript
vue过渡和animate.css结合使用详解
2017/06/14 Javascript
基于vue监听滚动事件实现锚点链接平滑滚动的方法
2018/01/17 Javascript
详解小程序不同页面之间通讯的解决方案
2018/11/23 Javascript
基于mpvue小程序使用echarts画折线图的方法示例
2019/04/24 Javascript
详解element-ui中el-select的默认选择项问题
2019/08/02 Javascript
easyUI使用分页过滤器对数据进行分页操作实例分析
2020/06/01 Javascript
paramiko模块安装和使用(远程登录服务器)
2014/01/27 Python
从零学Python之入门(二)基本数据类型
2014/05/25 Python
使用Python编写一个模仿CPU工作的程序
2015/04/16 Python
在python3.5中使用OpenCV的实例讲解
2018/04/02 Python
pandas每次多Sheet写入文件的方法
2018/12/10 Python
selenium跳过webdriver检测并模拟登录淘宝
2019/06/12 Python
Django如何将URL映射到视图
2019/07/29 Python
查看已安装tensorflow版本的方法示例
2020/04/19 Python
python爬取音频下载的示例代码
2020/10/19 Python
Python 多进程原理及实现
2020/12/21 Python
使用豆瓣源来安装python中的第三方库方法
2021/01/26 Python
Python tkinter实现日期选择器
2021/02/22 Python
HTML5的postMessage的使用手册
2018/12/19 HTML / CSS
全球知名鞋履品牌授权零售商:Journeys
2016/09/17 全球购物
党员一帮一活动总结
2014/07/08 职场文书
中学生2014国庆节演讲稿:不屈的民族
2014/09/21 职场文书
运动会搞笑广播稿
2014/10/14 职场文书
离婚协议书怎么写
2015/01/26 职场文书
谁动了我的奶酪读书笔记
2015/06/30 职场文书
Java常用函数式接口总结
2021/06/29 Java/Android