使用原生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 toggle使用分析
Nov 16 Javascript
初试jQuery EasyUI 使用介绍
Apr 01 Javascript
JS中eval函数的使用示例
Jul 21 Javascript
js文字横向滚动特效
Nov 11 Javascript
jQuery ui autocomplete选择列表被Bootstrap模态窗遮挡的完美解决方法
Sep 23 Javascript
Javascript中作用域的详细介绍
Oct 06 Javascript
angular实现form验证实例代码
Jan 17 Javascript
js定时器+简单的动画效果实例
Nov 10 Javascript
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
Aug 20 Javascript
AngularJS 事件发布机制
Aug 28 Javascript
JQuery通过键盘控制键盘按下与松开触发事件
Aug 07 jQuery
vue-cli —— 如何局部修改Element样式
Oct 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
Terran建筑一览
2020/03/14 星际争霸
php session 预定义数组
2009/03/16 PHP
php将session放入memcached的设置方法
2014/02/14 PHP
MySql数据库查询结果用表格输出PHP代码示例
2015/03/20 PHP
详解js异步文件加载器
2016/01/24 PHP
php实现的生成排列算法示例
2019/07/25 PHP
php7连接MySQL实现简易查询程序的方法
2020/10/13 PHP
jQuery-ui中自动完成实现方法
2010/06/10 Javascript
js Event对象的5种坐标
2011/09/12 Javascript
js操纵dom生成下拉列表框的方法
2014/02/24 Javascript
对 jQuery 中 data 方法的误解分析
2014/06/18 Javascript
AngularJS实现表单手动验证和表单自动验证
2015/12/09 Javascript
vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
2017/03/06 Javascript
基于jQuery实现文字打印动态效果
2017/04/21 jQuery
前端axios下载excel文件(二进制)的处理方法
2018/07/31 Javascript
Vue项目自动转换 px 为 rem的实现方法
2018/10/29 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
2019/05/29 Javascript
JS实现的排列组合算法示例
2019/07/16 Javascript
Layui之table中的radio在切换分页时无法记住选中状态的解决方法
2019/09/02 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
2020/02/11 Javascript
javascript中正则表达式语法详解
2020/08/07 Javascript
让你30分钟快速掌握vue3教程
2020/10/26 Javascript
Vue中使用Echarts仪表盘展示实时数据的实现
2020/11/01 Javascript
跟老齐学Python之??碌某?? target=
2014/09/12 Python
在Linux系统上部署Apache+Python+Django+MySQL环境
2015/12/24 Python
windows下 兼容Python2和Python3的解决方法
2018/12/05 Python
pandas统计重复值次数的方法实现
2021/02/20 Python
飞利浦法国官网:Philips法国
2019/07/10 全球购物
介绍一下Make? 为什么使用make
2013/12/08 面试题
优秀团员个人的自我评价
2013/10/02 职场文书
药学专业大学生个人的自我评价
2013/11/04 职场文书
团日活动总结范文
2014/04/25 职场文书
领导班子三严三实对照检查材料
2014/09/25 职场文书
2014年环保工作总结
2014/11/26 职场文书
假如给我三天光明读书笔记
2015/06/26 职场文书
canvas多重阴影发光效果实现
2021/04/20 Javascript