JavaScript实现鼠标滚轮控制页面图片切换

  最常见就是图片的切换了,能通过滚动滚轮进行图片的浏览,省得用户还要去点下一张,做这种繁琐的步骤。来看个简单的例子吧。
 
  
 
  
 
  
 
  <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"
 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
  <htmlxmlns="http://www.w3.org/1999/xhtml">
 
  <head>
 
  <metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
 
  <title>鼠标通过滚动滚轮切换图片</title>
 
  <style>
 
  #picBox{
 
  width:800px;height:600px;
 
  margin:70pxauto;
 
  }
 
  </style>
 
  <script>
 
  varnowPic=1;
 
  functionMouseWheel(e){
 
  varpic;
 
  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";
 
  }elseif(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>
 
  <h3align="center">鼠标通过滚动滚轮切换图片</h3>
 
  <pid="picBox">
 
  <imgsrc="http://picm.bbzhi.com/dongwubizhi/dongwuheji/dongwuheji_69803_m.webp"width="800px"height="600px"id="pic1">
 
  <spanstyle="white-space:pre"></span><imgsrc="http://pic1a.nipic.com/2008-12-22/2008122204359187_2.webp"width="800px"height="600px"id="pic2"style="display:none;">
 
  <spanstyle="white-space:pre"></span><imgsrc="http://imgphoto.gmw.cn/attachement/jpg/site2/20121221/002564a60ce4123e17614e.webp"width="800px"height="600px"id="pic3"style="display:none;">
 
  </p>
 
  </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循环只是让图片有顺序的隐藏和显示,相信这个不难看懂。




本文转载自中文网

 

推荐阅读