Orlok: Scrollbar des Browsers in die ziehen

Beitrag lesen

ok, funktioniert. danke!

Gern geschehen. Aber ein Schritt fehlt noch, um den Viewport wie gewünscht zu zentrieren.

Die als Argumente an scrollTo oder scrollBy übergebenen Koordinaten beziehen sich auf die linke obere Ecke des Viewports. Das heißt, wenn du wie in deinem Beispiel einfach body.clientHeight durch Zwei teilst, dann ist nur der Bereich unterhalb des Äquators zu sehen.

   ________________________
  |                        |
  |                        |
  |          Body          |
  |                        |
  |                        |
  |                        |
 ||‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾||
 ||                        ||
 ||        Viewport        ||
 ||        ‾‾‾‾‾‾‾‾        ||
 ||                        ||
 ||________________________||


window.scrollTo(0, document.body.clientHeight / 2);

Aus diesem Grund hatte ich dich auch auf window.innerWidth und window.innerHeight aufmerksam gemacht, welche die Abmessungen des Viewports enthalten. Nimm von diesem Wert die Hälfte und ziehe es von dem ab, was du berechnet hast, um den Viewport im Zentrum zu positionieren.

   ________________________
  |                        |
  |          Body          |
  |________________________|
 ||                        ||
 ||                        ||
 ||        Viewport        ||
 ||        ‾‾‾‾‾‾‾‾        ||
 ||                        ||
 ||________________________||
  |                        |
  |          Body          |
  |________________________|


window.scrollTo(0, document.body.clientHeight / 2 - window.innerHeight / 2);

Im Übrigen würde ich empfehlen, statt scrollBy die Methode scrollTo zu verwenden. In deinem Fall funktionieren zwar beide Varianten, da du die Funktion direkt nach dem Laden der Seite auszuführen gedenkst, aber ich sehe keinen Grund, warum man den Erfolg der Operation davon abhängig machen sollte, dass die Seite zum Zeitpunkt der Ausführung nicht gescrollt ist.

Die an scrollTo übergebenen Werte beziehen sich auf den Ursprung des Koordinatensystems, die an scrollBy übergebenen Werte hingegen auf die Position des Viewports zum Zeitpunkt des Aufrufs.