使用原生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 相关文章推荐
User Scripts: Video Download by User Scripts
May 14 Javascript
jquery div 居中技巧应用介绍
Nov 24 Javascript
jQuery 无刷新分页实例代码
Nov 12 Javascript
jquery利用命名空间移除绑定事件的方法
Mar 11 Javascript
JS中利用localStorage防止页面动态添加数据刷新后数据丢失
Mar 10 Javascript
微信小程序分享功能之按钮button 边框隐藏和点击隐藏
Jun 14 Javascript
Vue.js 十五分钟入门图文教程
Sep 12 Javascript
element-ui组件table实现自定义筛选功能的示例代码
Mar 15 Javascript
使用Vue中 v-for循环列表控制按钮隐藏显示功能
Apr 23 Javascript
学习RxJS之JavaScript框架Cycle.js
Jun 17 Javascript
微信小程序日历插件代码实例
Dec 04 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
Nov 19 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
浅谈Windows下 PHP4.0与oracle 8的连接设置
2006/10/09 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
2011/10/31 PHP
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
cakephp常见知识点汇总
2017/02/24 PHP
PHP分页显示的方法分析【附PHP通用分页类】
2018/05/10 PHP
PHP序列化和反序列化深度剖析实例讲解
2020/12/29 PHP
javascript实现节点(div)名称编辑
2014/12/17 Javascript
javascript引用赋值(地址传值)用法实例
2015/01/13 Javascript
jQuery.position()方法获取不到值的安全替换方法
2015/03/13 Javascript
JavaScript 基础函数_深入剖析变量和作用域
2016/05/18 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
JS实现数组去重方法总结(六种方法)
2017/07/14 Javascript
js+html5生成自动排列对话框实例
2017/10/09 Javascript
webpack打包js的方法
2018/03/12 Javascript
axios异步提交表单数据的几种方法
2019/08/11 Javascript
JS中比较两个Object数组是否相等方法实例
2019/11/11 Javascript
恢复百度云盘本地误删的文件脚本(简单方法)
2017/10/21 Python
Python复制Word内容并使用格式设字体与大小实例代码
2018/01/22 Python
Python 将pdf转成图片的方法
2018/04/23 Python
Python高级用法总结
2018/05/26 Python
Python3模拟登录操作实例分析
2019/03/12 Python
Python中 CSV格式清洗与转换的实例代码
2019/08/29 Python
Python如何实现大型数组运算(使用NumPy)
2020/07/24 Python
Python模拟登录和登录跳转的参考示例
2020/10/30 Python
PyTorch 中的傅里叶卷积实现示例
2020/12/11 Python
基于Canvas+Vue的弹幕组件的实现
2019/07/23 HTML / CSS
3种方式实现瀑布流布局小结
2019/09/05 HTML / CSS
叙述DBMS对数据控制功能有哪些
2016/06/12 面试题
介绍一下ICMP(Internet Control Message Protocol)Internet控制信息协议
2016/11/26 面试题
学生自我评语大全
2014/04/18 职场文书
安全口号大全
2014/06/21 职场文书
查摆问题整改措施
2014/10/24 职场文书
2014年个人工作总结报告
2014/11/27 职场文书
民事和解协议书格式
2014/11/29 职场文书
家长意见书
2015/06/04 职场文书
在CSS中映射鼠标位置并实现通过鼠标移动控制页面元素效果(实例代码)
2021/04/22 HTML / CSS