使用原生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 相关文章推荐
使用Modello编写JavaScript类
Dec 22 Javascript
19个很有用的 JavaScript库推荐
Jun 27 Javascript
使用javascript实现有效时间的控制,并显示将要过期的时间
Jan 02 Javascript
在JavaScript中操作时间之getUTCDate()方法的使用
Jun 10 Javascript
JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例
Dec 04 Javascript
javascript实现网页端解压并查看zip文件
Dec 15 Javascript
javascript断点调试心得分享
Apr 23 Javascript
js判断数组是否包含某个字符串变量的实例
Nov 24 Javascript
vue单文件组件lint error自动fix与styleLint报错自动fix详解
Jan 08 Javascript
Vue 实现前进刷新后退不刷新的效果
Jun 14 Javascript
js blob类型url的视频下载问题的解决
Nov 29 Javascript
基于javascript处理二进制图片流过程详解
Jun 08 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
smarty静态实验表明,网络上是错的~呵呵
2006/11/25 PHP
php json转换成数组形式代码分享
2014/11/10 PHP
php使用CURL伪造IP和来源实例详解
2015/01/15 PHP
Symfony页面的基本创建实例详解
2015/01/26 PHP
php数组合并与拆分实例分析
2015/06/12 PHP
PHP处理CSV表格文件的常用操作方法总结
2016/07/01 PHP
CentOS7编译安装php7.1的教程详解
2019/04/18 PHP
可实现多表单提交的javascript函数
2007/08/01 Javascript
js 提交和设置表单的值
2008/12/19 Javascript
多浏览器支持的右下角浮动窗口
2010/04/01 Javascript
Javascript延迟执行实现方法(setTimeout)
2010/12/30 Javascript
JQuery each()嵌套使用小结
2014/04/18 Javascript
深入理解JavaScript系列(34):设计模式之命令模式详解
2015/03/03 Javascript
ajax在兼容模式下失效的快速解决方法
2016/03/22 Javascript
ES6中的箭头函数实例详解
2017/04/06 Javascript
微信小游戏之使用three.js 绘制一个旋转的三角形
2019/06/10 Javascript
js属性对象的hasOwnProperty方法的使用
2021/02/05 Javascript
Python 连连看连接算法
2008/11/22 Python
Python实现二维有序数组查找的方法
2016/04/27 Python
python的exec、eval使用分析
2017/12/11 Python
python3基于TCP实现CS架构文件传输
2018/07/28 Python
python3.6使用tkinter实现弹跳小球游戏
2019/05/09 Python
Python截图并保存的具体实例
2021/01/14 Python
Superdry极度干燥美国官网:英国制造的服装品牌
2018/11/13 全球购物
机电专业大学生求职信
2013/10/04 职场文书
市场营销个人求职信范文
2014/02/02 职场文书
财务部经理岗位职责
2014/02/03 职场文书
土木工程专业推荐信
2014/02/19 职场文书
《钱学森》听课反思
2014/03/01 职场文书
2014年教师思想工作总结
2014/12/03 职场文书
入党积极分子半年考察意见
2015/06/02 职场文书
2015年除四害工作总结
2015/07/23 职场文书
为什么node.js不适合大型项目
2021/04/28 Javascript
简单总结SpringMVC拦截器的使用方法
2021/06/28 Java/Android
一次项目中Thinkphp绕过禁用函数的实战记录
2021/11/17 PHP
Java实现经典游戏泡泡堂的示例代码
2022/04/04 Java/Android