Saya memiliki div, dengan bilah gulir, Ketika mencapai akhir, halaman saya mulai bergulir. Apakah ada cara untuk menghentikan perilaku ini?
javascript
html
Jeevan
sumber
sumber
Jawaban:
Anda dapat menonaktifkan pengguliran seluruh halaman dengan melakukan sesuatu seperti ini:
sumber
Menemukan solusinya.
http://jsbin.com/itajok
Inilah yang saya butuhkan.
Dan inilah kodenya.
http://jsbin.com/itajok/edit#javascript,html
Menggunakan Plug-in jQuery.
Pembaruan karena pemberitahuan penghentian
Dari jquery-mousewheel :
Lalu,
event.deltaY
sekarang harus digunakan:Demo
sumber
Solusi yang dipilih adalah karya seni. Pikir itu layak untuk sebuah plugin ....
Ini merupakan ketidaknyamanan yang berkelanjutan bagi saya dan solusi ini sangat bersih dibandingkan dengan peretasan lain yang pernah saya lihat. Penasaran untuk mengetahui lebih banyak tentang cara kerjanya dan seberapa luas dukungannya, tetapi bersoraklah untuk Jeevan dan siapa pun yang awalnya muncul dengan ini. BTW - editor jawaban stackoverflow membutuhkan ini!
MEMPERBARUI
Saya percaya ini lebih baik karena tidak mencoba memanipulasi DOM sama sekali, hanya mencegah gelembung bersyarat ...
Berfungsi hebat di krom dan jauh lebih sederhana daripada solusi lain ... beri tahu saya bagaimana tarifnya di tempat lain ...
BIOLA
sumber
wheel
eventAnda dapat menggunakan peristiwa gerakan mouse pada div untuk menonaktifkan bilah gulir tubuh dan kemudian peristiwa mouseout untuk mengaktifkannya lagi?
Misalnya HTML
Dan kemudian javascript seperti ini:
sumber
document.body
.Berikut cara lintas-browser untuk melakukan ini pada sumbu Y, ini berfungsi di desktop dan seluler. Diuji di OSX dan iOS.
sumber
scrollTop === maxScroll
olehscrollTop >= maxScroll
. Tampaknya aneh dengan 1 kasus, itu dibutuhkanSaya menulis penyelesaian untuk masalah ini
sumber
e.currentTarget
.false
tidak perlu ditentukanaddEventListener
karena itulah defaultnya. Selain itu, perbandingannya harus berupa ketidaksetaraan sederhana (>
dan<
), bukan>=
atau<=
.Jika saya memahami pertanyaan Anda dengan benar, maka Anda ingin mencegah pengguliran konten utama saat mouse berada di atas div (katakanlah bilah sisi). Untuk itu, sidebar mungkin bukan anak dari wadah pengguliran konten utama (yang merupakan jendela peramban), untuk mencegah acara gulir menggelembung ke induknya.
Ini mungkin memerlukan beberapa perubahan markup dengan cara berikut:
Lihat cara kerjanya pada contoh biola ini dan bandingkan dengan biola contoh ini yang memiliki perilaku cuti mouse yang sedikit berbeda pada bilah sisi.
Lihat juga scroll hanya satu div tertentu dengan scrollbar utama browser .
sumber
Seperti yang dijawab di sini , sebagian besar browser modern sekarang mendukung
overscroll-behavior: none;
properti CSS, yang mencegah rantai gulir. Dan hanya itu, hanya satu baris!sumber
overscroll-behavior: contain;
.ini menonaktifkan pengguliran di jendela jika Anda memasukkan elemen pemilih. bekerja seperti jimat.
sumber
Anda dapat menonaktifkan pengguliran seluruh halaman dengan melakukan hal seperti ini tetapi menampilkan bilah gulir!
sumber
sumber
Berdasarkan jawaban ceed, berikut adalah versi yang memungkinkan pengguliran bersarang elemen yang dilindungi. Hanya elemen di atas mouse yang akan menggulir, dan menggulir dengan cukup lancar. Versi ini juga peserta ulang. Ini dapat digunakan beberapa kali pada elemen yang sama dan akan dengan benar melepas dan memasang ulang penangan.
Salah satu cara mudah untuk menggunakan adalah dengan menambahkan kelas, seperti
scroll-guard
, ke semua elemen di halaman yang Anda izinkan untuk menggulir. Lalu gunakan$('.scroll-guard').scrollGuard()
untuk menjaganya.sumber
Jika Anda menerapkan
overflow: hidden
gaya, gaya itu akan hilangedit: sebenarnya saya salah membaca pertanyaan Anda, itu hanya akan menyembunyikan bilah gulir tetapi menurut saya bukan itu yang Anda cari.
sumber
Saya tidak bisa mendapatkan jawaban apa pun untuk berfungsi di Chrome dan Firefox, jadi saya membuat penggabungan ini:
sumber