Saya ingin menggulir ke bawah dengan lancar. Saya tidak ingin harus menulis fungsi untuk itu - terutama jika jQuery sudah memilikinya.
javascript
jquery
Bryan Field
sumber
sumber
html
danbody
? Ada beberapa wawasan di sini: stackoverflow.com/questions/2123690/… , tetapi itu bukan jawaban yang lengkap.<html>
memilikioverflow-x:hidden;
animasi ini tidak akan berfungsi. (Mungkin tidak bekerja untukoverflow-y:hidden
, danoverflow:hidden
, tapi saya belum diuji.body
bekerja di Chrome pada awal tahun ini, tetapi sekarang harushtml
.Jawaban Nick sangat bagus. Hati-hati saat menentukan fungsi lengkap () di dalam panggilan animate () karena akan dieksekusi dua kali karena Anda memiliki dua pemilih yang dinyatakan (html dan badan).
Inilah cara Anda dapat menghindari panggilan balik ganda.
sumber
die()
fungsi sebelumlive()
panggilan fungsi. Ini menjamin, bahwalive()
pawang Anda akan dipanggil hanya sekali.Jawaban Nick berfungsi dengan baik dan pengaturan standarnya bagus, tetapi Anda dapat lebih mengontrol gulir dengan menyelesaikan semua pengaturan opsional.
di sini terlihat seperti apa di API:
sehingga Anda dapat melakukan sesuatu seperti ini:
di sini adalah halaman api fungsi jQuery .animate: http://api.jquery.com/animate/
sumber
Seperti Kita sebutkan ada masalah dengan beberapa panggilan balik yang diaktifkan ketika Anda menghidupkan baik 'html' dan 'tubuh'. Alih-alih menggerakkan keduanya dan memblokir panggilan balik berikutnya, saya lebih suka menggunakan beberapa deteksi fitur dasar dan hanya menggerakkan properti scrollTop dari satu objek.
Jawaban yang diterima di utas lain ini memberikan beberapa wawasan mengenai properti scrollTop objek mana yang harus kita coba untuk menghidupkan: pageYOffset Scrolling and Animation in IE8
PEMBARUAN - - -
Upaya deteksi fitur di atas gagal. Sepertinya tidak ada cara satu-line untuk melakukannya sebagai halaman web jenis peramban webKetika properti selalu kembali nol ketika ada DOCTYPE. Sebaliknya, saya menemukan cara untuk menggunakan janji untuk melakukan panggilan balik tunggal untuk setiap kali animasi dijalankan.
sumber
Saya memiliki apa yang saya yakini sebagai solusi yang lebih baik daripada
$('html, body')
retas.Ini bukan one-liner, tetapi masalah yang saya miliki
$('html, body')
adalah bahwa jika Anda login$(window).scrollTop()
selama animasi, Anda akan melihat bahwa nilainya melonjak di semua tempat, kadang-kadang oleh ratusan piksel (meskipun saya tidak melihat hal seperti itu) terjadi secara visual). Saya membutuhkan nilainya agar dapat diprediksi, sehingga saya dapat membatalkan animasi jika pengguna meraih bilah gulir atau memutar roda mouse selama gulir otomatis.Berikut adalah fungsi yang akan menghidupkan gulir dengan lancar:
Di bawah ini adalah versi yang lebih kompleks yang akan membatalkan animasi pada interaksi pengguna, serta memperbarui hingga nilai target tercapai, yang berguna ketika mencoba untuk mengatur scrollTop secara instan (misalnya hanya memanggil
$(window).scrollTop(1000)
- dalam pengalaman saya, ini gagal untuk bekerja tentang 50% dari waktu.)sumber
Saya mengalami masalah di mana animasi selalu dimulai dari bagian atas halaman setelah refresh halaman dalam contoh lain.
Saya memperbaikinya dengan tidak menghidupkan css secara langsung tetapi memanggil
window.scrollTo();
setiap langkah:Ini juga mengatasi masalah
html
vsbody
karena menggunakan JavaScript lintas-browser.Lihatlah http://james.padolsey.com/javascript/fun-with-jquerys-animate/ untuk informasi lebih lanjut tentang apa yang dapat Anda lakukan dengan fungsi bernyawa jQuery.
sumber
Anda dapat menggunakan animasi jQuery untuk halaman gulir dengan durasi tertentu:
di mana 1024px adalah offset gulir dan 5000 adalah durasi animasi dalam milidetik.
sumber
$("html, body").animate({scrollTop: 1024}, 5000);
juga berfungsi.Coba plugin scrollTo .
sumber
sumber
Jika Anda ingin pindah ke bagian bawah halaman (sehingga Anda tidak perlu menggulir ke bawah), Anda dapat menggunakan:
sumber
Tetapi jika Anda benar-benar ingin menambahkan beberapa animasi saat menggulir, Anda dapat mencoba plugin sederhana saya ( AnimateScroll ) yang saat ini mendukung lebih dari 30 gaya pelonggaran
sumber
kode lintas browser adalah:
itu tanpa animasi tetapi bekerja di mana-mana
sumber