使用原生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 相关文章推荐
Javascript数组的排序 sort()方法和reverse()方法
Jun 04 Javascript
jquery Moblie入门—hello world的示例代码学习
Jan 08 Javascript
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
Dec 06 Javascript
jquery.fastLiveFilter.js实现输入自动过滤的方法
Aug 11 Javascript
jQuery中$.grep() 过滤函数 数组过滤
Nov 22 Javascript
Vue自定义指令介绍(2)
Dec 08 Javascript
jQuery窗口拖动功能的实现代码
Feb 04 Javascript
jQuery表格(Table)基本操作实例分析
Mar 10 Javascript
实现div滚动条默认最底部以及默认最右边的示例代码
Nov 15 Javascript
仿淘宝JSsearch搜索下拉深度用法
Jan 15 Javascript
基于Vue+ElementUI的省市区地址选择通用组件
Nov 20 Javascript
js实现中文实时时钟
Jan 15 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小程序自动提交到自助友情连接
2009/11/24 PHP
PHP数据库连接mysql与mysqli对比分析
2016/01/04 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
2016/06/19 PHP
PHP中的浅复制与深复制的实例详解
2017/10/26 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
2019/05/29 PHP
PHP进阶学习之类的自动加载机制原理分析
2019/06/18 PHP
tagName的使用,留一笔
2006/06/26 Javascript
Jquery 表格合并的问题分享
2011/09/17 Javascript
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
2013/02/02 Javascript
基于NodeJS的前后端分离的思考与实践(一)全栈式开发
2014/09/26 NodeJs
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
2016/06/13 Javascript
漫谈JS引擎的运行机制 你应该知道什么
2016/06/15 Javascript
基于Bootstrap 3 JQuery及RegExp的表单验证功能
2017/02/16 Javascript
浅谈js函数三种定义方式 &amp; 四种调用方式 &amp; 调用顺序
2017/02/19 Javascript
Vue动态实现评分效果
2017/05/24 Javascript
vue2中的keep-alive使用总结及注意事项
2017/12/21 Javascript
jQuery实现图片上传预览效果功能完整实例【测试可用】
2018/05/28 jQuery
vue单页应用在页面刷新时保留状态数据的方法
2018/09/21 Javascript
微信小程序关键字变色实现代码实例
2019/12/13 Javascript
JavaScript实现拖拽效果
2020/03/16 Javascript
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
fastcgi文件读取漏洞之python扫描脚本
2017/04/23 Python
基于Python pip用国内镜像下载的方法
2018/06/12 Python
使用python获取电脑的磁盘信息方法
2018/11/01 Python
Python定时发送天气预报邮件代码实例
2019/09/09 Python
css3过渡_动力节点Java学院整理
2017/07/11 HTML / CSS
HTML5 Canvas渐进填充与透明实现图像的Mask效果
2013/07/11 HTML / CSS
澳大利亚买卖正宗二手奢侈品交易平台:Luxe.It.Fwd
2019/10/16 全球购物
泰国第一在线超市:Tops
2021/02/13 全球购物
三年级科学教学反思
2014/01/29 职场文书
社区敬老月活动实施方案
2014/02/17 职场文书
公司股东出资证明书
2014/11/01 职场文书
2015年加油站站长工作总结
2015/05/27 职场文书
2016年基层党组织公开承诺书
2016/03/25 职场文书
nginx rewrite功能使用场景分析
2022/05/30 Servers