Membaca dokumen AngularJS Saya belum tahu apakah $anchorScroll
dapat memiliki opsi durasi / pelonggaran untuk menggulir mulus ke elemen.
Itu hanya mengatakan:
$location.hash('bottom');
// call $anchorScroll()
$anchorScroll();
Saya tidak menggunakan jquery dan tidak mau; apakah masih ada cara yang cerdas namun sederhana untuk membuat atau memperluas $anchorScroll
agar pengguliran lebih lancar?
sumber
<a anchor-smooth-scroll>About 1</a> <a anchor-smooth-scroll>About 2</a>
<div id="my-div">my div</div>
) dan kemudian membuat link seperti ini:<a anchor-smooth-scroll="my-div">visit my div</a>
.Anda juga dapat menggunakan angular-scroll, link " https://github.com/durated/angular-scroll/ ". Ini adalah pengguliran halus juga beberapa fungsi easing untuk mendapatkan tampilan profesional.
sumber
Jawaban dari Brett sangat bermanfaat bagi saya. Saya melakukan beberapa perubahan kecil pada solusinya dalam hal modularisasi dan testability.
Berikut adalah contoh kerja lain di JsFiddle yang menyertakan versi lain dengan pengujian yang disertakan.
Untuk pengujian, saya menggunakan Karma dan Jasmine. Tanda tangan telah sedikit dimodifikasi sebagai berikut:
Di mana elemen adalah atribut wajib untuk menggulir dan kecepatan adalah opsional di mana defaultnya adalah 20 (seperti sebelumnya).
sumber
Anda juga dapat menggunakan ngSmoothScroll, tautan: https://github.com/d-oliveros/ngSmoothScroll .
Cukup sertakan
smoothScroll
modul sebagai dependensi dan gunakan seperti ini:<a href="#" scroll-to="my-element-3">Click me!</a>
sumber
Tidak ada solusi di sini yang benar-benar melakukan apa yang diminta OP, yaitu, membuat
$anchorScroll
pengguliran lancar. Perbedaan antara perintah scroll halus dan perintah$anchroScroll
menggunakan / memodifikasi$location.hash()
, yang mungkin diinginkan dalam beberapa kasus.Berikut adalah inti dari modul sederhana yang menggantikan scrolling $ anchorScroll dengan scrolling mulus. Ini menggunakan perpustakaan https://github.com/oblador/angular-scroll untuk pengguliran itu sendiri (ganti dengan yang lain jika Anda mau, itu harus mudah).
https://gist.github.com/mdvorak/fc8b531d3e082f3fdaa9
Catatan: Sebenarnya $ anchorScroll tidak dapat menggulir dengan lancar, tetapi menggantikan penangannya untuk menggulir.
Aktifkan hanya dengan mereferensikan
mdvorakSmoothScroll
modul di aplikasi Anda.sumber
Alan, terima kasih. Jika ada yang berminat, saya memformatnya berdasarkan standar John Pappa.
sumber
Saya tidak tahu bagaimana cara menghidupkan
$anchorScroll
. Inilah cara saya melakukannya dalam proyek saya:Dan fungsi JS:
sumber