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 相关文章推荐
商城常用滚动的焦点图效果代码简单实用
Mar 28 Javascript
onkeydown事件解决按回车键直接提交数据的需求
Apr 11 Javascript
js弹出层永远居中实现思路及代码
Nov 29 Javascript
js简单的弹出框有关闭按钮
May 05 Javascript
JavaScript二维数组实现的省市联动菜单
May 08 Javascript
3种Jquery限制文本框只能输入数字字母的方法
Dec 03 Javascript
jQuery中大家不太了解的几个方法
Mar 04 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
Aug 19 Javascript
vue如何使用 Slot 分发内容实例详解
Sep 05 Javascript
微信小程序ibeacon三点定位详解
Oct 31 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
Sep 17 Javascript
2019最新21个MySQL高频面试题介绍
Feb 06 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
详解WordPress中的头像缓存和代理中的缓存更新方法
2016/03/01 PHP
CodeIgniter集成smarty的方法详解
2016/05/26 PHP
php获得刚插入数据的id 的几种方法总结
2018/05/31 PHP
提高网站性能之 如何对待JavaScript
2009/10/31 Javascript
jquery库或JS文件在eclipse下报错问题解决方法
2014/04/17 Javascript
javascript时间差插件分享
2016/07/18 Javascript
用jQuery.ajaxSetup实现对请求和响应数据的过滤
2016/12/20 Javascript
flag和jq on 的绑定多个对象和方法(必看)
2017/02/27 Javascript
移动端刮刮乐的实现方式(js+HTML5)
2017/03/23 Javascript
vue中用H5实现文件上传的方法实例代码
2017/05/27 Javascript
小程序绑定用户方案优化小结
2019/05/15 Javascript
JS实现动态星空背景效果
2019/11/01 Javascript
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
2019/12/06 Javascript
react基本安装与测试示例
2020/04/27 Javascript
Python实现的计算马氏距离算法示例
2018/04/03 Python
python数字图像处理之高级形态学处理
2018/04/27 Python
TensorFlow 滑动平均的示例代码
2018/06/19 Python
pandas读取csv文件,分隔符参数sep的实例
2018/12/12 Python
Python Django 命名空间模式的实现
2019/08/09 Python
python lambda表达式(匿名函数)写法解析
2019/09/16 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
python实现的汉诺塔算法示例
2019/10/23 Python
Python Handler处理器和自定义Opener原理详解
2020/03/05 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
2020/05/25 Python
python如何查看网页代码
2020/06/07 Python
Bath & Body Works阿联酋:在线购买沐浴和身体用品
2021/02/27 全球购物
汽车维修与检测专业应届生求职信
2013/11/12 职场文书
餐饮业的创业计划书范文
2013/12/26 职场文书
远程教育心得体会
2014/01/03 职场文书
战略合作意向书范本
2014/04/01 职场文书
《红军不怕远征难》教学反思
2014/04/14 职场文书
关于旅游的活动方案
2014/08/15 职场文书
《童年的发现》教学反思
2016/02/18 职场文书
pytorch中的numel函数用法说明
2021/05/13 Python
python区块链实现简版工作量证明
2022/05/25 Python
MySQL中LAG()函数和LEAD()函数的使用
2022/08/14 MySQL