Saya memiliki beberapa hyperlink di halaman saya. FAQ yang akan dibaca pengguna ketika mereka mengunjungi bagian bantuan saya.
Menggunakan tautan Jangkar, saya dapat membuat halaman menggulir ke arah jangkar dan memandu pengguna di sana.
Apakah ada cara untuk membuat pengguliran itu lancar?
Tetapi perhatikan bahwa dia menggunakan pustaka JavaScript khusus. Mungkin jQuery menawarkan sesuatu seperti ini?
Jawaban:
Pembaruan April 2018: Sekarang ada cara asli untuk melakukan ini :
Saat ini hanya didukung di browser tepi paling berdarah.
Untuk dukungan browser yang lebih lama, Anda dapat menggunakan teknik jQuery ini:
Dan ini biola: http://jsfiddle.net/9SDLw/
Jika elemen target Anda tidak memiliki ID, dan Anda menautkannya dengan ID
name
, gunakan ini:Untuk peningkatan kinerja, Anda harus menyimpan cache
$('html, body')
pemilih itu, sehingga tidak berjalan setiap kali jangkar diklik:Jika Anda ingin URL diperbarui, lakukan di dalam
animate
panggilan balik:sumber
scrollTop: $(this.hash).offset().top
bukanscrollTop: $(this.href).offset().top
?scrollTop: $(href).offset().top - 72
html, body
objek di sini tidak perlu, menjalankan pemilih sekali per klik tidak terlalu banyak.Sintaks yang benar adalah:
Menyederhanakan : KERING
Penjelasan tentang
href*=\\#
:*
berarti cocok dengan apa yang mengandung#
char. Jadi hanya cocok dengan jangkar . Untuk lebih lanjut tentang arti ini, lihat di sini\\
karena itu#
adalah char khusus di pemilih css, jadi kita harus menghindarinya.sumber
$('a')
untuk$('a[href*=#]')
hanya melayani jangkar url<a href="javascript:$('#test').css('background-color', '#000')">Test</a>
. Anda sebaiknya menggunakan$('a[href^=#]')
untuk mencocokkan semua url yang dimulai dengan karakter hash.a[href^=\\#]
Panasnya baru di CSS3. Ini jauh lebih mudah daripada setiap metode yang tercantum pada halaman ini dan tidak memerlukan Javascript. Cukup masukkan kode di bawah ini ke Anda css dan semua tautan tiba-tiba menunjuk ke lokasi di dalam halaman Anda sendiri akan memiliki animasi bergulir mulus.
Setelah itu, semua tautan yang mengarah ke div akan meluncur dengan lancar ke bagian-bagian tersebut.
Sunting: Bagi yang bingung dengan tag di atas. Pada dasarnya ini adalah tautan yang dapat diklik. Anda kemudian dapat memiliki tag div lain di suatu tempat di halaman web Anda suka
Dalam hal ini tautan akan dapat diklik dan akan menuju ke bagian apa pun, dalam hal ini adalah bagian kami yang kami sebut bagian.
BTW, saya menghabiskan berjam-jam mencoba untuk mendapatkan ini berfungsi. Menemukan solusinya di bagian komentar yang tidak jelas. Itu buggy dan tidak akan bekerja di beberapa tag. Tidak bekerja di dalam tubuh. Akhirnya berhasil ketika saya memasukkannya ke dalam html {} dalam file CSS.
sumber
ini bekerja sempurna untuk saya
sumber
Saya terkejut tidak ada yang memposting solusi asli yang juga menangani pembaruan hash lokasi browser agar sesuai. Ini dia:
Lihat tutorial: http://www.javascriptkit.com/javatutors/scrolling-html-bookmark-javascript.shtml
Untuk situs dengan header lengket,
scroll-padding-top
CSS dapat digunakan untuk memberikan offset.sumber
Hanya CSS
Yang perlu Anda tambahkan hanya ini. Sekarang perilaku pengguliran tautan internal Anda akan menjadi lancar seperti aliran-arus.
Catatan : Semua browser terbaru (
Opera
,Chrome
,Firefox
dll) mendukung fitur ini.untuk pemahaman detail, baca artikel ini
sumber
Saya sarankan Anda membuat kode umum ini:
Anda dapat melihat artikel yang sangat bagus di sini: jquery-effet-smooth-scroll-defilement-fluide
sumber
Resmi: http://css-tricks.com/snippets/jquery/smooth-scrolling/
sumber
Sudah ada banyak jawaban bagus di sini - namun semuanya kehilangan fakta bahwa jangkar kosong harus dikecualikan . Kalau tidak, skrip-skrip tersebut menghasilkan kesalahan JavaScript segera setelah jangkar kosong diklik.
Menurut pendapat saya, jawaban yang benar adalah seperti ini:
sumber
Menggunakan JQuery:
sumber
Ada dukungan asli untuk kelancaran menggulir pada id hash
Anda dapat melihatnya: https://www.w3schools.com/howto/howto_css_smooth_scroll.asp#section2
sumber
Jawaban yang diberikan berfungsi tetapi menonaktifkan tautan keluar. Di bawah versi dengan bonus tambahan memudahkan keluar (ayunan) dan menghormati tautan keluar.
sumber
stop()
remah url tidak berfungsi seperti yang diharapkan: tombol Kembali tidak membawa kembali, ini karena ketika remah diatur dalam url setelah animasi selesai. Lebih baik tanpa remah-remah di url, misalnya begitulah cara airbnb.HTML
atau Dengan URL Lengkap absolut
jQuery
sumber
Browser modern sedikit lebih cepat akhir-akhir ini. SetInterval mungkin berfungsi. Fungsi ini bekerja dengan baik di Chrome dan Firefox hari ini. (Agak lambat dalam safari, tidak repot dengan IE)
sumber
Ada cara css untuk melakukan ini menggunakan perilaku scroll. Tambahkan properti berikut.
Dan itu dia. Tidak diperlukan JS.
PS: silakan periksa kompatibilitas browser.
sumber
Menambahkan ini:
entah bagaimana membatalkan offset vertikal
di Firefox dan IE, ut bukan di Chrome. Pada dasarnya, halaman bergulir dengan lancar ke titik di mana ia harus berhenti berdasarkan offset, tetapi kemudian melompat ke bawah ke mana halaman akan pergi tanpa offset.
Itu menambahkan hash ke akhir url, tetapi menekan kembali tidak membawa Anda kembali ke atas, itu hanya menghilangkan hash dari url dan meninggalkan jendela penglihatan di mana ia duduk.
Inilah js lengkap yang saya gunakan:
sumber
Solusi ini juga akan berfungsi untuk URL berikut, tanpa memutus tautan anchor ke halaman yang berbeda.
dll.
Saya belum menguji ini di semua browser.
sumber
Ini akan membuatnya mudah untuk mengizinkan jQuery untuk melihat hash target Anda dan tahu kapan dan di mana harus berhenti.
sumber
sumber
Kode yang Diuji dan Diverifikasi
sumber
Saya melakukan ini untuk jangkar href "/ xxxxx # asdf" dan "#asdf"
sumber
Inilah solusi yang saya terapkan untuk banyak tautan dan jangkar, untuk gulir yang lancar:
http://www.adriantomic.se/development/jquery-localscroll-tutorial/ jika Anda mengatur tautan navigasi di div navigasi dan menyatakan dengan struktur ini:
dan tujuan tag anchor yang sesuai adalah:
Kemudian muat saja ini ke kepala dokumen:
Terima kasih kepada @Adriantomic
sumber
Jika Anda memiliki tombol sederhana di halaman untuk menggulir ke bawah ke div dan ingin tombol kembali berfungsi dengan melompat ke atas, tambahkan saja kode ini:
Ini dapat diperluas untuk melompat ke div yang berbeda juga, dengan membaca nilai hash, dan menggulir seperti Joseph Silbers menjawab.
sumber
Jangan pernah lupa bahwa fungsi offset () memberi posisi elemen Anda pada dokumen. Jadi ketika Anda perlu menggulir elemen Anda relatif terhadap induknya, Anda harus menggunakan ini;
Titik kuncinya adalah mendapatkan scrollTop dari scroll-div dan menambahkannya ke scrollTop. Jika Anda tidak akan melakukan fungsi posisi itu () selalu memberi Anda nilai posisi yang berbeda.
sumber
Anda dapat menggunakan
window.scroll()
denganbehavior: smooth
dantop
mengatur ke atas offset jangkar yang memastikan bahwa tag jangkar akan berada di bagian atas viewport.Demo:
Tampilkan cuplikan kode
Anda bisa mengatur properti CSS
scroll-behavior
kesmooth
(yang didukung sebagian besar browser modern) yang menyingkirkan kebutuhan untuk Javascript.Tampilkan cuplikan kode
sumber
terima kasih sudah berbagi, Joseph Silber. Di sini solusi 2018 Anda sebagai ES6 dengan sedikit perubahan untuk menjaga perilaku standar (gulir ke atas):
sumber
Memerlukan jquery dan animasi untuk melabuhkan tag dengan nama yang ditentukan alih-alih id, sambil menambahkan hash ke url browser. Juga memperbaiki kesalahan dalam sebagian besar jawaban dengan jquery di mana tanda # tidak diawali dengan backslash yang lolos. Tombol kembali, sayangnya, tidak menavigasi kembali dengan benar ke tautan hash sebelumnya ...
sumber