javascript - 禁用滚动上的悬停以防止浏览器重绘

标签 javascript jquery html css

我在div列表上有一个悬停效果,CSS是:

.product:hover {
  background-color: #f6f6f7;
  border-left-color: #f6f6f7 !important;
  border-right-color: #f6f6f7 !important;
  outline: 10px solid #f6f6f7;
  z-index: 1;
}

我希望当用户滚动页面时不会触发此悬停效果,以免强制浏览器重新绘制/重排。

所以我尝试了:

doc = $(document)
doc.scroll(->
  $('.product').unbind('mouseenter').unbind('mouseleave')
)

但它似乎不起作用,当我滚动时,悬停效果仍然会触发。知道为什么吗?或者我是如何实现这一目标的?

最佳答案

将其添加到您的 css 样式页面

.disable-hover { 指针事件:无; }

您要做的就是在开始滚动时将 .disable-hover 类添加到正文中。然后,这允许用户光标穿过主体,从而禁用任何悬停效果。

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

添加此脚本并执行它将起作用:-

关于javascript - 禁用滚动上的悬停以防止浏览器重绘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28150451/

相关文章:

javascript - 如何在单击时将类添加到 div,并通过单击页面上的其他位置删除类

jquery - 为圆形 slider 中的图像赋予 Angular

javascript - 在 Angular 2 中结合 vendor JavaScript

javascript - Angular - 根据传入的变量更改组件/指令的大小

JavaScript 正则表达式用于验证接收到的 MySQL 全文搜索搜索字符串

Javascript |执行 for 循环的其他方法可能会在成功后中断?

jquery - 是否可以在 Chart.js 的雷达图中设置扇区的背景颜色?

javascript - Yiic GridView 总是给出实时不是一个功能

html - 表格中带有奇怪填充的图像

html - GWT Hyperlink Focus 在 CSS 上的行为类似于 Active