检查元素是否具有滚动条的最快方法是什么?
一件事当然是检查元素是否大于其视口,这可以通过检查这两个值轻松完成:
el.scrollHeight > el.offsetHeight || el.scrollWidth > el.offsetWidth
但这并不意味着它也有滚动条(因此它实际上可以由人类滚动)。
问题
如何仅在1 个跨浏览器和2 个javascript(如没有 jQuery)中检查滚动条?
仅 Javascript,因为我需要尽可能小的开销,因为我想编写一个非常快的 jQuery 选择器过滤器
// check for specific scrollbars
$(":scrollable(x/y/both)")
// check for ANY scrollbar
$(":scrollable")
我想我必须检查overflow
样式设置,但我如何以跨浏览器的方式做到这一点?
附加编辑
不仅overflow
样式设置。检查元素是否有滚动条并不像看起来那么简单。当元素没有边框时,我上面写的第一个公式可以正常工作,但是当它有时(尤其是当边框具有相当大的宽度时),offset
尺寸可以大于scroll
尺寸但元素仍然可以滚动。我们实际上必须从offset
维度中减去边框以获得元素的实际可滚动视口并将其与scroll
维度进行比较。
备查
:scrollable
jQuery 选择器过滤器包含在我的.scrollintoview()
jQuery 插件中。如果有人需要,可以在我的博客文章中找到完整的代码。即使它没有提供实际的解决方案 Soumya 的代码也大大帮助我解决了问题。它为我指明了正确的方向。