So springen Sie zum Anfang der Browserseite


185

Ich schreibe ein modales Popup und ich brauche den Browser, um zum oberen Bildschirmrand zu springen, wenn die geöffnete modale Taste gedrückt wird. Gibt es eine Möglichkeit, den Browser mit jQuery nach oben zu scrollen?

Antworten:


404

Sie können Folgendes einstellen scrollTop:

$('html,body').scrollTop(0);

Oder wenn Sie eine kleine Animation anstelle eines Schnappschusses nach oben wünschen:

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

1
gut ... Ich habe zuvor das scrollTo-Plugin für jQuery verwendet, um dies zu erreichen - hätte ein bisschen Code mit Ihrem Code speichern können ... danke für die Lektion ;-)
Zathrus Writer

@MikhailBatcer - Deaktivieren Sie Ihr CSS und prüfen Sie, ob es funktioniert. Möglicherweise haben Sie ein Problem damit, wie Sie Ihre htmlund bodyTags gestaltet haben. Andernfalls verwenden Sie $(window)stattdessen.
Invot

Wie füge ich die Dauer für Animations-Scrolling hinzu?
Maxim Strutinskiy

139

Ohne Animation können Sie einfaches JS verwenden:

scroll(0,0)

Überprüfen Sie mit der Animation Nicks Antwort .


4
Wird dies in allen Browsern unterstützt?
Pacerier

1
scrollbefindet sich im CSSOM-Standard, während er scrollToursprünglich in DOM Level 0 definiert wurde und nicht Teil eines Standards ist. CSSOM enthält jedoch aus Gründen der scrollToAbwärtskompatibilität.
Clint Pachl

3
Ich denke, scrollwird weitgehend unterstützt. Siehe stackoverflow.com/q/1925671/41906
Clint Pachl

Vielen Dank. Ich denke, das window && window.scroll(0,0);ist in meinem Ansichtsmodell akzeptabel.
Nrodic

34

Wenn Sie das Dialogfeld "jQuery-Benutzeroberfläche" verwenden, können Sie das Modal einfach so gestalten, dass es an der im Fenster festgelegten Position angezeigt wird, damit es nicht aus der Ansicht angezeigt wird, sodass kein Bildlauf erforderlich ist. Andernfalls,

var scrollTop = function() {
    window.scrollTo(0, 0);
};

sollte den Trick machen.


13

Sie könnten es ohne Javascript tun und einfach Ankertags verwenden? Dann wäre es für js kostenlos zugänglich.

Obwohl Sie Modalitäten verwenden, ist es Ihnen vermutlich egal, ob Sie frei sind. ;)


1
Die Verwendung von Ankertags würde die Hash-basierte Navigation unterbrechen.
Tom Landau

2

// When the user scrolls down 20px from the top of the document, show the button
window.onscroll = function() {scrollFunction()};

function scrollFunction() {
    if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
        document.getElementById("myBtn").style.display = "block";
    } else {
        document.getElementById("myBtn").style.display = "none";
    }
   
}

// When the user clicks on the button, scroll to the top of the document
function topFunction() {
 
     $('html, body').animate({scrollTop:0}, 'slow');
}
body {
  font-family: Arial, Helvetica, sans-serif;
  font-size: 20px;
}

#myBtn {
  display: none;
  position: fixed;
  bottom: 20px;
  right: 30px;
  z-index: 99;
  font-size: 18px;
  border: none;
  outline: none;
  background-color: red;
  color: white;
  cursor: pointer;
  padding: 15px;
  border-radius: 4px;
}

#myBtn:hover {
  background-color: #555;
}
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>

<button onclick="topFunction()" id="myBtn" title="Go to top">Top</button>

<div style="background-color:black;color:white;padding:30px">Scroll Down</div>
<div style="background-color:lightgrey;padding:30px 30px 2500px">This example demonstrates how to create a "scroll to top" button that becomes visible when the user starts to scroll the page.</div>


2

Ich weiß, dass dies alt ist, aber für diejenigen, die Probleme in Edge haben:

Plain JS: window.scrollTop=0;

Leider scroll()und scrollTo()werfen Fehler in Edge.


1

Wenn Sie das Dialogfeld "jQuery-Benutzeroberfläche" verwenden, können Sie das Modal einfach so gestalten, dass es an der im Fenster festgelegten Position angezeigt wird, damit es nicht aus der Ansicht angezeigt wird, sodass kein Bildlauf erforderlich ist. Andere


0

Reine Javascript- Lösung

theId.onclick = () => window.scrollTo(top: 0)

Wenn Sie einen reibungslosen Bildlauf wünschen

theId.onclick = () => window.scrollTo({ top: 0, behavior: `smooth` })
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.