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 相关文章推荐
用javascript实现无刷新更新数据的详细步骤 asp
Dec 26 Javascript
js图片滚动效果时间可随意设定当鼠标移上去时停止
Jun 26 Javascript
AngularJS ng-change 指令的详解及简单实例
Jul 30 Javascript
微信开发 微信授权详解
Oct 21 Javascript
JavaScript数据结构之二叉树的删除算法示例
Apr 13 Javascript
jQuery实现的页面弹幕效果【测试可用】
Aug 17 jQuery
webpack4 SCSS提取和懒加载的示例
Sep 03 Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
Jan 20 Javascript
关于layui的动态图标不显示的解决方法
Sep 04 Javascript
解决node终端下运行js文件不支持ES6语法
Apr 04 Javascript
解决vue无法侦听数组及对象属性的变化问题
Jul 17 Javascript
基于vue+echarts数据可视化大屏展示的实现
Dec 25 Vue.js
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
优化NFR之一 --MSSQL Hello Buffer Overflow
2006/10/09 PHP
自定义PHP分页函数
2006/10/09 PHP
我的论坛源代码(八)
2006/10/09 PHP
基于PHP 面向对象之成员方法详解
2013/05/04 PHP
destoon切换城市后实现logo旁边显示地区名称的方法
2014/08/21 PHP
编写PHP脚本过滤用户上传的图片
2015/07/03 PHP
PHP实现清除wordpress里恶意代码
2015/10/21 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
2016/02/15 PHP
php while循环控制的简单实例
2016/05/30 PHP
php使用curl代理实现抓取数据的方法
2017/02/03 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
2017/07/03 PHP
各种常用浏览器getBoundingClientRect的解析
2009/05/21 Javascript
JavaScript运行过程中的“预编译阶段”和“执行阶段”
2015/12/16 Javascript
JSONObject使用方法详解
2015/12/17 Javascript
jQuery 获取跨域XML(RSS)数据的相关总结分析
2016/05/18 Javascript
Javascript类型系统之String字符串类型详解
2016/06/21 Javascript
AngularJS入门教程之路由与多视图详解
2016/08/19 Javascript
JS 调试中常见的报错问题解决方法
2017/05/20 Javascript
如何理解Vue的.sync修饰符的使用
2017/08/17 Javascript
js逆向解密之网络爬虫
2019/05/30 Javascript
vue动态子组件的两种实现方式
2019/09/01 Javascript
layui table 获取分页 limit的方法
2019/09/20 Javascript
[00:12]DAC2018 Miracle-站上中单舞台,他能否再写奇迹?
2018/04/06 DOTA
[44:30]完美世界DOTA2联赛PWL S2 GXR vs Magma 第一场 11.25
2020/11/26 DOTA
urllib2自定义opener详解
2014/02/07 Python
Pycharm学习教程(7)虚拟机VM的配置教程
2017/05/04 Python
python支付宝支付示例详解
2019/08/22 Python
Django Serializer HiddenField隐藏字段实例
2020/03/31 Python
Python实现代码块儿折叠
2020/04/15 Python
13个Pandas实用技巧,助你提高开发效率
2020/08/19 Python
html5 offlline 缓存使用示例
2013/06/24 HTML / CSS
表扬信格式
2014/01/12 职场文书
个人自我鉴定总结
2014/03/25 职场文书
《凡卡》教学反思
2014/04/09 职场文书
老人节标语大全
2014/10/08 职场文书
2015年重阳节主持词
2015/07/04 职场文书