要素にスクロールバーがあるかどうかを確認する最も速い方法は何ですか?
もちろん、要素がそのビューポートより大きいかどうかを確認することは、次の2つの値を確認することで簡単に実行できます。
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
設定されている場合はどうなりますか?余分なコンテンツがありますが、それでもスクロールできません。問題は、見かけほど簡単ではありません。