Bir öğenin kaydırma çubuklarına sahip olup olmadığını kontrol etmenin en hızlı yolu nedir?
Elbette bir şey, öğenin görüntü alanından daha büyük olup olmadığını kontrol etmektir; bu, bu iki değeri kontrol ederek kolayca yapılabilir:
el.scrollHeight > el.offsetHeight || el.scrollWidth > el.offsetWidth
ancak bu, kaydırma çubuklarına sahip olduğu anlamına gelmez (yani aslında insanlar tarafından kaydırılabilir).
Soru
Kaydırma çubuklarını 1 çapraz tarayıcıda ve 2 javascript'te ( jQuery olmadığı gibi ) nasıl kontrol ederim ?
Yalnızca Javascript, çünkü olabildiğince küçük ek yüke ihtiyacım var, çünkü çok hızlı bir jQuery seçici filtresi yazmak istiyorum
// check for specific scrollbars
$(":scrollable(x/y/both)")
// check for ANY scrollbar
$(":scrollable")
Sanırım overflow
stil ayarlarını kontrol etmem gerekecek ama bunu tarayıcılar arası bir şekilde nasıl yapabilirim?
Ek düzenleme
Sadece overflow
stil ayarları değil . Bir öğenin kaydırma çubuğuna sahip olup olmadığını kontrol etmek göründüğü kadar önemsiz değildir. Yukarıda yazdığım ilk formül, öğenin bir sınırı olmadığında iyi çalışıyor, ancak varsa (özellikle kenarlık önemli ölçüde geniş olduğunda), offset
boyut boyuttan daha büyük olabilir , scroll
ancak öğe yine de kaydırılabilir. Biz aslında dan sınırları çıkarmak zorunda offset
elemanın gerçek kaydırılabilir viewport almak için boyut ve ile karşılaştırabilirsiniz scroll
boyutta.
Gelecekte referans olması için
:scrollable
jQuery seçici filtresi, .scrollintoview()
jQuery eklentimde yer alıyor. Herhangi birinin ihtiyacı olursa tam kod blog yazımda bulunabilir . Gerçek çözümü sağlamasa da Soumya'nın kodu sorunu çözmeme önemli ölçüde yardımcı oldu. Beni doğru yönü gösterdi.
overflow:hidden
üzerine oturduysa? Fazla içerik olabilir, ancak yine de kaydırılamaz. Sorun göründüğü kadar basit değil.