使用原生JS实现滚轮翻页效果的示例代码


Posted in Javascript onMay 31, 2020

一、滚轮事件

当用户通过鼠标滚轮与页面交互、在垂直方向上滚动页面时,就会触发mousewheel事件,这个事件就是实现全屏切换效果需要用到的。在IE6, IE7, IE8, Opera 10+, Safari 5+中,都提供了 “mousewheel” 事件,而 Firefox 3.5+ 中提供了一个等同的事件:”DOMMouseScroll”。与mousewheel事件对应的event对象中我们还会用到另一个特殊属性—wheelDelta属性。

1、“mousewheel” 事件中的 “event.wheelDelta” 属性值:返回的值,如果是正值说明滚轮是向上滚动,如果是负值说明滚轮是向下滚动;返回的值,均为 120 的倍数,即:幅度大小 = 返回的值 / 120。

2、“DOMMouseScroll” 事件中的 “event.detail” 属性值:返回的值,如果是负值说明滚轮是向上滚动(与 “event.wheelDelta” 正好相反),如果是正值说明滚轮是向下滚动;返回的值,均为 3 的倍数,即:幅度大小 = 返回的值 / 3。

二、实现效果

使用原生JS实现滚轮翻页效果的示例代码 

三、源代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }
    body {
      overflow: hidden;
    }
    .container {
      transition: .5s;
    }
    .item {
      width: 100vw;
      height: 100vh;
    }
  </style>
</head>
<body>
  <div class="container">
    <div class="item" style="background-color: rgb(255,255,0)"></div>
    <div class="item" style="background-color: rgb(255, 145, 0)"></div>
    <div class="item" style="background-color: rgb(0, 17, 255)"></div>
    <div class="item" style="background-color: rgb(0, 255, 136)"></div>
  </div>
  <script src="sun.js"></script>
  <script src='https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js'></script>
  <script>
    $(() => {
      let i = 0;
      let move = sun.throttle(e => {
        if(e.wheelDelta < 0) {
          if( i === $(".item").length - 1) return ;
          i++;
        } else {
          if( i === 0) return;
          i--;
        }
        $(".container").css("transform",`translateY(-${i*100}vh)`);
      },500);
      window.onmousewheel = move;
    })
  </script>
</body>
</html>

其中用到了节流函数 throttle() ,函数代码如下:

function throttle(fn,wait) {
    let endTime = 0;
    return function() {
      if(new Date() - endTime < wait) return;
      fn.apply(this,arguments);
      endTime = new Date();
    }
  },

到此这篇关于使用原生JS实现滚轮翻页效果的示例代码的文章就介绍到这了,更多相关JS滚轮翻页内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
jQuery聚合函数实例
May 21 Javascript
基于canvas实现的钟摆效果完整实例
Jan 26 Javascript
jQuery表单验证插件解析(推荐)
Jul 21 Javascript
JavaScript toUpperCase()方法使用详解
Aug 26 Javascript
JS排序之选择排序详解
Apr 08 Javascript
js插件实现图片滑动验证码
Sep 29 Javascript
babel之配置文件.babelrc入门详解
Feb 22 Javascript
原生JS进行前后端同构
Apr 22 Javascript
小程序组件之仿微信通讯录的实现代码
Sep 12 Javascript
JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】
May 01 Javascript
微信小程序实现登录注册功能
Dec 29 Javascript
vue-cli3.x配置全局的scss的时候报错问题及解决
Apr 30 Vue.js
24个ES6方法解决JS实际开发问题(小结)
May 31 #Javascript
公众号SVG动画交互实战代码
May 31 #Javascript
微信小程序调用wx.getImageInfo遇到的坑解决
May 31 #Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
May 31 #Javascript
详解Typescript 内置的模块导入兼容方式
May 31 #Javascript
部署vue+Springboot前后端分离项目的步骤实现
May 31 #Javascript
JQuery获得内容和属性方法解析
May 30 #jQuery
You might like
yii2.0之GridView自定义按钮和链接用法
2014/12/15 PHP
Ubuntu 16.04下安装PHP 7过程详解
2017/03/28 PHP
PHP编程实现脚本异步执行的方法
2017/08/09 PHP
PHP使用栈解决约瑟夫环问题算法示例
2017/08/27 PHP
在线编辑器的实现原理(兼容IE和FireFox)
2007/03/09 Javascript
通过event对象的fromElement属性解决热区设置主实体的一个bug
2008/12/22 Javascript
教你如何自定义百度分享插件以及bshare分享插件的分享按钮
2014/06/20 Javascript
jQuery动态修改超链接地址的方法
2015/02/13 Javascript
JavaScript跨平台的开源框架NativeScript
2015/03/24 Javascript
12个超实用的JQuery代码片段
2015/11/02 Javascript
原生JavaScript实现滚动条效果
2020/03/24 Javascript
JS作为值的函数用法示例
2016/06/20 Javascript
js 判断各种数据类型的简单方法(推荐)
2016/08/29 Javascript
JS实现的幻灯片切换显示效果
2016/09/07 Javascript
利用浮层使select不可选的实现方法
2016/12/03 Javascript
Angularjs中的$apply及优化使用详解
2018/07/02 Javascript
vue-router history模式下的微信分享小结
2018/07/05 Javascript
vue-自定义组件传值的实例讲解
2018/09/18 Javascript
js tab栏切换代码实例解析
2019/09/03 Javascript
jQuery实现的移动端图片缩放功能组件示例
2020/05/01 jQuery
Javascript 模拟mvc实现点餐程序案例详解
2020/12/24 Javascript
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
2021/01/08 Vue.js
python创建只读属性对象的方法(ReadOnlyObject)
2013/02/10 Python
Python+OpenCV实现车牌字符分割和识别
2018/03/31 Python
Python输出\u编码将其转换成中文的实例
2018/12/15 Python
python不使用for计算两组、多个矩形两两间的iou方式
2020/01/18 Python
html2canvas截图空白问题的解决
2020/03/24 HTML / CSS
美国知名的时尚购物网站:Anthropologie
2016/12/22 全球购物
茱莉蔻美国官网:Jurlique美国
2020/11/24 全球购物
介绍下Java中==和equals的区别
2013/09/01 面试题
项目总经理岗位职责
2014/02/14 职场文书
新春寄语大全
2014/04/09 职场文书
缓刑期间思想汇报范文
2014/10/10 职场文书
护理培训心得体会
2016/01/22 职场文书
个人职业生涯规划之自我评估篇
2019/09/03 职场文书
pandas提升计算效率的一些方法汇总
2021/05/30 Python