Saya mencoba mendeteksi posisi bilah gulir browser dengan JavaScript untuk memutuskan di mana di halaman tampilan saat ini. Dugaan saya adalah bahwa saya harus mendeteksi di mana ibu jari di trek, dan kemudian ketinggian ibu jari sebagai persentase dari total tinggi trek. Apakah saya terlalu memperumitnya, atau apakah JavaScript menawarkan solusi yang lebih mudah dari itu? Adakah ide yang bijak-kode?
191
element
dandocument.body
hanya contoh). Lihat howtocreate.co.uk/tutorials/javascript/browserwindow untuk detailnya.window.pageYOffset
, tetapi tidak bisa mendapatkan apa pun yang bekerja di IE7. Mencobawindow.pageYOffset
,document.body.scrollTop
,document.documentElement.scrollTop
,element.scrollTop
document.body
di sebagian besar browser modern - biasanya diaturdocument.documentElement
sekarang. Lihat bugs.chromium.org/p/chromium/issues/detail?id=157855 untuk transisi Chrome.Saya melakukan ini untuk
<div>
di Chrome.elemen .scrollTop - adalah piksel yang disembunyikan di atas karena gulir. Tanpa gulir nilainya adalah 0.
elemen .scrollHeight - adalah piksel seluruh div.
elemen .clientHeight - adalah piksel yang Anda lihat di browser Anda.
akan menjadi posisi.
akan menjadi nilai maksimum untuk scrollTop .
akan menjadi persentase gulir [dari 0 ke 1] .
sumber
mengembalikan array dengan dua bilangan bulat- [scrollLeft, scrollTop]
sumber
seperti ini :)
sumber
Jawaban untuk 2018 :
Cara terbaik untuk melakukan hal-hal seperti itu adalah dengan menggunakan Intersection Observer API .
Lihat contoh kode berikut:
Sebagian besar browser modern mendukung IntersectionObserver , tetapi Anda harus menggunakan polyfill untuk kompatibilitas ke belakang.
sumber
jika Anda peduli untuk seluruh halaman. Anda bisa menggunakan ini:
sumber
Jika Anda menggunakan jQuery, ada fungsi yang sempurna untuk Anda: .scrollTop ()
doc di sini -> http://api.jquery.com/scrollTop/
catatan: Anda dapat menggunakan fungsi ini untuk mengambil ATAU mengatur posisi.
lihat juga: http://api.jquery.com/?s=scroll
sumber
Berikut cara lain untuk mendapatkan posisi gulir
sumber
Saya pikir fungsi berikut dapat membantu memiliki nilai koordinat gulir:
Saya mendapat ide ini dari jawaban ini dengan sedikit perubahan.
sumber