使用滚轮轮播并保持屏幕不滚动

通过滚轮事件实现轮播效果,但要防止滚轮操作导致页面整体滚动。文章介绍了尝试设置body样式属性如overflow和position来解决,以及阻止滚轮事件默认行为的思路,最终成功阻止屏幕滚动并实现滚轮轮播。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先如果要用滚轮实现轮播,必然会绑定一个滚轮事件。

网上有滚轮事件的兼容性写法,先拿过来用,在进行修改。


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();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值