Saya ingin membuat browser untuk menggulir halaman ke jangkar yang diberikan, hanya dengan menggunakan JavaScript.
Saya telah ditentukan name
atau id
atribut dalam kode HTML saya:
<a name="anchorName">..</a>
atau
<h1 id="anchorName2">..</h1>
Saya ingin mendapatkan efek yang sama dengan yang Anda dapatkan dengan menavigasi ke http://server.com/path#anchorName
. Halaman tersebut harus digulir sehingga jangkar berada di dekat bagian atas halaman yang terlihat.
<a href="#anchorName">link</a>
function scrollToHash(hashName) { location.hash = "#" + hashName; }
Cara yang lebih sederhana:
sumber
scrollIntoViewOptions
yang memilikibehavior: "smooth"
opsi, tetapi saat ini hanya kompatibel dengan Firefox.Anda dapat menggunakan jQuerys .animate () , .offset () dan
scrollTop
. Sukacontoh tautan: http://jsbin.com/unasi3/edit
Jika Anda tidak ingin menghidupkan gunakan .scrollTop () suka
atau javascripts asli
location.hash
sukasumber
<h1 id="anchorName">
atau<a name="anchorName">
, gunakan$('#'+hash+',a[name='+hash+']')
atau sedikit dioptimalkan$(document.getElementById(hash) || 'a[name='+hash+']')
yang akan mencari elemen dengan id terlebih dahulu, dan menggunakan pencarian hanya jika ada yang tidak ditemukan.$("#selector")
dioptimalkan tetapi$("#selector,a[name='selector']")
tidak akan melalui optimasi yang sama dengan cepat. Saya kira komentar saya yang berumur 2,5 tahun sedikit terdengar aneh. "Optimasi" menghindaria[name='selector']
pencarian jika ia menemukan id, tidak mengoptimalkan pencarian id.Solusi hebat oleh jAndy, tetapi gulir yang mulus tampaknya mengalami masalah saat bekerja di firefox.
Menulisnya dengan cara ini juga berfungsi di Firefox.
sumber
2018-2020 Murni js:
Ada cara yang sangat mudah untuk menggulir ke elemen:
Tetapi sejauh yang saya mengerti dia tidak memiliki dukungan yang baik seperti opsi di bawah ini.
Pelajari lebih lanjut tentang metode ini.
Jika perlu, elemen ada di atas:
Contoh demonstrasi pada Codepen
Jika Anda ingin elemen berada di tengah:
Contoh demonstrasi pada Codepen
Dukung:
Mereka menulis itu
scroll
adalah metode yang samascrollTo
, tetapi dukungan menunjukkan lebih baikscrollTo
.Lebih lanjut tentang metode ini
sumber
Solusi javascript murni tanpa JQuery. Diuji pada Chrome & Ie, tidak diuji pada iOS
demo: https://jsfiddle.net/jd7q25hg/12/
sumber
Pada 2018, Anda tidak perlu jQuery untuk hal sederhana seperti ini. Dibangun di
scrollIntoView()
Metode mendukung "behavior
" properti untuk lancar gulir ke setiap elemen pada halaman. Anda bahkan dapat memperbarui URL peramban dengan hash agar dapat dibookmark.Dari tutorial tentang cara menggulir Penanda HTML , berikut adalah cara asli untuk menambahkan pengguliran yang lancar ke semua tautan jangkar pada halaman Anda secara otomatis:
sumber
Gulir dengan lancar ke posisi yang tepat (2019)
Dapatkan koordinat yang benar
y
dan gunakanwindow.scrollTo({top: y, behavior: 'smooth'})
Dengan offset
scrollIntoView
juga merupakan pilihan yang baik tetapi dalam beberapa kasus mungkin tidak berfungsi dengan baik. Misalnya saat Anda membutuhkan tambahan offset . DenganscrollTo
Anda hanya perlu menambahkan offset itu seperti ini:sumber
css html { scroll-behavior: smooth; }
sumber
Solusi dari CSS-Trik tidak lagi berfungsi di jQuery 2.2.0. Ini akan menimbulkan kesalahan pemilih:
Saya memperbaikinya dengan mengubah pemilih. Cuplikan lengkapnya adalah ini:
sumber
Sebagian besar jawaban tidak perlu rumit.
Jika Anda hanya ingin melompat ke elemen target, Anda tidak perlu JavaScript:
Jika Anda ingin menggulir ke target dengan animasi , silakan merujuk ke jawaban @ Shahil.
sumber
Ini bekerja:
https://jsfiddle.net/68pnkfgd/
Cukup tambahkan kelas 'gulir' ke tautan apa pun yang ingin Anda menghidupkan
sumber
Ini adalah skrip yang berfungsi yang akan menggulir halaman ke jangkar. Untuk mensetup, beri tautan anchor id yang cocok dengan atribut nama anchor yang ingin Anda gulir.
sumber
Saya tahu ini adalah pertanyaan yang sudah sangat lama, tetapi saya menemukan solusi jQuery yang mudah dan sederhana di css-trik . Itu yang saya gunakan sekarang.
sumber
sumber
solusi vue2 ... tambahkan properti data sederhana untuk hanya memaksa pembaruan
sumber
cara termudah untuk membuat peramban menggulir laman ke jangkar yang diberikan adalah dengan mengetik style.css * {scroll-behaviour: smooth;} dan di navigasi html Anda gunakan #NameOfTheSection
sumber