JavaScript实现鼠标滚轮控制页面图片切换功能示例


Posted in Javascript onOctober 14, 2017

本文实例讲述了JavaScript实现鼠标滚轮控制页面图片切换功能。分享给大家供大家参考,具体如下:

鼠标上的滚轮是一个不错的东东,为什么这么说,因为它能帮助我们快速的浏览网页,快速的进行长篇文章的阅读。对于web前端的我们来说又怎么能不注重这个鼠标滚轮呢,那么它能如何让用户更好的浏览网页呢?

最常见就是图片的切换了,能通过滚动滚轮进行图片的浏览,省得用户还要去点下一张,做这种繁琐的步骤。来看个简单的例子吧。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>鼠标通过滚动滚轮切换图片</title>
<style>
#picBox{
  width:800px;height:600px;
  margin:70px auto;
  }
</style>
<script>
  var nowPic=1;
  function MouseWheel(e){
    var pic;
    e=e||window.event;
    for(i=1;i<4;i++){
      if(i==nowPic){
          if(e.wheelDelta){//IE
              pic=document.getElementById("pic"+i);
              pic.style.display="block";
            }else if(e.detail){//Firefox
              pic=document.getElementById("pic"+i);
              pic.style.display="block";
            }
        }else{
          pic=document.getElementById("pic"+i);
          pic.style.display="none";
        }
      }
      if(nowPic>=3){
        nowPic=1;
      }else{
        nowPic++;
      }
    }
  /*Firefox注册事件*/
  if(document.addEventListener){
      document.addEventListener("DOMMouseScroll",MouseWheel,false);
    }
  window.onmousewheel=document.onmousewheel=MouseWheel;//IE/Opera/Chrome
</script>
</head>
<body>
  <h3 align="center">鼠标通过滚动滚轮切换图片</h3>
  <div id="picBox">
    <img src="http://picm.bbzhi.com/dongwubizhi/dongwuheji/dongwuheji_69803_m.jpg" width="800px" height="600px" id="pic1">
<span style="white-space:pre">   </span><img src="http://pic1a.nipic.com/2008-12-22/2008122204359187_2.jpg" width="800px" height="600px" id="pic2" style="display:none;">
<span style="white-space:pre">   </span><img src="http://imgphoto.gmw.cn/attachement/jpg/site2/20121221/002564a60ce4123e17614e.jpg" width="800px" height="600px" id="pic3" style="display:none;">
  </div>
</body>
</html>

重点讲解下js代码,不同的浏览器鼠标滚轮事件也不一样,说白点就是兼容性问题,主要是有两种,onmousewheel(IE/Opera/Safari/Chrome)和DOMMouseScroll(Firefox),如果想兼容firefox,应采用addEventListener监听,这个函数有3个参数,addEventListener(type,listener,useCapture),type就是click,focus......类型,而listener可以直接写方法function(){},也可以调用写好的方法体,如我的例子。useCapture是一个布尔值,只有true和false,表示该事件的响应顺序,选false则采用bubbing(冒泡)方式,选项true采用Capture方式。对于addEventListener以后会出一个详解。

在MouseWheel方法中e.wheelDelta兼容IE等其它浏览器,每当滚动一次滚轮会返回+3/-3(上滚/下滚),而e.detail兼容Firefox浏览器,每当滚动一次滚轮会返回+120/-120(上滚/下滚),通过这些返回的值可以做出是向上还是向下滚动的判断。而for循环只是让图片有顺序的隐藏和显示,相信这个不难看懂。

文中错误与疏漏之处欢迎大家指正。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
js jquery做的图片连续滚动代码
Jan 06 Javascript
js中的caller和callee属性介绍和例子
Jun 07 Javascript
JavaScript判断变量是对象还是数组的方法
Aug 28 Javascript
JS+CSS相对定位实现的下拉菜单
Oct 06 Javascript
jQuery Validate表单验证入门学习
Dec 18 Javascript
纯js实现手风琴效果代码
Apr 17 Javascript
微信小程序开发之实现选项卡(窗口顶部TabBar)页面切换
Nov 25 Javascript
js 取消页面可以选中文字的功能方法
Jan 02 Javascript
从零开始搭建一个react项目开发
Feb 09 Javascript
Layui 设置select下拉框自动选中某项的方法
Aug 14 Javascript
Angular angular-file-upload文件上传的示例代码
Aug 23 Javascript
javascript定时器的简单应用示例【控制方块移动】
Jun 17 Javascript
jQuery结合jQuery.cookie.js插件实现换肤功能示例
Oct 14 #jQuery
jQuery基于cookie实现换肤功能实例
Oct 14 #jQuery
浅谈vue路径优化之resolve
Oct 13 #Javascript
薪资那么高的Web前端必看书单
Oct 13 #Javascript
vue router demo详解
Oct 13 #Javascript
JS实现的简单表单验证功能示例
Oct 13 #Javascript
javascript基于定时器实现进度条功能实例
Oct 13 #Javascript
You might like
PHP中CheckBox多选框上传失败的代码写法
2017/02/13 PHP
Aster vs KG BO3 第一场2.19
2021/03/10 DOTA
jquery ajax 同步异步的执行 return值不能取得的解决方案
2012/01/08 Javascript
浏览器窗口加载和大小改变事件示例
2014/02/27 Javascript
javascript工厂方式定义对象
2014/12/26 Javascript
JavaScript获取当前网页最后修改时间的方法
2015/04/03 Javascript
javascript实现图片自动和可控的轮播切换特效
2015/04/13 Javascript
jQuery获取上传文件的名称的正则表达式
2015/05/21 Javascript
js实现发送验证码后的倒计时功能
2015/05/28 Javascript
理解 JavaScript Scoping &amp; Hoisting(二)
2015/11/18 Javascript
浅析angularJS中的ui-router和ng-grid模块
2016/05/20 Javascript
gulp-htmlmin压缩html的gulp插件实例代码
2016/06/06 Javascript
什么是JavaScript中的结果值?
2016/10/08 Javascript
nodejs使用express创建一个简单web应用
2017/03/31 NodeJs
详解利用 Vue.js 实现前后端分离的RBAC角色权限管理
2017/09/15 Javascript
详解Vue快速零配置的打包工具——parcel
2018/01/16 Javascript
解决vue 中 echart 在子组件中只显示一次的问题
2018/08/07 Javascript
Python基于二分查找实现求整数平方根的方法
2016/05/12 Python
PyQt5每天必学之创建窗口居中效果
2018/04/19 Python
详解pyqt5 动画在QThread线程中无法运行问题
2018/05/05 Python
python之django母板页面的使用
2018/07/03 Python
pyqt5 使用label控件实时显示时间的实例
2019/06/14 Python
Python利用matplotlib做图中图及次坐标轴的实例
2019/07/08 Python
Python二维码生成识别实例详解
2019/07/16 Python
详解pycharm连接不上mysql数据库的解决办法
2020/01/10 Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
2020/03/30 Python
python使用scapy模块实现ARP扫描的过程
2021/01/21 Python
夏威夷航空官网:Hawaiian Airlines
2016/09/11 全球购物
HomeAway的巴西品牌:Alugue Temporada
2018/04/10 全球购物
Famous Footwear加拿大:美国多品牌运动休闲鞋店
2018/12/05 全球购物
Currentbody德国站:健康与美容技术专家
2020/04/05 全球购物
2014年学校体育工作总结
2014/12/08 职场文书
西游记读书笔记
2015/06/25 职场文书
2016年小学“我们的节日·中秋节”活动总结
2016/04/05 职场文书
社交电商模式的兴起:这些新的商机千万别错过
2019/07/26 职场文书
Python如何快速找到多个字典中的公共键(key)
2022/04/29 Python