Saya sedang mengerjakan aplikasi berbasis browser, saat ini saya sedang mengembangkan dan menata untuk browser safari ipad.
Saya mencari dua hal di ipad: Bagaimana cara menonaktifkan pengguliran vertikal untuk halaman yang tidak memerlukannya? & bagaimana cara menonaktifkan efek pantulan elastis?
ipad
scroll
mobile-safari
bounce
Adam
sumber
sumber
Jawaban:
Jawaban ini tidak lagi berlaku, kecuali Anda mengembangkan untuk perangkat iOS yang sangat lama ... Silakan lihat solusi lain
Jawaban 2011: Untuk aplikasi web / html yang berjalan di dalam iOS Safari, Anda menginginkan sesuatu seperti
Untuk iOS 5 Anda mungkin ingin mempertimbangkan hal-hal berikut: document.ontouchmove dan scrolling di iOS 5
Pembaruan September 2014: Pendekatan yang lebih menyeluruh dapat ditemukan di sini: https://github.com/luster-io/prevent-overscroll . Untuk itu dan banyak lagi saran aplikasi web yang berguna, lihat
http://www.luster.io/blog/9-29-14-mobile-web-checklist.htmlPembaruan Maret 2016: Tautan terakhir itu tidak lagi aktif - lihat https://web.archive.org/web/20151103001838/http://www.luster.io/blog/9-29-14-mobile-web-checklist .html untuk versi yang diarsipkan. Terima kasih @falsarella karena telah menunjukkannya.
sumber
onTouchMove: function(e) { e.stopPropagation(); e.stopImmediatePropagation(); }
Ini akan mencegah kejadian mengenai tubuh, tetapi badan akan tetap tidak goyang. Edit: Ini dengan asumsi Anda menyetel $ ('div'). On ('touchmove', ... onTouchMove);Anda juga dapat mengubah posisi body / html menjadi tetap:
sumber
Untuk mencegah pengguliran di browser seluler modern, Anda perlu menambahkan pasif: false. Saya telah menarik rambut saya agar ini berfungsi sampai saya menemukan solusi ini. Saya hanya menemukan ini disebutkan di satu tempat lain di internet.
sumber
{ passive: false }
itu pasti tidak berhasil !!! Selamat datang di StackOverflow dudeoverflow-y: scroll
? Misalnya memiliki modal dengan view height lebih tinggi dari body.Anda dapat menggunakan cuplikan kode jQuery ini untuk melakukan ini:
Ini akan memblokir pengguliran vertikal dan juga efek memantul kembali yang terjadi di halaman Anda.
sumber
Pada wadah Anda dapat mengatur efek pantulan di dalam elemen
Sumber: http://www.kylejlarson.com/blog/2011/fixed-elements-and-scrolling-divs-in-ios-5/
sumber
overflow:hidden
pada<body>
, ini masih solusi terbaik. Namun saat membuka keyboard atau menggeser di bagian bawah layar, itu tidak akan berfungsi lagi.Saya tahu ini sedikit off-piste tetapi saya telah menggunakan Swiffy untuk mengubah Flash menjadi game HTML5 interaktif dan menemukan masalah pengguliran yang sama tetapi tidak menemukan solusi yang berhasil.
Masalah yang saya hadapi adalah bahwa tahapan Swiffy memenuhi seluruh layar, jadi segera setelah dimuat, peristiwa touchmove dokumen tidak pernah dipicu.
Jika saya mencoba menambahkan acara yang sama ke penampung Swiffy, itu diganti segera setelah panggung dimuat.
Pada akhirnya saya menyelesaikannya (agak berantakan) dengan menerapkan event touchmove ke setiap DIV di dalam panggung. Karena div ini juga selalu berubah, saya perlu terus memeriksanya.
Ini adalah solusi saya, yang tampaknya berhasil dengan baik. Saya harap ini membantu orang lain yang mencoba menemukan solusi yang sama dengan saya.
sumber
Kode untuk Untuk menghapus safari ipad: nonaktifkan scrolling, dan efek bouncing
Jika Anda memiliki tag canvas di dalam dokumen, terkadang hal itu akan mempengaruhi kegunaan objek di dalam kanvas (contoh: pergerakan objek); jadi tambahkan kode di bawah ini untuk memperbaikinya.
sumber
Coba sollutuion JS ini :
Mencegah gerakan menggulir dan memantul Safari default tanpa melepaskan pendengar acara sentuh Anda.
sumber
tidak ada solusi yang berhasil untuk saya. Beginilah cara saya melakukannya.
sumber
Diuji di iphone. Cukup gunakan css ini pada wadah elemen target dan itu akan mengubah perilaku pengguliran, yang berhenti ketika jari meninggalkan layar.
https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-overflow-scrolling
sumber
Bagi mereka yang menggunakan MyScript, Aplikasi Web dan berjuang dengan menggulir / menyeret tubuh (di iPad dan Tablet) alih-alih benar-benar menulis:
<body touch-action="none" unresolved>
Itu memperbaikinya untuk saya.
sumber
Anda dapat menggunakan js untuk mencegah gulir:
Dan dari sekedar lari / berhenti
toggleScroll
fungsi saat Anda membuka / menutup modal.Seperti ini
toggleScroll(true) / toggleScroll(false)
(Ini hanya untuk iOS, di Android tidak berfungsi)
sumber
Coba solusi JS ini yang mengubah
webkitOverflowScrolling
gaya. Triknya di sini adalah bahwa gaya ini tidak aktif, Safari seluler beralih ke pengguliran biasa dan mencegah pantulan berlebih - sayangnya, ini tidak dapat membatalkan seret yang sedang berlangsung. Solusi kompleks ini juga melacakonscroll
sebagai pantulan di atas membuatscrollTop
negatif yang dapat dilacak. Solusi ini telah diuji pada iOS 12.1.1 dan memiliki satu kelemahan: sementara mempercepat gulir, pantulan tunggal masih terjadi karena menyetel ulang gaya mungkin tidak langsung membatalkannya.sumber
jawaban yang ditingkatkan @Ben Bos dan dikomentari oleh @Tim
Css ini akan membantu mencegah masalah scrolling dan kinerja dengan render ulang css karena posisi berubah / sedikit tertinggal tanpa lebar dan tinggi
sumber
Bagi Anda yang tidak ingin menyingkirkan pantulan tetapi hanya ingin mengetahui kapan pantulannya berhenti (misalnya untuk memulai beberapa penghitungan jarak layar), Anda dapat melakukan hal berikut (penampung adalah elemen penampung yang meluap):
sumber
Nonaktifkan efek gulir pantulan safari:
sumber
Mirip dengan kiwi yang marah, saya membuatnya bekerja menggunakan ketinggian daripada posisi:
sumber
Solusi diuji, berfungsi pada iOS 12.x
Inilah masalah yang saya hadapi:
Saat saya menggulir galeri saya, tubuh selalu menggulir sendiri (gesekan manusia tidak terlalu horizontal), yang membuat galeri saya tidak berguna.
Inilah yang saya lakukan saat galeri saya mulai bergulir
Dan ketika galeri saya mengakhiri penggulirannya ...
Semoga ini bisa membantu ~
sumber