JavaScript ermittelt die Position der Bildlaufleiste und verschiebt die Seite zum Ankerpunkt

JavaScript ermittelt die Position der Bildlaufleiste und verschiebt die Seite zum Ankerpunkt

Vorwort

In diesem Artikel wird ein Problem beschrieben, auf das ich bei meiner letzten Arbeit gestoßen bin. Im Prozess der hybriden Entwicklung der nativen App und des Front-Ends h5 ist eine der Seiten die Seite zur Auswahl einer Städteliste, ähnlich der Städteauswahl in Meituan und Ele.me, der Banklistenauswahl in der Bank-App und der schnellen Positionierung des Ankerpunkts der Kontaktauswahl im Adressbuch. Als Anfänger empfinde ich diese Funktion immer noch als etwas anstrengend. Lassen Sie mich einige der Implementierungsmethoden mit Ihnen teilen, die ich gefunden habe.

Was ist das Ankerpunktproblem?

Bei PC-seitigen Webseiten gibt es auf der rechten Seite der allgemeinen Webseite eine Schaltfläche zum Zurück-nach-oben-Knopf. Klicken Sie darauf, um direkt zum Anfang der Webseite zu springen. Dies ist die Realisierung des Ankerpunkts.

Bei mobilen Geräten öffnen Sie das Adressbuch Ihres Telefons, klicken auf den Buchstaben rechts und die Seite springt direkt zum Kontakt mit dem entsprechenden Buchstaben. Dies ist auch die Implementierung des Ankerpunkts.

Gemeinsame Lösungen

1. Das href-Attribut im <a>-Tag wird auf den Wert der ID des Sprungelements gesetzt

<Stil>
    #meindiv{
      Höhe: 1200px;
      Breite: 100 %;
      Hintergrundfarbe: rosa;
      Position: relativ;
    }
    A{
      Position: absolut;
      oben: 1000px;
      links: 1000px;
    }
   </Stil>
  <div id="meindiv">
    Ich bin oben auf der Seite</div>
  <a href="#mydiv" rel="external nofollow" >Zurück zum Anfang</a>

Die obige Methode entspricht dem Setzen eines Hyperlinks und das A-Tag springt direkt, allerdings ändert dies die Adresse in der Adressleiste des Browsers, was nicht sehr praktisch ist.

2. Native js erhält die Position der Bildlaufleiste und ändert scrollTop

<Stil>
    Körper{
      Position: relativ;
    }
    h1{
      Rand: 0 automatisch;
    }
    .mybtn1{
      Position: fest;
      links: 200px;
      oben: 500px;
    }
    .mybtn2{
      Position: fest;
      links: 200px;
      oben: 550px;
    }
  </Stil>
  <Text>
    <h1 id="topH1">1</h1>
    <h1>2</h1>
    <h1>3</h1>
    <h1>4</h1>
    <h1>5</h1>
    <h1>6</h1>
    <h1>7</h1>
    <h1>1</h1>
    <h1>2</h1>
    <h1>3</h1>
    <h1>4</h1>
    <h1>5</h1>
    <h1>6</h1>
    <h1>7</h1>
    <h1>1</h1>
    <h1>2</h1>
    <h1>3</h1>
    <h1>4</h1>
    <h1>5</h1>
    <h1>6</h1>
    <h1 id="tobtmH1">7</h1>
  <button class="mybtn1" onclick="toTop()">Zurück zum Anfang</button>
  <Skript>
   Funktion toTop(){
    var topH1 = document.getElementById("topH1")
    document.documentElement.scrollTop=topH1.offsetTop 
    window.pageYOffset=topH1.offsetTop 
    Dokument.body.scrollTop=topH1.offsetTop;
    
   }
  </Skript> 
  </body>

Mit dieser Methode wird der Schaltfläche ein Klickereignis hinzugefügt und die Position der Bildlaufleiste geändert, nachdem das Klickereignis ausgelöst wurde. Bei dieser Methode müssen jedoch Kompatibilitätsprobleme behoben werden, was problematisch ist. Sie wurde auf PCs und Mobilgeräten getestet und für wirksam befunden.

3.element.scrollIntoview bewirkt, dass sich die Bildlaufleiste entsprechend der Ansicht ändert

<Stil>
    Körper{
      Position: relativ;
    }
    .meindiv{
      Rand oben: 100px;
      Rand: 1px durchgehend rosa;
    }
    h1{
      Rand: 0 automatisch;
    }
    .mybtn1{
      Position: fest;
      links: 200px;
      oben: 500px;
    }
    .mybtn2{
      Position: fest;
      links: 200px;
      oben: 550px;
    }
</Stil>
<Text>
  <div Klasse="meindiv">
  <h1 id="topH1">1</h1>
  <h1>2</h1>
  <h1>3</h1>
  <h1>4</h1>
  <h1>5</h1>
  <h1>6</h1>
  <h1>7</h1>
  <h1>1</h1>
  <h1>2</h1>
  <h1>3</h1>
  <h1>4</h1>
  <h1>5</h1>
  <h1>6</h1>
  <h1>7</h1>
  <h1>1</h1>
  <h1>2</h1>
  <h1>3</h1>
  <h1>4</h1>
  <h1>5</h1>
  <h1>6</h1>
  <h1 id="tobtmH1">7</h1>
</div>
  <button class="mybtn1" onclick="toTop()">Zurück zum Anfang</button>
  <button class="mybtn2" onclick="toBtm()">Nach unten gehen</button>
  <Skript>
    fenster.onload = funktion(){

    }
  // Die aufrufende Methode ist element.scrollIntoview()
  //Wenn der Parameter wahr ist, wird die Seite oder der Container so gescrollt, dass die Oberkante des Elements mit der Oberkante des Ansichtscontainers ausgerichtet ist. //Wenn der Parameter falsch ist, wird die Unterkante des Elements mit der Unterkante des Ansichtscontainers ausgerichtet. Funktion toTop(){
      var topH1 = document.getElementById('topH1')
      topH1.scrollIntoView(true)
    }
    Funktion toBtm() {
      var tobtmH1 = document.getElementById('tobtmH1')
      tobtmH1.scrollIntoView(false)
    }
  </Skript> 
</body>

Die obige Methode besteht darin, den Ankerpunkt an den oberen oder unteren Rand der Ansicht zu verschieben. Sie hat nicht allzu viele Nachteile und wurde sowohl auf dem PC als auch auf Mobilgeräten getestet und hat sich als effektiv erwiesen.

Fortschrittliche Lösungen

Die erweiterte Methode besteht darin, das Plug-In der dritten Generation „better-scroll“ aufzurufen. Diese Methode wurde nicht persönlich getestet und die Daten enthalten nicht zu viele Fallstricke. Wenn Sie sie benötigen, fügen Sie sie selbst hinzu.

Oben sind die Details zu JavaScript, mit dem die Position der Bildlaufleiste ermittelt und die Seite zum Ankerpunkt verschoben wird. Weitere Informationen zum Verschieben der Bildlaufleiste zum Ankerpunkt in JavaScript finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Das Problem und die Lösung bei der Verwendung des Vue-Scroller-Seiteneingabefelds, das kein Gleiten auslöst
  • Vue implementiert Links- und Rechts-Links-Sliding-Seiten basierend auf Better-Scroll
  • Vue implementiert den Seitenwechsel-Schiebeeffekt
  • So verwenden Sie Ihre Finger zum Gleiten zwischen Vue-Routingseiten
  • Implementierung des Links- und Rechtsschiebeeffekts beim Seitenwechsel basierend auf Vue
  • JavaScript+html zur Implementierung der Sliding-Verifizierung auf Front-End-Seiten (2)
  • JavaScript + HTML zur Implementierung der Sliding-Verifizierung für Front-End-Seiten
  • js, um ein Gleiten zum unteren Seitenende zu erreichen und automatisch weitere Funktionen zu laden
  • js/jquery-Steuerseite dynamisches Laden von Daten gleitende Bildlaufleiste automatische Ladeereignismethode
  • Vue/js realisiert den Effekt des automatischen Seiten-Hochschiebens

<<:  Eine umfassende Zusammenfassung häufig verwendeter Anweisungen in MySQL (unbedingt lesen)

>>:  6 Lösungen für Netzwerkfehler im Docker-Container

Artikel empfehlen

So verwenden Sie Axios, um Netzwerkanforderungen in React Native zu stellen

In der Front-End-Entwicklung gibt es viele Möglic...

Detaillierte Erläuterung der grundlegenden Docker-Netzwerkkonfiguration

Externer Zugriff Ports nach dem Zufallsprinzip zu...

So zeigen Sie die IP-Adresse des Docker-Containers an

Ich dachte immer, Docker hätte keine IP-Adresse. ...

Einführung in Spark und Vergleich mit Hadoop

Inhaltsverzeichnis 1. Spark vs. Hadoop 1.1 Nachte...

Beispielcode für Django+Vue-Registrierung und -Anmeldung

registrieren Das Front-End verwendet Axios in Vue...

Lösung für das Problem der Zeilenhöhe der Elementtabellenkopfzeile

Inhaltsverzeichnis Vorwort 1. Ursache des Problem...

So verwenden Sie IDEA zum Konfigurieren von Tomcat und Erstellen von JSP-Dateien

Bevor Sie idea zum Schreiben von JSP-Dateien verw...

Detaillierte Erläuterung der Verwaltung und Verwendung von Docker Secrets

1. Was ist Docker Secret 1. Szenariodarstellung W...

Klassischer Beispielcode für JavaScript-Funktionsaufrufe

Inhaltsverzeichnis Klassisches Beispiel für einen...

Implementieren einer verteilten Sperre mit MySQL

einführen In einem verteilten System ist die vert...