检查元素是否有滚动条的最快方法是什么?
当然,一件事情是检查元素是否大于它的 viewport,这可以通过检查这两个值很容易地完成:
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
维度进行比较。
我的 .scrollintoview()
jQuery 插件中包含了 :scrollable
jQuery 选择器过滤器。完整的代码可以找到在我的 博客文章如果有人需要它。尽管它没有提供实际的解决方案,但 Soumya 的代码相当大地帮助我解决了这个问题。它为我指明了正确的方向。