gpt4 book ai didi

javascript - 第三部分不在屏幕上

转载 作者:行者123 更新时间:2023-12-02 14:08:33 24 4
gpt4 key购买 nike

我对下面的代码有疑问。窗口不会滚动到第三部分。代码从第二张幻灯片跳到第四张幻灯片。在我的控制台日志中,数据正确为 600、1200、1800 和 2400。我尝试了不同的方法,但错误仍然存​​在。

<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>

最佳答案

这些幻灯片都是兄弟幻灯片。因此每张幻灯片上的 offsetTop 都会逐渐变大。幻灯片 1,600 像素,幻灯片 2,1200 像素,依此类推。 window.scrollBy 滚动到窗口当前位置+给定的数量。因此,如果您处于 window.scrollY = 0,并通过 600,您将处于 window.scrollY = 600。当您在下一轮中通过 1200 时,您将处于 window.scrollY = 1800!现在看来您好像跳过了幻灯片 3,因为您滚动了幻灯片高度的 2 倍。

如果您不想面临解决其余问题的挑战,可能的答案是:

如果您的幻灯片有硬编码的高度,您也可以尝试传递硬编码的scrollBy 值。或者,如果您想让代码更加灵活,您可以查询每个 slider 的高度并传递该值。然后,您可以在 css-land 中调整幻灯片的高度,而不会破坏 js 逻辑。

关于javascript - 第三部分不在屏幕上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39840793/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com