Przewiń na górę strony używając JavaScript / jQuery?

Mam <button> na stronie, gdy ten przycisk jest wciśnięty Ukryty <div> jest wyświetlany za pomocą jQuery.

Jak przewijać do góry strony za pomocą polecenia JavaScript / jQuery w tej funkcji? Jest to pożądane, nawet jeśli pasek przewijania natychmiast wskakuje na górę. Nie szukam płynnego przewijania.

Author: Termininja, 2009-07-17

30 answers

Jeśli nie potrzebujesz zmiany do programu animate, nie musisz używać żadnych specjalnych wtyczek - użyłbym tylko natywnego okna JavaScript.metoda scrollTo -- Przejście W 0,0 spowoduje natychmiastowe przewinięcie strony do lewego górnego rogu.

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

Parametry

  • x-coord jest pikselem wzdłuż osi poziomej.
  • y-coord jest pikselem wzdłuż osi pionowej.
 1800
Author: daniellmb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-27 15:10:52

Jeśli chcesz płynnie przewijać, spróbuj czegoś takiego:

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

To zajmie dowolny <a> tag, którego href="#top" i sprawi, że będzie płynnie przewijał się do góry.

 1201
Author: Mark Ursino,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-17 23:27:49

Spróbuj przewijać na górze

<script>
 $(document).ready(function(){
    $(window).scrollTop(0);
});
</script>
 134
Author: mehmood,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-01 13:00:52

Nie potrzebujesz jQuery, aby to zrobić. Standardowy znacznik HTML wystarczy...

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

<a target="#jump_to_me">Click Here To Destroy The World!</a>
 88
Author: Mathew,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-17 18:51:12

Wszystkie te sugestie świetnie sprawdzają się w różnych sytuacjach. Dla tych, którzy znajdą tę stronę poprzez wyszukiwanie, Można również dać to spróbować. JQuery, Brak wtyczki, przewiń do elementu.

$('html, body').animate({
    scrollTop: $("#elementID").offset().top
}, 2000);
 50
Author: D.Alexander,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-23 09:53:12

Płynne przewijanie, czysty javascript:

(function smoothscroll(){
    var currentScroll = document.documentElement.scrollTop || document.body.scrollTop;
    if (currentScroll > 0) {
         window.requestAnimationFrame(smoothscroll);
         window.scrollTo (0,currentScroll - (currentScroll/5));
    }
})();
 32
Author: wake-up-neo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-29 10:49:04
<script>

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

W html

<a href="#top">go top</a>
 26
Author: hasancse016,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-14 16:44:35

Jeśli chcesz zrobić płynne przewijanie, spróbuj tego:

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

Innym rozwiązaniem jest okno JavaScript.metoda scrollTo:

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

Parametry:

  • wartość x to piksel wzdłuż osi poziomej.
  • wartość y jest pikselem wzdłuż osi pionowej.
 23
Author: Gaurang Sondagar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-11 10:37:41

Z window.scrollTo(0, 0); jest bardzo szybki
więc próbowałem Mark Ursino przykład, ale w Chrome nic się nie dzieje
i znalazłem to

$('.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);
    });
});

Przetestowałem wszystkie 3 przeglądarki i działa
używam blueprint css
to jest, gdy klient kliknie przycisk "Zarezerwuj teraz" i nie ma wybranego okresu wynajmu, powoli przesuwa się do góry, gdzie znajdują się kalendarze i otwiera div dialogowe wskazujące na 2 pola, po 3 sekundach zanika

 21
Author: Luiggi ZAMOL,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-24 12:05:46

A lot z użytkownicy zalecają wybranie zarówno znaczników html, jak i body dla zgodności między przeglądarkami, tak:

$('html, body').animate({ scrollTop: 0 }, callback);

To może potknąć się jednak, jeśli liczysz na oddzwonienie działa tylko raz. W rzeczywistości będzie działać dwa razy, ponieważ wybrałeś dwa elementy.

Jeśli to dla Ciebie problem, możesz zrobić coś takiego:

function scrollToTop(callback) {
    if ($('html').scrollTop()) {
        $('html').animate({ scrollTop: 0 }, callback);
        return;
    }

    $('body').animate({ scrollTop: 0 }, callback);
}

To działa w Chrome $('html').scrollTop() zwraca 0, ale nie w innych przeglądarkach, takich jak Firefox.

Jeśli nie chcesz czekać na zakończenie animacji, jeśli pasek przewijania jest już u góry, spróbuj tego:

function scrollToTop(callback) {
    if ($('html').scrollTop()) {
        $('html').animate({ scrollTop: 0 }, callback);
        return;
    }

    if ($('body').scrollTop()) {
        $('body').animate({ scrollTop: 0 }, callback);
        return;
    }

    callback();
}
 21
Author: David Kennedy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:59

Naprawdę dziwne: to pytanie jest aktywne od pięciu lat i nadal nie ma odpowiedzi na waniliowy JavaScript, aby animować przewijanie... więc proszę bardzo:

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)

Jeśli chcesz, możesz zawinąć to w funkcję i wywołać za pomocą atrybutu onclick. Sprawdź to jsfiddle

Uwaga: Jest to bardzo podstawowe rozwiązanie, a może nie najbardziej wydajne. Bardzo rozbudowany przykład można znaleźć tutaj: https://github.com/cferdinandi/smooth-scroll

 19
Author: AvL,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-02 10:00:53

The old #top can do the trick

document.location.href = "#top";

Działa dobrze w FF, IE i Chrome

 16
Author: pollirrata,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-01 02:29:07

Spróbuj tego

<script>
    $(window).scrollTop(100);
</script>
 13
Author: Renjith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-01 06:59:01

$(document).scrollTop(0); też działa.

 13
Author: Hari Ganesan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-31 20:53:52
<script>
$(function(){
   var scroll_pos=(0);          
   $('html, body').animate({scrollTop:(scroll_pos)}, '2000');
});
</script>

Edit:

$('html, body').animate({scrollTop:(scroll_pos)}, 2000);
 12
Author: Kamlesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-08 06:08:50

Non - jQuery solution / pure JavaScript:

document.body.scrollTop = document.documentElement.scrollTop = 0;
 10
Author: tfont,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-30 16:25:04

To zadziała:

window.scrollTo(0, 0);

 9
Author: Santosh Jadi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-19 05:13:56

Wypróbuj ten kod:

$('html, body').animate({
    scrollTop: $("div").offset().top
}, time);

Div => Element Dom, w którym chcesz przenieść przewijanie.

Czas = > milisekund, określ prędkość przewijania.

 8
Author: Wasif Ale,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-08 07:42:55

Dlaczego nie używasz wbudowanej funkcji jQuery scrollTop:

$('html, body').scrollTop(0);//For scrolling to top

$("body").scrollTop($("body")[0].scrollHeight);//For scrolling to bottom
Krótko i prosto!
 7
Author: Sandeep Gantait,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-20 09:42:31

$(".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>
 7
Author: arvinda kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-14 07:45:01

Nie potrzebujesz JQuery. Po prostu możesz wywołać skrypt

window.location = '#'

Po kliknięciu przycisku" Przejdź do góry"

Przykładowe demo:

Output.jsbin.com/fakumo#

PS: nie używaj tego podejścia, gdy używasz nowoczesnych bibliotek, takich jak angularjs. To może złamać hashbang URL.

 6
Author: Sriramajeyam Sugumaran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-25 15:01:07

Możesz po prostu użyć celu z twojego linku, takiego jak #someid, gdzie #someid jest identyfikatorem div.

LUB możesz użyć dowolnej liczby przewijanych wtyczek, które czynią to bardziej eleganckim.

Http://plugins.jquery.com/project/ScrollTo jest przykładem.

 5
Author: ScottE,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-17 18:09:20

Po prostu użyj tego skryptu do przewijania do góry bezpośrednio.

<script>
$(document).ready(function(){
    $("button").click(function(){
        ($('body').scrollTop(0));
    });
});
</script>
 5
Author: Gayashan Perera,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-27 11:31:35

Możesz spróbować użyć JS jak w tym Fiddle http://jsfiddle.net/5bNmH/1/

Dodaj przycisk "Przejdź do góry"w stopce strony:

<footer>
    <hr />
    <p>Just some basic footer text.</p>
    <!-- Go to top Button -->
    <a href="#" class="go-top">Go Top</a>
</footer>
 4
Author: asertym,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-01 19:35:47

Jeśli nie chcesz płynnego przewijania, możesz oszukiwać i zatrzymać animację płynnego przewijania zaraz po jej uruchomieniu... tak:

   $(document).ready(function() {
      $("a[href='#top']").click(function() {
          $("html, body").animate({ scrollTop: 0 }, "1");              
          $('html, body').stop(true, true);

          //Anything else you want to do in the same action goes here

          return false;                              
      });
  });

Nie mam pojęcia czy jest polecane/dozwolone, ale działa :)

Kiedy to użyjesz? Nie jestem pewien, ale może gdy chcesz użyć jednego kliknięcia, aby animować jedną rzecz z Jquery, ale zrobić inną bez animacji? ie otwórz panel logowania administratora na górze strony i natychmiast przejdź do góry, aby go zobaczyć.
 4
Author: Jon Story,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-23 18:18:05
function scrolltop() {

    var offset = 220;
    var duration = 500;

    jQuery(window).scroll(function() {
        if (jQuery(this).scrollTop() > offset) {
            jQuery('#back-to-top').fadeIn(duration);
        } else {
            jQuery('#back-to-top').fadeOut(duration);
        }
    });

    jQuery('#back-to-top').click(function(event) {
        event.preventDefault();
        jQuery('html, body').animate({scrollTop: 0}, duration);
        return false;
    });
}
 4
Author: Mardzis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-21 21:11:32

Żadna z powyższych odpowiedzi nie będzie działać w SharePoint 2016.

To musi być zrobione tak: https://sharepoint.stackexchange.com/questions/195870/

var w = document.getElementById("s4-workspace");
w.scrollTop = 0;
 4
Author: jeancallisti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-14 12:21:15

Motywacja

To proste rozwiązanie działa natywnie i implementuje płynne przewijanie do dowolnej pozycji.

Unika używania linków zakotwiczonych (tych z #), które, moim zdaniem, są przydatne, jeśli chcesz połączyć się z sekcją, ale nie są tak wygodne w niektórych sytuacjach, szczególnie gdy wskazują na górę, co może prowadzić do dwóch różnych adresów URL wskazujących na tę samą lokalizację (http://www.example.org oraz http://www.example.org/#).

Rozwiązanie

Umieść identyfikator do tagu, do którego chcesz przewinąć, na przykład pierwszą sekcję , która odpowiada na to pytanie, ale identyfikator może być umieszczony wszędzie na stronie.

<body>
  <section id="top">
    <!-- your content -->
  </section>
  <div id="another"><!-- more content --></div>

Następnie jako przycisk możesz użyć linku, po prostu edytuj atrybut onclick z kodem takim jak ten.

<a onclick="document.getElementById('top').scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'nearest' })">Click me</a>

Gdzie argumentem document.getElementById jest id tagu, do którego chcesz przewijać po klik.

 4
Author: Gianluca Casati,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-09 08:57:29

Active all Browser. Powodzenia

var process;
        var delay = 50; //milisecond scroll top
        var scrollPixel = 20; //pixel U want to change after milisecond
        //Fix Undefine pageofset when using IE 8 below;
        function getPapeYOfSet() {
            var yOfSet = (typeof (window.pageYOffset) === "number") ? window.pageYOffset : document.documentElement.scrollTop;
            return yOfSet;
        }



        function backToTop() {
            process = setInterval(function () {
                var yOfSet = getPapeYOfSet();
                if (yOfSet === 0) {
                    clearInterval(process);
                } else {
                    window.scrollBy(0, -scrollPixel);
                }
            }, delay);
        }
 3
Author: Anh Tran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-19 03:22:13

Spróbuj tego

<script>
  $(function(){
   $('a').click(function(){
    var href =$(this).attr("href");
   $('body, html').animate({
     scrollTop: $(href).offset().top
     }, 1000)
  });
 });
 </script>
 3
Author: Eugeni Bejan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-27 22:18:06