使用原生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 text,radio,checkbox,select操作实现代码
Jul 09 Javascript
解读JavaScript中 For, While与递归的用法
May 07 Javascript
通过一段代码简单说js中的this的使用
Jul 23 Javascript
键盘KeyCode值列表汇总
Nov 26 Javascript
论JavaScript模块化编程
Mar 07 Javascript
使用Ajax生成的Excel文件并下载的实例
Nov 21 Javascript
Vue.js列表渲染绑定jQuery插件的正确姿势
Jun 29 jQuery
浏览器调试动态js脚本的方法(图解)
Jan 19 Javascript
nuxt+axios实现打包后动态修改请求地址的方法
Apr 22 Javascript
微信小程序开发之获取用户手机号码(php接口解密)
May 17 Javascript
微信小程序用户盒子、宫格列表的实现
Jul 01 Javascript
解决element-ui里的下拉多选框 el-select 时,默认值不可删除问题
Aug 14 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批量生成缩略图的代码
2008/07/19 PHP
THINKPHP+JS实现缩放图片式截图的实现
2010/03/07 PHP
php实现mysql封装类示例
2014/05/07 PHP
浅谈discuz密码加密的方式
2014/05/22 PHP
php实现Linux服务器木马排查及加固功能
2014/12/29 PHP
php curl获取到json对象并转成数组array的方法
2018/05/31 PHP
用JavaScript 处理 URL 的两个函数代码
2007/08/13 Javascript
jQuery 性能优化指南(3)
2009/05/21 Javascript
javascript(jquery)利用函数修改全局变量的代码
2009/11/02 Javascript
javascript当onmousedown、onmouseup、onclick同时应用于同一个标签节点Element
2010/01/05 Javascript
IE之动态添加DOM节点触发window.resize事件
2010/07/27 Javascript
基于Jquery的回车成tab焦点切换效果代码(Enter To Tab )
2010/11/14 Javascript
分享一个常用的javascript静态类
2014/12/31 Javascript
跟我学习javascript的this关键字
2020/05/28 Javascript
javascript 内置对象及常见API详细介绍
2016/11/01 Javascript
angular实现表单验证及提交功能
2017/02/01 Javascript
Node.js应用设置安全的沙箱环境
2018/04/23 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
JS实现鼠标按下拖拽效果
2020/07/23 Javascript
详解Python中的多线程编程
2015/04/09 Python
python爬取m3u8连接的视频
2018/02/28 Python
Django框架模板介绍
2019/01/15 Python
Python3标准库之threading进程中管理并发操作方法
2020/03/30 Python
关于canvas绘制模糊问题的解决方法
2019/09/24 HTML / CSS
德国大型的家具商店:Pharao24.de
2016/10/02 全球购物
Java的基础面试题附答案
2016/01/10 面试题
团支书的期末学习总结自我评价
2013/11/01 职场文书
预备党员思想汇报范文
2013/12/29 职场文书
三年大学自我鉴定
2014/01/16 职场文书
委托证明模板
2014/09/16 职场文书
群众路线党员自我评议范文2014
2014/09/24 职场文书
离婚起诉书怎么写
2015/05/19 职场文书
初中英语教师个人工作总结2015
2015/07/21 职场文书
导游词之广东佛山(南风古灶)
2019/09/24 职场文书
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
2021/06/26 MySQL
浅谈如何保证Mysql主从一致
2022/03/13 MySQL