html页面禁止滚轮事件,在网页进行本地滚动时阻止全局滚动事件(阻止鼠标滚轮事件)...

bbc1937348a4529fccd10dbb2d41fb21.png

标题有点复杂,但这实际上是一个非常简单的问题. 很应该遇到过. 最近,对自动完成插件进行了优化,发现当下拉框中有很多内容时,滚动条就会出现. 如果页面本身具有滚动条,则很容易在两侧滚动,并且体验非常差. 因为我以前从未考虑过此类问题,所以我有信心地进行了思考,应通过技术手段避免这种情况.

efab01eeb065a0f78738eaeb844f1754.png

我一开始就考虑过听滚动事件,但是发现这个想法本身有一个误解,因为滚动元素本身并阻止窗口滚动是没有意义的,这是另一种思考方式,由于滚动通常是鼠标操作,所以为什么不处理滚轮事件呢?

f69069cf98dc98f14803cda0cb429b29.png

一个简单的检查,确实有类似的文章. 众所周知,默认情况下jQuery插件不支持鼠标滚轮事件. 现在,我们可以添加跨浏览器的鼠标滚轮支持. 您可以使用jQuery Mousewheel插件,可以通过搜索jquery.mousewheel.js来找到特定的插件,并且这里没有张贴其他地址.

i_2_3019794534x1266738440_26.jpg

要注意的另一件事是鼠标滚轮事件的增量. 鼠标滚轮的方向和速度可以通过参数delta获得. 如果delta的值为负,则滚轮将向下滚动,如果为正,则滚轮将向上滚动. 这样,我们只需要将鼠标滚动事件绑定到特定元素即可. 当鼠标滚动时,该事件始终被阻止,并且可以根据delta参数调整当前元素. 要实现滚动效果,ScrollTop看起来非常简单,再加上jQuery的Mousewheel插件,基本上每个人都应该知道如何编写,因此在这里我将不做详细介绍.

cb1979322ad49c0482a1a2549fc29b76.png

抛开jQuery插件,并提供直接阻止Mousewheel事件的代码,以测试与常见浏览器的兼容性(IE仅测试了8.0版).

var preventScroll = function(dom){

if(dom.jquery){

dom = dom.get(0);

}

if(navigator.userAgent.indexOf('Firefox') >= 0){ //firefox

dom.addEventListener('DOMMouseScroll',function(e){

dom.scrollTop += e.detail > 0 ? 60 : -60;

e.preventDefault();

},false);

}else{

dom.onmousewheel = function(e){

e = e || window.event;

dom.scrollTop += e.wheelDelta > 0 ? -60 : 60;

return false;

};

}

};

在网页进行本地滚动时阻止全局滚动事件(阻止鼠标滚轮事件)

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/bofangqi/article-298030-1.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值