Saya memiliki kotak div (disebut fluks) dengan jumlah konten yang bervariasi di dalamnya. Divbox ini telah meluap diatur ke otomatis.
Sekarang, apa yang saya coba lakukan adalah, ketika penggunaan gulir ke bagian bawah kotak-DIV ini, memuat lebih banyak konten ke halaman, saya tahu bagaimana melakukan ini (memuat konten) tetapi saya tidak tahu bagaimana caranya. mendeteksi kapan pengguna telah menggulir ke bagian bawah tag div? Jika saya ingin melakukannya untuk seluruh halaman, saya akan mengambil .scrollTop dan kurangi itu dari .height.
Tapi sepertinya saya tidak bisa melakukan itu di sini?
Saya sudah mencoba mengambil .scrollTop dari fluks, dan kemudian membungkus semua konten di dalam div yang disebut inner, tetapi jika saya mengambil innerHeight of flux ia mengembalikan 564px (div diatur ke 500 sebagai ketinggian) dan ketinggian 'innner' ia mengembalikan 1064, dan scrolltop, ketika di bagian bawah div mengatakan 564.
Apa yang dapat saya?
sumber
innerHeight()
melaporkan desimal. Dalam kasus pengguna melakukan zoom out, jumlahscrollTop()
daninnerHeight()
akan selalu setidaknya sebagian kecil dariscrollHeight
. Saya akhirnya menambahkan zona penyangga 20px. Kondisional yang dihasilkan adalah diif(el.scrollTop() + el.innerHeight() >= el[0].scrollHeight - 20)
manael
sama dengan$(this)
.Saya menemukan solusi bahwa ketika Anda menggulir jendela dan akhir div yang ditunjukkan dari bawah memberi Anda peringatan.
Dalam contoh ini jika Anda gulir ke bawah ketika div (
.posts
) selesai itu memberi Anda peringatan.sumber
var running = false
mendeklarasikan variabel sebelum ini. Di dalam kondisional, saya periksaif(!running) { running = true; // and continue logic }
dengan cara ini hanya disebut sekali! Ketika AJAX selesai, aturrunning = false;
Meskipun pertanyaan diajukan 5,5 tahun yang lalu, masih lebih relevan dalam konteks UI / UX saat ini. Dan saya ingin menambahkan dua sen saya.
Sumber: https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Determine_if_an_element_has_been_totally_scrolled
Beberapa elemen tidak memungkinkan Anda untuk menggulir seluruh elemen. Dalam hal ini Anda dapat menggunakan:
sumber
Hanya catatan tambahan di sini karena saya menemukan ini ketika mencari solusi untuk div tetap yang ingin saya gulir. Untuk skenario saya, saya menemukan bahwa lebih baik memperhitungkan padding pada div sehingga saya dapat mencapai ujungnya dengan tepat. Jadi memperluas jawaban @ Dr.Molle saya menambahkan yang berikut ini
Itu akan memberi Anda lokasi yang tepat, termasuk padding dan border
sumber
ini bekerja untuk saya
sumber
Jika Anda perlu menggunakan ini pada div yang memiliki overflow-y sebagai tersembunyi atau gulir, sesuatu seperti ini mungkin yang Anda butuhkan.
Saya menemukan ceil diperlukan karena prop scrollHeight tampaknya membulat, atau mungkin beberapa alasan lain menyebabkan ini mati kurang dari 1.
sumber
Jika Anda tidak menggunakan fungsi Math.round () solusi yang disarankan oleh Dr.Molle tidak akan berfungsi dalam beberapa kasus ketika jendela browser memiliki zoom.
Misalnya $ (ini) .scrollTop () + $ (ini) .innerHeight () = 600
$ (ini) [0] .scrollHeight menghasilkan = 599.99998
600> = 599.99998 gagal.
Ini kode yang benar:
Anda juga dapat menambahkan beberapa piksel margin tambahan jika Anda tidak memerlukan kondisi yang ketat
sumber
Dalam penggunaan DOM sederhana, Anda dapat memeriksa kondisinya
jika benar maka Anda telah mencapai akhir.
sumber
Jika ada yang mendapat
scrollHeight
sebagaiundefined
, kemudian pilih subelement 1 elemen:mob_top_menu[0].scrollHeight
sumber
tidak yakin apakah itu membantu tetapi ini adalah bagaimana saya melakukannya.
Saya memiliki panel indeks yang lebih besar dari jendela dan saya membiarkannya menggulir sampai akhir indeks ini tercapai. Lalu saya perbaiki posisinya. Prosesnya terbalik setelah Anda menggulir ke bagian atas halaman.
Salam.
sumber
Meskipun ini ditanyakan hampir 6 tahun lalu, masih menjadi topik hangat dalam desain UX, berikut ini cuplikan demo jika ada pemula yang ingin menggunakan
sumber
Guys ini adalah solusi untuk masalah zoom, ini bekerja dengan semua level zoom, jika Anda membutuhkannya:
sumber
Ini adalah kode di github.
sumber
Ini versi lain.
Kode kuncinya adalah fungsi scroller () yang mengambil input sebagai ketinggian div yang berisi bagian gulir, menggunakan overflow: gulir. Sekitar 5px dari atas atau 10px dari bawah seperti di atas atau bawah. Kalau tidak, terlalu sensitif. Sepertinya 10px adalah tentang minimum. Anda akan melihatnya menambahkan 10 ke ketinggian div untuk mendapatkan ketinggian bawah. Saya berasumsi 5px mungkin bekerja, saya tidak menguji secara ekstensif. YMMV. scrollHeight mengembalikan ketinggian area scrolling dalam, bukan ketinggian div yang ditampilkan, yang dalam hal ini adalah 400px.
sumber