Bertentangan dengan apa yang kebanyakan orang di sini menyarankan, saya akan merekomendasikan Anda lakukan menggunakan plugin jika Anda ingin menghidupkan bergerak. Hanya menghidupkan scrollTop tidak cukup untuk pengalaman pengguna yang lancar. Lihat jawaban saya di sini untuk alasannya.
Saya telah mencoba beberapa plugin selama bertahun-tahun, tetapi akhirnya menulis sendiri. Anda mungkin ingin mencobanya: jQuery.scrollable . Dengan menggunakan itu, tindakan gulir menjadi
$container.scrollTo( targetPosition );
Tapi itu belum semuanya. Kita perlu memperbaiki posisi target juga. Perhitungan yang Anda lihat di jawaban lain,
$target.offset().top - $container.offset().top + $container.scrollTop()
sebagian besar bekerja tetapi tidak sepenuhnya benar. Itu tidak menangani perbatasan wadah gulir dengan benar. Elemen target digulir ke atas terlalu jauh, dengan ukuran perbatasan. Ini demo.
Karenanya, cara yang lebih baik untuk menghitung posisi target adalah
var target = $target[0],
container = $container[0];
targetPosition = $container.scrollTop() + target.getBoundingClientRect().top - container.getBoundingClientRect().top - container.clientTop;
Sekali lagi, lihat demo untuk melihatnya dalam aksi.
Untuk fungsi yang mengembalikan posisi target dan berfungsi untuk wadah gulir jendela dan non-jendela, jangan ragu untuk menggunakan inti ini . Komentar di sana menjelaskan bagaimana posisi dihitung.
Pada awalnya, saya telah mengatakan akan lebih baik menggunakan plugin untuk scrolling animasi . Anda tidak perlu plugin, jika Anda ingin melompat ke target tanpa transisi. Lihat jawaban oleh @ames untuk itu, tetapi pastikan Anda menghitung posisi target dengan benar jika ada perbatasan di sekitar wadah.