平时我们兼容什么东西总是在调整低版本IE的兼容性,但是这回不是因为低版本浏览器不给力。而是因为火狐给力过头了,完全不顾其它浏览器的感受标新立异了。除了火狐之外,所有的浏览器都可以使用MouseWheel事件来处理鼠标滚轮的响应。但是火狐却偏偏不支持MouseWheel,而使用无厘头的DOMMouseScroll,这玩意儿除了火狐以外其它浏览器都不兼容。也就是说,对于鼠标滚轮事件的处理,火狐只能使用DOMMouseScroll。而非火狐则只能使用MouseWheel。这两种事件实现的原理不同,他们处理的数据也不同。MouseWheel的事件参数中包含了wheelDelta属性,这个属性的意思是事件被触发以后,滚动条应该滚动的距离,单位是像素。这个从属性名称就可以看出,Delta这个词通常是用来描述增量的,你可以简单的理解为滚动条的滚动增量。在火狐的DOMMouseScroll中不使用这个,而是使用detail来获取滚动的距离,而且更奇葩的是它的单位不是像素,是行。这个行不是我们平时用的line-height的行,我们也没必要管那么多。因为我们使用鼠标滚轮事件的时候想要的不是行也不是像素,而是用户对滚轮滚动的格数。windows中的默认设置是,滚轮滚动一格等于3行,而每个行是40像素。我们可以在控制面板的鼠标设置中修改它。
虽然这些参数是可以被修改的,但是不用担心。因为除了火狐以外,事件中使用的是参数的默认值,即使修改了移动的行数,事件中得到的数据也不会因此改变。火狐这奇葩的东西目前我还没想到什么办法整治它,但是我觉得应该不会有人手贱到去修改系统的这个属性。所以我决定暂时无视这万中无一的奇葩用户。如果以后有特殊需求,我会另外写一篇文章来解决这个问题。下面是实现这个效果的完整代码
使用鼠标滚轮调整数值大小
0
这样,滚轮事件就可以使用了。这里值得注意的是最有一步的组织浏览器默认方法的动作,如果少了它这个滚动事件就会被整个文档截获,当你滚动滚轮的时候整个文档都会被你滚动。在低版本IE中就不用preventDefault了,直接return false就可以了。
暂时先说到这儿吧,其实我对这个事件也不是非常了解,因为这玩意儿用的不多。明天我们继续研究它,来说说滚动条的制作。
本文来源于广州网站建设公司与广州网站设计制作公司-广帆互动广州公司!