使用原生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 Base64编码和解码,实现URL参数传递。
Sep 18 Javascript
jquery的Tooltip插件 qtip使用详细说明
Sep 08 Javascript
JS清除IE浏览器缓存的方法
Jul 26 Javascript
搭建pomelo 开发环境
Jun 24 Javascript
JavaScript常用脚本汇总(三)
Mar 04 Javascript
快速实现JS图片懒加载(可视区域加载)示例代码
Jan 04 Javascript
一步步教会你微信小程序的登录鉴权
Apr 09 Javascript
vue中slot(插槽)的介绍与使用
Nov 12 Javascript
Vue项目中使用better-scroll实现一个轮播图自动播放功能
Dec 03 Javascript
vue.js引入外部CSS样式和外部JS文件的方法
Jan 06 Javascript
npm 常用命令详解(小结)
Jan 17 Javascript
微信小程序仿抖音短视频切换效果的实例代码
Jun 24 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中的string类型使用说明
2010/07/27 PHP
一个PHP缓存类代码(附详细说明)
2011/06/09 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
动态的改变IFrame的高度实现IFrame自动伸展适应高度
2012/12/28 Javascript
JS测试显示屏分辨率以及屏幕尺寸的方法
2013/11/22 Javascript
JavaScript生成的动态下雨背景效果实现方法
2015/02/25 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
2016/07/05 Javascript
BootstrapTable+KnockoutJS自定义T4模板快速生成增删改查页面
2016/08/01 Javascript
如何提高Dom访问速度
2017/01/05 Javascript
jQuery EasyUI ProgressBar进度条组件
2017/02/28 Javascript
angular使用post、get向后台传参的问题实例
2017/05/27 Javascript
vuex actions传递多参数的处理方法
2018/09/18 Javascript
JavaScript实现的鼠标跟随特效示例【2则实例】
2018/12/22 Javascript
通过实例学习React中事件节流防抖
2019/06/17 Javascript
关于vue-cli3打包代码后白屏的解决方案
2020/09/02 Javascript
[01:12]DOTA2次级职业联赛 - Newbee.Y 战队宣传片
2014/12/01 DOTA
[03:45]Newbee战队出征西雅图 决战2016国际邀请赛
2016/08/02 DOTA
[33:15]2018DOTA2亚洲邀请赛3月30日 小组赛B组 VP VS Mineski
2018/03/31 DOTA
python使用clear方法清除字典内全部数据实例
2015/07/11 Python
Python实现的根据IP地址计算子网掩码位数功能示例
2018/05/23 Python
Python基于xlrd模块操作Excel的方法示例
2018/06/21 Python
python getpass实现密文实例详解
2019/09/24 Python
在python中求分布函数相关的包实例
2020/04/15 Python
使用openCV去除文字中乱入的线条实例
2020/06/02 Python
如何教少儿学习Python编程
2020/07/10 Python
Python如何重新加载模块
2020/07/29 Python
美国校园市场:OCM
2017/06/08 全球购物
经济贸易专业自荐信
2014/06/11 职场文书
做一个有道德的人活动实施方案
2014/08/23 职场文书
2015年幼儿园中班下学期工作总结
2015/05/22 职场文书
吴仁宝观后感
2015/06/09 职场文书
舞出我人生观后感
2015/06/16 职场文书
导游带团欢迎词
2015/09/30 职场文书
2019个人工作态度自我评价
2019/04/24 职场文书
正则表达式拆分url实例代码
2022/02/24 Java/Android
SpringCloud超详细讲解Feign声明式服务调用
2022/06/21 Java/Android