Bagaimana saya scroll ke bagian atas halaman menggunakan JavaScript? Hal ini diinginkan bahkan jika scrollbar langsung melompat ke atas. I'm tidak mencari untuk kelancaran bergulir.
Jika anda don't perlu perubahan untuk menghidupkan maka anda don't harus menggunakan plugin khusus - I'd hanya menggunakan native JavaScript window.scrollTo metode-lewat di 0,0 akan menggulir halaman ke kiri atas langsung.
window.scrollTo(x-coord, y-coord);
Parameter
Jika anda ingin bergulir mulus, mencoba sesuatu seperti ini:
$("a[href='#top']").click(function() {
$("html, body").animate({ scrollTop: 0 }, "slow");
return false;
});
Yang akan mengambil <a>
tag dan href="#atas"
dan membuatnya halus gulir ke atas.
Solusi yang lebih baik dengan animasi yang halus:
// this changes the scrolling behavior to "smooth"
window.scrollTo({ top: 0, behavior: 'smooth' });
Referensi: https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollTo#Example
Semua saran ini bekerja besar untuk berbagai situasi. Bagi mereka yang menemukan halaman ini melalui pencarian, kita juga dapat memberikan ini mencoba. JQuery, tidak ada plug-in, gulir ke elemen.
$('html, body').animate({
scrollTop: $("#elementID").offset().top
}, 2000);
gulir halus, murni javascript:
(function smoothscroll(){
var currentScroll = document.documentElement.scrollTop || document.body.scrollTop;
if (currentScroll > 0) {
window.requestAnimationFrame(smoothscroll);
window.scrollTo (0,currentScroll - (currentScroll/5));
}
})();
Jika anda ingin melakukan bergulir halus, coba ini:
$("a").click(function() {
$("html, body").animate({ scrollTop: 0 }, "slow");
return false;
});
Solusi lain adalah JavaScript window.scrollTo metode :
window.scrollTo(x-value, y-value);
Parameter :
Benar-benar aneh: pertanyaan Ini aktif selama lima tahun sekarang dan masih ada vanilla JavaScript jawaban untuk menghidupkan bergulir... Jadi di sini anda pergi:
var scrollToTop = window.setInterval(function() {
var pos = window.pageYOffset;
if ( pos > 0 ) {
window.scrollTo( 0, pos - 20 ); // how far to scroll on each step
} else {
window.clearInterval( scrollToTop );
}
}, 16); // how fast to scroll (this equals roughly 60 fps)
Jika anda suka, anda dapat membungkus ini dalam fungsi dan panggilan itu melalui onclick
atribut. Check this [jsfiddle][1]
Catatan: Ini adalah solusi dasar dan mungkin bukan yang paling performant satu. Sangat diuraikan contoh dapat ditemukan di sini: https://github.com/cferdinandi/smooth-scroll
Dengan jendela.scrollTo(0, 0);
sangat cepat
jadi saya mencoba Mark Ursino contoh, tapi di Chrome tidak terjadi apa-apa
dan saya menemukan ini
$('.showPeriodMsgPopup').click(function(){
//window.scrollTo(0, 0);
$('html').animate({scrollTop:0}, 'slow');//IE, FF
$('body').animate({scrollTop:0}, 'slow');//chrome, don't know if Safari works
$('.popupPeriod').fadeIn(1000, function(){
setTimeout(function(){$('.popupPeriod').fadeOut(2000);}, 3000);
});
});
diuji semua 3 browser dan karya
i'm menggunakan blueprint css
ini adalah ketika seorang klien klik "Pesan sekarang" tombol dan doesn't memiliki masa sewa yang dipilih, perlahan-lahan bergerak ke atas di mana kalender dan membuka dialog div menunjuk ke 2 <input> bidang, setelah 3sec itu memudar
A banyak dari pengguna merekomendasikan memilih kedua html dan tag body untuk kompatibilitas cross-browser, seperti:
$('html, body').animate({ scrollTop: 0 }, callback);
Ini dapat perjalanan anda meskipun jika anda're menghitung pada anda callback berjalan hanya sekali. Itu justru akan dijalankan dua kali karena anda've dipilih dua elemen.
Jika itu adalah masalah bagi anda, anda bisa melakukan sesuatu seperti ini:
function scrollToTop(callback) {
if ($('html').scrollTop()) {
$('html').animate({ scrollTop: 0 }, callback);
return;
}
$('body').animate({ scrollTop: 0 }, callback);
}
Alasan ini bekerja di Chrome $('html').scrollTop()
mengembalikan 0, tapi tidak di browser lain seperti Firefox.
Jika anda don't ingin menunggu animasi untuk menyelesaikan kasus yang scrollbar sudah di atas, coba ini:
function scrollToTop(callback) {
if ($('html').scrollTop()) {
$('html').animate({ scrollTop: 0 }, callback);
return;
}
if ($('body').scrollTop()) {
$('body').animate({ scrollTop: 0 }, callback);
return;
}
callback();
}
$(".scrolltop").click(function() {
$("html, body").animate({ scrollTop: 0 }, "slow");
return false;
});
.section{
height:400px;
}
.section1{
background-color: #333;
}
.section2{
background-color: red;
}
.section3{
background-color: yellow;
}
.section4{
background-color: green;
}
.scrolltop{
position:fixed;
right:10px;
bottom:10px;
color:#fff;
}
<html>
<head>
<title>Scroll top demo</title>
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
</head>
<body>
<div class="content-wrapper">
<div class="section section1"></div>
<div class="section section2"></div>
<div class="section section3"></div>
<div class="section section4"></div>
<a class="scrolltop">Scroll top</a>
</div>
</body>
</html>