检查元素是否具有滚动条的最快方法是什么?
当然,一件事是检查element是否大于其视口,这可以通过检查以下两个值来轻松完成:
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的代码也极大地帮助我解决了问题。它为我指明了正确的方向。
overflow:hidden
放在上面怎么办?会有多余的内容,但仍然无法滚动。到目前为止,问题并不像看起来那样简单。