首先如果要用滚轮实现轮播,必然会绑定一个滚轮事件。
网上有滚轮事件的兼容性写法,先拿过来用,在进行修改。
if (window.addEventListener) //FF,火狐浏览器会识别该方法
document.addEventListener('DOMMouseScroll', wheel, false);
document.onmousewheel = wheel; //W3C
//统一处理滚轮滚动事件
function wheel(event) {
var delta = 0;
if (!event) event = window.event;
//IE、chrome浏览器使用的是wheelDelta,并且值为“正负120”
if (event.wheelDelta) {
delta = event.wheelDelta / 120;
if (window.opera)
//因为IE、chrome等向下滚动是负值,FF是正值,为了处理一致性,在此取反处理
delta = -delta;
} else if (event.detail) { //FF浏览器使用的是detail,其值为“正负3”
delta = -event.detail / 3;
}
if (delta) {
handle(delta); //处理函数
}
}
好了到了这一步,已经可以触发滚动事件了。但是怎么样才能滚轮滚动时,触发滚轮事件但是不让页面滚动呢?
有了!百度一下:
body.style.overflow = 'hidden'; 妈的我滚动条呢?
body.style.position = 'fixed',你倒是动啊。
还有的 window.onmousewheel = null 你这样我怎么动。。。
没有办法啊,只能头铁花时间慢慢琢磨。
这个滚轮滚动是靠什么机制实现的啊,滚轮滚动应该会调用某个函数实现屏幕滚动吧?我把这个东西给赋值为空,
然后执行完再回去行不? 但是我只知道隐藏滚动条的时候才不能移动啊。。。我靠这怎么办?
等等,如果滚动滚轮会调用某个方法滚动屏幕的话。。。
那我就不让他调用。
//阻止默认行为
event.preventDefault()
这就成功了。
最后再阻止冒泡捕获
//阻止事件冒泡和屏幕滚动
event.preventDefault() && event.stopPropagation();