Ich habe ein Problem mit dem Code unten. Das Fenster scrollt nicht zum dritten Abschnitt. Der Code springt von Folie zwei auf Folie vier. In meinem Konsolenprotokoll sind die Daten korrekt 600, 1200, 1800 und 2400. Ich habe verschiedene Dinge ausprobiert, aber der Fehler ist immer noch da.Dritter Abschnitt nicht auf dem Bildschirm
<html>
<head>
<style>
body, html{margin:0;}
.slide{height: 600px;}
button{position:fixed; top:0; left:50%; margin-left:-32px;}
</style>
</head>
<body>
<div class="container">
<div class="slide onscreen" style="background-color:#FFC000;"></div>
<div class="slide" style="background-color:#FF4800;"></div>
<div class="slide" style="background-color:#FFC480;"></div>
<div class="slide" style="background-color:#AA4560;"></div>
<div class="slide" style="background-color:#000000;"></div>
</div>
<button onclick="next()">volgende</button>
<script>
var section = document.getElementsByClassName("onscreen");
function next() {
if (section[0].nextElementSibling) {
section[0].nextElementSibling.className = "slide onscreen";
section[0].className = "slide";
var newTop = section[0].offsetTop;
window.scrollBy(0, newTop);
console.log(newTop);
}
}
</script>
</body>
</html>
Ah ok, ich wusste nicht, dass er den Wert summiert. Ich änderte die Funktion zu "window.scrollTo()" jetzt funktioniert es :) – Joppieb
Joppieb summierte den Wert nicht. Jede Folie befand sich weiter unten im Fenster, was zu größeren offsetTop-Werten führte. Auch wenn window.scrollTo eine gute Lösung ist =). –