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.