Does scrollIntoView()
tüm tarayıcılarda çalışır? Değilse bir jQuery
alternatif var mı?
Yanıtlar:
@ 9bits'in belirttiği gibi, bu uzun süredir tüm büyük tarayıcılar tarafından destekleniyor . Bunun için endişelenme. Asıl sorun, işleyiş şeklidir. Sadece sayfanın sonunda olabilecek belirli bir öğeye atlar. Atlayarak, kullanıcılar şu konularda hiçbir fikre sahip olmaz:
İlk ikisi kaydırma konumuna göre belirlenebilir, ancak kullanıcıların atlama yapılmadan önce kaydırma konumunu takip ettiğini kim söylüyor? Yani bu kesin olmayan bir eylem.
Sonuncusu, özellikle sayfanın görünümün dışına kaydırılan hareketli bir başlığına sahipse ve kalan sayfa tasarımı aynı sayfada olma konusunda hiçbir şey ifade etmiyorsa (ayrıca sol menü gibi herhangi bir toplam yükseklik dikey öğesi yoksa doğru olabilir) bar). Bu problemin kaç sayfada olduğuna şaşıracaksınız. sadece kendiniz kontrol edin. Bir sayfaya gidin, yukarıdan bakın, ardından tuşuna basın Endve tekrar bakın. Muhtemelen farklı bir sayfa olduğunu düşüneceksiniz.
scrollintoview
Kurtarma için animasyonlu jQuery eklentisiBu nedenle , yerel DOM işlevini kullanmak yerine görünüme kaydırma yapan eklentiler vardır . Genellikle yukarıda özetlenen 3 sorunu da ortadan kaldıran kaydırmayı canlandırırlar. Kullanıcılar hareketi kolayca takip edebilir.
ScrollIntoViewOptions
belirtmeye izin verir behavior: 'smooth'
. maalesef bu seçeneğin bir tarayıcıda desteklenip desteklenmediğini kolayca tespit etmenin bir yolu yok…
behavior: "smooth"
, Chrome veya Safari'yi destekliyor , ancak desteklemiyor gibi görünüyor .
Göründüğü gibi: http://www.quirksmode.org/dom/w3c_cssom.html
Matteo Spinnelli'nin iScroll- 4'ünü kullanıyorum ve iOS safaride de çalışıyor. ScrollTo, scrollToElement ve scrollToPage olmak üzere üç yöntemi vardır. Diyelim ki bir div içine sarılmış sırasız bir eleman listeniz var. Robert Koritnik'in yukarıda yazdığı gibi, kaydırdığınızı göstermek için o küçük animasyona ihtiyacınız var. Aşağıdaki yöntem bu etkiye ulaşır.
scrollToElement(element, time);
Bunu denemedim, ancak yerleşik scrollIntoView işlevine bindirme işlemi çok fazla kod tasarrufu sağlayacak gibi görünüyor. Animasyonlu aksiyon istiyorsanız yapacağım şey şu: