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