Прокрутите страницу вверх, используя JavaScript / jQuery? - PullRequest
1440 голосов
/ 17 июля 2009

У меня на странице <button>, при нажатии этой кнопки скрытый <div> отображается с помощью jQuery.

Как мне прокрутить вверх страницу, используя команду JavaScript / jQuery в этой функции? Желательно, даже если полоса прокрутки мгновенно прыгает наверх. Я не ищу плавной прокрутки.

Ответы [ 37 ]

1971 голосов
/ 17 июля 2009

Если вам не нужны изменения для анимации, вам не нужно использовать какие-либо специальные плагины - я бы просто использовал собственный метод JavaScript window.scrollTo - передача 0,0 приводит к прокрутке страницы до вверху слева мгновенно.

window.scrollTo(x-coord, y-coord);

Параметры

  • х-координата - это пиксель вдоль горизонтальной оси.
  • y-координата - это пиксель вдоль вертикальной оси.
1278 голосов
/ 17 июля 2009

Если вы хотите плавную прокрутку, попробуйте что-то вроде этого:

$("a[href='#top']").click(function() {
  $("html, body").animate({ scrollTop: 0 }, "slow");
  return false;
});

Это возьмет любой тег <a>, чей href="#top", и сделает его плавным, прокручивая вверх.

159 голосов
/ 21 мая 2012

Попробуйте прокрутить сверху

<script>
 $(document).ready(function(){
    $(window).scrollTop(0);
});
</script>
94 голосов
/ 17 июля 2009

Вам не нужен jQuery для этого. Достаточно стандартного HTML-тега ...

<div id="jump_to_me">
    blah blah blah
</div>

<a target="#jump_to_me">Click Here To Destroy The World!</a>
58 голосов
/ 23 апреля 2012

Все эти предложения отлично подходят для различных ситуаций. Для тех, кто находит эту страницу с помощью поиска, можно также попробовать this . JQuery, без плагина, выделите элемент.

$('html, body').animate({
    scrollTop: $("#elementID").offset().top
}, 2000);
48 голосов
/ 23 октября 2018

Лучшее решение с плавной анимацией:

// this changes the scrolling behavior to "smooth"
window.scrollTo({ top: 0, behavior: 'smooth' });

Ссылка: https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollTo#Example

38 голосов
/ 29 мая 2015

плавная прокрутка, чистый JavaScript:

(function smoothscroll(){
    var currentScroll = document.documentElement.scrollTop || document.body.scrollTop;
    if (currentScroll > 0) {
         window.requestAnimationFrame(smoothscroll);
         window.scrollTo (0,currentScroll - (currentScroll/5));
    }
})();
27 голосов
/ 11 сентября 2017

Если вы хотите сделать плавную прокрутку, попробуйте это:

$("a").click(function() {
     $("html, body").animate({ scrollTop: 0 }, "slow");
     return false;
});

Другим решением является метод JavaScript window.scrollTo:

 window.scrollTo(x-value, y-value);

Параметры:

  • x-значение - это пиксель по горизонтальной оси.
  • y-значение - это пиксель вдоль вертикальной оси.
27 голосов
/ 14 февраля 2014
<script>

  $("a[href='#top']").click(function() {
     $("html, body").animate({ scrollTop: 0 }, "slow");
     return false;
  });
</script>

в html

<a href="#top">go top</a>
24 голосов
/ 02 октября 2014

Действительно странно: этот вопрос активен в течение пяти лет, и до сих пор нет ванильного ответа JavaScript для анимации прокрутки ... Итак, вы идете:

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)

Если хотите, вы можете обернуть это в функцию и вызвать ее через атрибут onclick. Проверьте это jsfiddle

Примечание. Это очень простое и, возможно, не самое эффективное решение. Очень сложный пример можно найти здесь: https://github.com/cferdinandi/smooth-scroll

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...