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 22 Javascript
跨浏览器开发经验总结(四) 怎么写入剪贴板
May 13 Javascript
JSONP 跨域访问代理API-yahooapis实现代码
Dec 02 Javascript
JavaScript中的slice()方法使用详解
Jun 06 Javascript
javascript实现简单的进度条
Jul 02 Javascript
js检查是否关闭浏览器的方法
Aug 02 Javascript
微信小程序自定义组件实现tabs选项卡功能
Jul 14 Javascript
React组件重构之嵌套+继承及高阶组件详解
Jul 19 Javascript
微信小程序调用摄像头隐藏式拍照功能
Aug 22 Javascript
JS使用正则表达式提交页面验证的代码
Oct 16 Javascript
vue组件开发之slider组件使用详解
Aug 21 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
Dec 04 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的反射机制
2016/12/15 PHP
IE中直接运行显示当前网页中的图片 推荐
2006/08/31 Javascript
javascript 触发HTML元素绑定的函数
2010/09/11 Javascript
基于jQuery的为attr添加id title等效果的实现代码
2011/04/20 Javascript
js实现收缩菜单效果实例代码
2013/10/30 Javascript
JS测试显示屏分辨率以及屏幕尺寸的方法
2013/11/22 Javascript
基于jquery实现导航菜单高亮显示(两种方法)
2015/08/23 Javascript
jQuery实现美观的多级动画效果菜单代码
2015/09/06 Javascript
AngularJS解决ng界面长表达式(ui-set)的方法分析
2016/11/07 Javascript
JavaScript动态数量的文件上传控件
2016/11/18 Javascript
微信小程序模板之分页滑动栏
2017/02/10 Javascript
vue货币过滤器的实现方法
2017/04/01 Javascript
JS判断数组那点事
2017/10/10 Javascript
Node.js中DNS模块学习总结
2018/02/28 Javascript
vue.js实现标签页切换效果
2018/06/07 Javascript
Vue CLI3 开启gzip压缩文件的方式
2018/09/30 Javascript
layui自己添加图片按钮并点击跳转页面的例子
2019/09/14 Javascript
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
electron踩坑之remote of undefined的解决
2020/10/06 Javascript
Python中lambda的用法及其与def的区别解析
2014/07/28 Python
python实现在windows服务中新建进程的方法
2015/06/30 Python
Python的collections模块中namedtuple结构使用示例
2016/07/07 Python
13个最常用的Python深度学习库介绍
2017/10/28 Python
Python中pandas模块DataFrame创建方法示例
2018/06/20 Python
Python selenium爬虫实现定时任务过程解析
2020/06/08 Python
python开发一款翻译工具
2020/10/10 Python
美国畅销的跑步机品牌:ProForm
2017/02/06 全球购物
土耳其国际性时尚购物网站:Modanisa
2018/01/19 全球购物
夏尔巴人登珠峰品牌:Sherpa Adventure Gear
2018/02/08 全球购物
FC-Moto美国:欧洲最大的摩托车服装和头盔商店之一
2019/08/24 全球购物
后勤主管岗位职责
2014/03/01 职场文书
2015年全民创业工作总结
2015/07/23 职场文书
浅谈Nginx 中的两种限流方式
2021/03/31 Servers
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL
SpringMVC 整合SSM框架详解
2021/08/30 Java/Android
JavaScript实现外溢动态爱心的效果的示例代码
2022/03/21 Javascript