Scroll naar de bovenkant van de pagina met JavaScript?

Hoe scrol ik met JavaScript naar de bovenkant van de pagina? De schuifbalk die onmiddellijk naar de bovenkant van de pagina springt, is ook wenselijk, omdat ik niet op zoek ben naar soepel scrollen.


Antwoord 1, autoriteit 100%

Als je de wijziging niet nodig hebt om te animeren, hoef je geen speciale plug-ins te gebruiken – ik zou gewoon de native JavaScript-methode window.scrollTo()gebruiken — doorgeven 0, 0zal de pagina onmiddellijk naar links bovenaan scrollen.

window.scrollTo(xCoord, yCoord);

Parameters

  • xCoord is de pixel langs de horizontale as.
  • yCoord is de pixel langs de verticale as.

Antwoord 2, autoriteit 60%

Als je soepel schuiven wilt, probeer dan zoiets als dit:

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

Dat vereist elke <a>-tag waarvan href="#top"en zorgt ervoor dat deze soepel naar boven scrollt.


Antwoord 3, autoriteit 8%

Probeer dit om bovenaan te scrollen

<script>
 $(document).ready(function(){
    $(window).scrollTop(0);
});
</script>

Antwoord 4, autoriteit 8%

Betere oplossing met vloeiende animatie:

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

Referentie: https://developer.mozilla. org/en-US/docs/Web/API/Window/scrollTo#Example


Antwoord 5, autoriteit 5%

Je hebt geen jQuery nodig om dit te doen. Een standaard HTML-tag is voldoende…

<div id="jump_to_me">
    blah blah blah
</div>
<a target="#jump_to_me">Click Here To Destroy The World!</a>

Antwoord 6, autoriteit 3%

Al deze suggesties werken uitstekend voor verschillende situaties. Voor degenen die deze pagina vinden via een zoekopdracht, kan men ook diteen poging. JQuery, geen plug-in, scroll naar element.

$('html, body').animate({
    scrollTop: $("#elementID").offset().top
}, 2000);

Antwoord 7, autoriteit 2%

vloeiend scrollen, puur javascript:

(function smoothscroll(){
    var currentScroll = document.documentElement.scrollTop || document.body.scrollTop;
    if (currentScroll > 0) {
         window.requestAnimationFrame(smoothscroll);
         window.scrollTo (0,currentScroll - (currentScroll/5));
    }
})();

Antwoord 8

<script>
$(function(){
   var scroll_pos=(0);          
   $('html, body').animate({scrollTop:(scroll_pos)}, '2000');
});
</script>

Bewerken:

$('html, body').animate({scrollTop:(scroll_pos)}, 2000);

Op een andere manier scrollen met boven- en linkermarge:

window.scrollTo({ top: 100, left: 100, behavior: 'smooth' });

Antwoord 9

Echt vreemd: deze vraag is nu vijf jaar actief en er is nog steeds geen vanille JavaScript-antwoord om het scrollen te animeren… Dus hier ga je:

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)

Als je wilt, kun je dit in een functie inpakken en die aanroepen via het attribuut onclick. Controleer deze jsfiddle

Opmerking: dit is een zeer eenvoudige oplossing en misschien niet de meest performante. Een zeer uitgewerkt voorbeeld is hier te vinden: https://github.com/cferdinandi/smooth-scroll


Antwoord 10

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

in html

<a href="#top">go top</a>

Antwoord 11

Als je soepel wilt scrollen, probeer dan dit:

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

Een andere oplossing is de JavaScript-methode window.scrollTo :

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

Parameters :

  • x-waarde is de pixel langs de horizontale as.
  • y-waarde is de pixel langs de verticale as.

Antwoord 12

Met window.scrollTo(0, 0);is erg snel
dus ik heb het voorbeeld van Mark Ursino geprobeerd, maar in Chrome gebeurt er niets
en ik vond dit

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

alle 3 de browsers getest en het werkt
ik gebruik blauwdruk css
dit is wanneer een klant op de knop “Nu boeken” klikt en de huurperiode niet heeft geselecteerd, langzaam naar de top gaat waar de kalenders zijn en een dialoogvenster opent dat naar de 2 velden wijst, na 3 seconden vervaagt het


Antwoord 13

Een veelvan gebruikersraden aan om zowel de html- als de body-tags te selecteren voor compatibiliteit tussen browsers, zoals:

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

Hierdoor kun je echter struikelen als je erop rekent dat je callback maar één keer wordt uitgevoerd. Het wordt in feite twee keer uitgevoerd omdat je twee elementen hebt geselecteerd.

Als dat een probleem voor je is, kun je zoiets als dit doen:

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

De reden dat dit werkt, is dat in Chrome $('html').scrollTop()retourneert 0, maar niet in andere browsers zoals Firefox.

Als je niet wilt wachten tot de animatie is voltooid in het geval dat de schuifbalk al bovenaan staat, probeer dan dit:

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

Antwoord 14

De oude #topkan het lukken

document.location.href = "#top";

Werkt prima in FF, IE en Chrome


Antwoord 15

$(".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>

Antwoord 16

Niet-jQuery-oplossing / puur JavaScript:

document.body.scrollTop = document.documentElement.scrollTop = 0;

Antwoord 17

$(document).scrollTop(0);werkt ook.


Antwoord 18

Dit werkt:

window.scrollTo(0, 0);


Antwoord 19

Probeer dit

<script>
    $(window).scrollTop(100);
</script>

Antwoord 20

De equivalente oplossing in TypeScriptkan als volgt zijn

  window.scroll({
      top: 0,
      left: 0,
      behavior: 'smooth'
    });

Antwoord 21

Probeer deze code:

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

div =>Dom Element waar je de scroll naartoe wilt verplaatsen.

tijd =>milliseconden, definieer de snelheid van het scrollen.


Antwoord 22

Pure JavaScript-oplossing:

function scrollToTop() {
  window.scrollTo({
    top: 0,
    behavior: 'smooth'
});

Ik schrijf een geanimeerde oplossing op Codepen

Je kunt ook een andere oplossing proberen met CSS scroll-behavior: smootheigenschap.

html {
    scroll-behavior: smooth;
}
@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }
}

Antwoord 23

Waarom gebruikt u de ingebouwde JQuery-functie scrollTop niet :

$('html, body').scrollTop(0);//For scrolling to top
$("body").scrollTop($("body")[0].scrollHeight);//For scrolling to bottom

Kort en eenvoudig!


Antwoord 24

Je hebt geen JQuery nodig. Je kunt het script gewoon aanroepen

window.location = '#'

door op de knop “Ga naar boven” te klikken

Voorbeelddemo:

output.jsbin.com/fakumo#

PS: Gebruik deze aanpak niet als je moderne bibliotheken zoals angularjs gebruikt. Dat zou de URL-hashbang kunnen breken.


Antwoord 25

Gebruik dit script om direct naar boven te scrollen.

<script>
$(document).ready(function(){
    $("button").click(function(){
        ($('body').scrollTop(0));
    });
});
</script>

Antwoord 26

Motivatie

Deze eenvoudige oplossing werkt native en implementeert een soepele scroll naar elke positie.

Het vermijdt het gebruik van ankerlinks (die met #) die, naar mijn mening, handig zijn als je naar een sectie wilt linken, maar in sommige situaties niet zo comfortabel zijn, vooral wanneer je verwijst naar top, wat kan leiden tot twee verschillende URL’s die naar dezelfde locatie verwijzen (http://www.example.orgen http://www.example.org/#).

Oplossing

Zet een idop de tag waar u naartoe wilt scrollen, bijvoorbeeld uw eerste sectie, die deze vraag beantwoordt, maar de idkan overal op de pagina worden geplaatst.

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

Dan kun je als knop een link gebruiken, bewerk gewoon het onclickattribuut met een code als deze.

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

Waarbij het argument van document.getElementByIdde idis van de tag waarnaar u wilt scrollen na het klikken.


Antwoord 27

Als je geen vloeiend schuiven wilt, kun je vals spelen en de soepel schuivende animatie stoppen zodra je hem start… zoals zo:

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

Ik heb geen idee of het wordt aanbevolen/toegestaan, maar het werkt 🙂

Wanneer zou je dit gebruiken? Ik weet het niet zeker, maar misschien als je één klik wilt gebruiken om één ding te animeren met JQuery, maar een ander wilt doen zonder animatie? dat wil zeggen: open een invoegpaneel voor beheerders bovenaan de pagina en spring onmiddellijk naar boven om het te zien.


Antwoord 28

U kunt gewoon een doel uit uw link gebruiken, zoals #someid, waarbij #someid de div-id is.

Of je kunt een willekeurig aantal scroll-plug-ins gebruiken die dit eleganter maken.

http://plugins.jquery.com/project/ScrollTois een voorbeeld.


Antwoord 29

U kunt de ingebouwde functie van javascript gebruiken scrollTo:

function scroll() {
  window.scrollTo({
    top: 0,
    behavior: 'smooth'
  });
}
<button onclick="scroll">Scroll</button>

Antwoord 30

Vlot scrollen met pure Javascript, zonder jQuery

// Get The Id
var topPage = document.getElementById(`top-page`)
// On Click, Scroll to the Top of Page
topPage.onclick = () => window.scrollTo({ top: 0, behavior: 'smooth'}) // Remove behavior: 'smooth' if you don't want smooth scrolling
// On scroll, Show/Hide the button
window.onscroll = () => {
  window.scrollY > 500 // You can change the value if you want
    ? (topPage.style.display = `block`)
    : (topPage.style.display = `none`)
}
body {
    background-color: #111;
    height:5000px;
}
#top-page {
    all:unset;
    position: fixed;
    right: 20px;
    bottom: 20px;
    cursor: pointer;
    font: bold 2rem monospace;
    color:white;
    display: none;
}
<button id="top-page">Top</button>

Other episodes