页面滚动时禁用其中的:hover事件

在滚动页面时,若光标恰巧经过了带有:hover伪类的元素时,在滚动的过程中就可能会导致重绘或回流,当用户在页面反复上下横跳时,为了提高滚动时的性能,往往会在进行滚动事件时禁用包括hover在内的鼠标事件。

这里就以hover事件为例,在CSS文件中定义一个类名为disable-hover

.disable-hover {
    pointer-events: none;
}

pointer-events属性为none时,会禁用包括hover在内的鼠标事件。

在JS文件中,全局添加监听事件,滚动时,给页面的body添加上该样式,滚动结束后再移除该属性。

window.addEventListener('scroll', () => {
    let body = document.body, timer;
    clearTimeout(timer);
    if(!body.classList.contains('disable-hover')) {
      body.classList.add('disable-hover');
    }
    timer = setTimeout(() => {
      body.classList.remove('disable-hover');
    }, 500);
},false);

方法简单,但是不是万能的,不同的使用场景下该方法不一定都适用,而且现如今的浏览器基本都有针对于快速滚动hover绘制的性能保护,有时候不一定需要多此一举。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值