Bagaimana cara menentukan jarak antara bagian paling atas dari div ke bagian atas layar saat ini? Saya hanya ingin jarak piksel ke atas layar saat ini, bukan bagian atas dokumen. Saya sudah mencoba beberapa hal seperti .offset()
dan .offsetHeight
, tetapi saya tidak bisa membungkus otak saya dengannya. Terima kasih!
javascript
jquery
Joel Eckroth
sumber
sumber
el.getBoundingClientRect().top+window.scrollY
el.getBoundingClientRect().top
. Menambahkan posisi gulir menambah jarak ke bagian atas dokumen. developer.mozilla.org/de/docs/Web/API/Element/…Jawaban:
Anda dapat menggunakan
.offset()
untuk mendapatkan offset dibandingkan dengandocument
elemen dan kemudian menggunakanscrollTop
propertiwindow
elemen untuk menemukan seberapa jauh ke bawah halaman yang telah digulir pengguna:The
distance
variabel sekarang memegang jarak dari puncak#my-element
elemen dan bagian atas kali lipat.Berikut ini adalah demo: http://jsfiddle.net/Rxs2m/
Perhatikan bahwa nilai negatif berarti elemen berada di atas lipatan atas.
sumber
distance
variabel untuk melihat apakah nilainya120
tetapi saya akan merekomendasikan memeriksa rentang, bukan angka yang tepat. Jika misalnya Anda menggulir dengan roda mouse, Anda mungkin melewatkan lebih dari 120. Jadi jika Anda mencoba menerapkan beberapa CSS atau sesuatu ketika elemen berada dalam 120px dari flip-top, maka mungkin gunakanif (distance < 120) { /* do something */}
. Berikut ini adalah demo terbaru: jsfiddle.net/na5qL91oVanila:
Buka konsol browser Anda dan gulir halaman Anda untuk melihat jaraknya.
sumber
distanceToTop
dikembalikan adalah relatif (bahkan dapat menjadi negatif jika pengguna telah menggulir masa lalu). Untuk memperhitungkan ini, gunakanwindow.pageYOffset + someDiv.getBoundingClientRect().top
Ini dapat dicapai murni dengan JavaScript .
Saya melihat jawaban yang ingin saya tulis telah dijawab oleh lynx dalam komentar untuk pertanyaan itu.
Tetapi saya tetap akan menulis jawaban karena sama seperti saya, orang kadang-kadang lupa membaca komentar.
Jadi, jika Anda hanya ingin mendapatkan jarak elemen (dalam Piksel) dari bagian atas jendela layar Anda, inilah yang perlu Anda lakukan:
gunakan getBoundingClientRect ()
Itu dia!
Semoga ini bisa membantu seseorang :)
sumber
Saya menggunakan ini:
kode:
sumber
Saya menggunakan fungsi ini untuk mendeteksi jika elemen terlihat di port tampilan
Kode:
sumber