Im tring untuk menganimasikan scroll ke ID tertentu saat pemuatan halaman. Saya telah melakukan banyak penelitian dan menemukan ini:
$("html, body").animate({ scrollTop: $('#title1').height() }, 1000);
tapi ini sepertinya mulai dari ID dan beranimasi ke bagian atas halaman?
HTML (yang berada di tengah halaman) adalah:
<h2 id="title1">Title here</h2>
Jawaban:
Anda hanya menggulir tinggi elemen Anda. offset () mengembalikan koordinat elemen relatif terhadap dokumen, dan
top
param akan memberi Anda jarak elemen dalam piksel di sepanjang sumbu y:Dan Anda juga dapat menambahkan penundaan untuk itu:
sumber
scroll
. Dengan mengingat hal itu Anda akan menambahkan posisi gulir saat inibody
keoffset().top
posisi elemen yang kita inginkan dalam tampilan, Jumlah yang dihasilkan adalah nilai yang ingin kita gulir.$('html, body').animate({ scrollTop: ($('html, body').scrollTop() + $('#title1').offset().top) }, 1000);
.offset().top
akan memberi Anda angka negatif dalam hal ini. Dan ini benar-benar hanya berfungsi untukbody
danhtml
karenaoffset().top
akan memberi Anda offset atas dokumen, bukan induk pengguliran yang dimaksudkan.Solusi javascript murni dengan fungsi scrollIntoView () :
Parameter PS 'smooth' sekarang berfungsi dari Chrome 61 seperti yang disebutkan julien_c di komentar.
sumber
jquery-animate-body-untuk-semua-browser .
sumber
Ada plugin jquery untuk ini. Ini menggulung dokumen ke elemen tertentu, sehingga akan sempurna di tengah viewport. Ini juga mendukung easing animasi sehingga efek gulir akan terlihat sangat halus. Cek link ini .
Dalam kasus Anda, kodenya adalah
sumber
coba dengan kode berikut. buat elemen dengan nama kelas page-scroll dan pertahankan nama id ke
href
link yang sesuaisumber
untuk Scroll sederhana, gunakan gaya berikut
tinggi: 200px; overflow: gulir;
dan gunakan kelas gaya ini yang div atau bagian mana yang ingin Anda tampilkan gulir
sumber