使用原生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 相关文章推荐
五段实用的js高级技巧
Dec 20 Javascript
JS编程小常识很有用
Nov 26 Javascript
javascript中的缓动效果实现程序
Dec 29 Javascript
javascript验证只能输入数字和一个小数点示例
Oct 21 Javascript
使用JS实现jQuery的addClass, removeClass, hasClass函数功能
Oct 31 Javascript
JavaScript判断FileUpload控件上传文件类型
Sep 28 Javascript
js 右侧浮动层效果实现代码(跟随滚动)
Nov 22 Javascript
js实现复制功能(多种方法集合)
Jan 06 Javascript
浅谈Vue响应式(数组变异方法)
May 07 Javascript
微信小程序实现授权登录
May 15 Javascript
vue 监听窗口变化对页面部分元素重新渲染操作
Jul 28 Javascript
Vue.js中v-for指令的用法介绍
Mar 13 Vue.js
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即时捕捉PHP中的错误并发送email通知的实现代码
2013/01/19 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
Laravel登录失败次数限制的实现方法
2020/08/26 PHP
js调出上下文菜单的实例
2015/12/17 Javascript
基于jQuery实现左右图片轮播(原理通用)
2015/12/24 Javascript
聊一聊JavaScript作用域和作用域链
2016/05/03 Javascript
javascript截图 jQuery插件imgAreaSelect使用详解
2016/05/04 Javascript
详解如何提高 webpack 构建 Vue 项目的速度
2017/07/03 Javascript
解决vue中无法动态修改jqgrid组件 url地址的问题
2018/03/01 Javascript
Vue实现active点击切换方法
2018/03/16 Javascript
JavaScript Canvas实现验证码
2020/08/02 Javascript
小程序文字跑马灯效果
2018/12/28 Javascript
微信小程序事件 bindtap bindinput代码实例
2019/08/26 Javascript
基于vue+uniapp直播项目实现uni-app仿抖音/陌陌直播室功能
2019/11/12 Javascript
公众号SVG动画交互实战代码
2020/05/31 Javascript
Vue使用v-viewer实现图片预览
2020/10/21 Javascript
举例讲解Python中的身份运算符的使用方法
2015/10/13 Python
使用NumPy和pandas对CSV文件进行写操作的实例
2018/06/14 Python
Python实现爬取亚马逊数据并打印出Excel文件操作示例
2019/05/16 Python
Python3批量移动指定文件到指定文件夹方法示例
2019/09/02 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
2019/12/31 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
用python查找统一局域网下ip对应的mac地址
2021/01/13 Python
python装饰器代码深入讲解
2021/03/01 Python
Mytheresa中国官网:德国时尚奢侈品商城
2017/08/04 全球购物
卡西欧G-SHOCK英国官网: 防水防震手表
2018/01/08 全球购物
口腔工艺技术专业毕业生自荐信
2013/09/27 职场文书
运动会入场解说词
2014/02/07 职场文书
大学生新学期计划书
2014/04/28 职场文书
竞选班干部演讲稿100字
2014/08/20 职场文书
2014年宣传工作总结
2014/11/18 职场文书
Mysql - 常用函数 每天积极向上
2021/04/05 MySQL
go mod 安装依赖 unkown revision问题的解决方案
2021/05/06 Golang
教你利用python实现企业微信发送消息
2021/05/23 Python
JavaScript 原型与原型链详情
2021/11/02 Javascript
Dubbo+zookeeper搭配分布式服务的过程详解
2022/04/03 Java/Android