Firefox利用DOMMouseScroll,其他的浏览器利用mousewheel。滚动事宜触发时Firefox利用detail属性捕捉滚轮信息,其他的浏览器利用wheelDelta。不知道为何在该问题上其他厂商和微软的如此同等。Firefox可以利用addEventListener方法绑定DomMouseScroll事宜。
elem.addEventListener(‘DOMMouseScroll’, func, false);IE和其他的主流浏览器可以利用传统的事宜绑定模型。但不要利用IE专有的attachEvent方法,其他主流浏览器并不识别微软的这个方法。
Firefox 鼠标滚轮向上滚动是-3,向下滚动是3
IE 鼠标滚轮向上滚动是120,向下滚动是-120
Safari 鼠标滚轮向上滚动是360,向下滚动是-360
Opera 鼠标滚轮向上滚动是120,向下滚动是-120
Chrome 鼠标滚轮向上滚动是120,向下滚动是-120
有人在Safari下做了一些测试:”只是滚动一圈的话,值为+-0.1,如果滚动地轻微快点的话(多滚动几圈),这个值也会变大。 这是由于Mac OS下有鼠标滚轮加速功能。滚动一次,浏览器滚动1像素,滚动3次,浏览器却滚动30像素”。同时他也对Camino(基于Gecko的内核引擎)进行研究:“与Safari相似(+- 0.3 to +-Infinity),虽然利用了与firefox相同的内核引擎,但结果这个delta值却只在+-2.666666里浮动,无论滚动速率如何
IE/Opera属于同一类型,利用attachEvent即可添加滚轮事宜。
/IE注册事宜/ if(document.attachEvent){ document.attachEvent('onmousewheel',scrollFunc); }
Firefox利用addEventListener添加滚轮事宜
/Firefox注册事宜/ if(document.addEventListener){ document.addEventListener('DOMMouseScroll',scrollFunc,false); }
Safari与Chrome属于同一类型,可利用HTML DOM办法添加事宜
window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chrome
个中除Firefox外别的均可利用HTML DOM办法添加事宜,因此添加事宜利用以下办法
/注册事宜/ if(document.addEventListener){ document.addEventListener('DOMMouseScroll',scrollFunc,false); }//W3C window.onmousewheel=document.onmousewheel=scrollFunc;//IE/Opera/Chromex
下面两个参数可以获取滚动的位置
document.documentElement.scrollTop:垂直方向
document.documentElement.scrollLeft:水平方向
放入监听事宜后就可以在鼠标滑轮滚动时给一些元素设置浮动样式
如头条号的揭橥文章界面:
下滑前
下滑后:
下滑后