使用原生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 相关文章推荐
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
Feb 02 Javascript
关于textarea提交的内容无法换行的解决办法
Apr 09 Javascript
jquery 取子节点及当前节点属性值的方法
Aug 24 Javascript
jquery实现下拉框功能效果【实例代码】
May 06 Javascript
jquery+ajax+text文本框实现智能提示完整实例
Jul 09 Javascript
微信小程序 vidao实现视频播放和弹幕的功能
Nov 02 Javascript
简单实现jQuery级联菜单
Jan 09 Javascript
微信小程序switch组件使用详解
Jan 31 Javascript
vue2中使用sass并配置全局的sass样式变量的方法
Sep 04 Javascript
vue element中axios下载文件(后端Python)
May 10 Javascript
javascript自定义日期比较函数用法示例
Jul 22 Javascript
JavaScript设计模型Iterator实例解析
Jan 22 Javascript
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
PHP实现批量生成App各种尺寸Logo
2015/03/19 PHP
php校验表单检测字段是否为空的方法
2015/03/20 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
2017/03/28 PHP
JavaScript让IE浏览器event对象符合W3C DOM标准
2009/11/24 Javascript
过虑特殊字符输入的js代码
2010/08/05 Javascript
jquery控制listbox中项的移动并排序的实现代码
2010/09/28 Javascript
javascript学习笔记(十二) RegExp类型介绍
2012/06/20 Javascript
javascript中拼接HTML字符串的最快、最好的方法
2014/06/07 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
2014/07/21 Javascript
js闭包的用途详解
2014/11/09 Javascript
JS组件Bootstrap Table表格行拖拽效果实现代码
2020/08/27 Javascript
JavaScript手机振动API
2016/06/11 Javascript
vue制作加载更多功能的正确打开方式
2016/10/12 Javascript
Javascript 跨域知识详细介绍
2016/10/30 Javascript
利用nodejs监控文件变化并使用sftp上传到服务器
2017/02/18 NodeJs
jQuery 防止相同的事件快速重复触发方法
2018/02/08 jQuery
JQuery中DOM节点的操作与访问方法实例分析
2019/12/23 jQuery
JavaScript中的this基本问题实例小结
2020/03/09 Javascript
[02:31]2014DOTA2国际邀请赛2009专访:干爹表现出乎意料 看好DK杀回决赛
2014/07/20 DOTA
python在指定目录下查找gif文件的方法
2015/05/04 Python
详解Python中的__new__、__init__、__call__三个特殊方法
2016/06/02 Python
通过Python爬虫代理IP快速增加博客阅读量
2016/12/14 Python
高质量Python代码编写的5个优化技巧
2017/11/16 Python
pyqt5让图片自适应QLabel大小上以及移除已显示的图片方法
2019/06/21 Python
Django model update的多种用法介绍
2020/03/28 Python
wxPython绘图模块wxPyPlot实现数据可视化
2019/11/19 Python
python如何基于redis实现ip代理池
2020/01/17 Python
Python通过len函数返回对象长度
2020/10/22 Python
Python字节单位转换(将字节转换为K M G T)
2021/03/02 Python
佳能英国官方网站:Canon UK
2017/08/08 全球购物
中学生爱国演讲稿
2013/12/31 职场文书
信息总监管理职责范本
2014/03/08 职场文书
党的群众路线教育学习材料
2014/05/12 职场文书
信访工作经验交流材料
2014/05/23 职场文书
高校自主招生校长推荐信
2015/03/23 职场文书
CSS子盒子水平和垂直居中的五种方法
2022/07/23 HTML / CSS