TL;DR,这是一个有效的 js 代码:
window.addEventListener("scroll", scrollnav);
function scrollnav() {
var y = window.scrollY;
if (y > 1) {
document.getElementById("navbar").style.backgroundColor = "blue";
} else {
document.getElementById("navbar").style.backgroundColor = "unset";
}
}
现在让我们深入了解一些教育细节:
简单地说,你的 JS 函数没有运行。您可以通过在方法中使用console.log 来确认并观察控制台。
首先,虽然和你的问题无关,没有scroll属性,但是有onscroll属性。
即使您使用onscroll,也不会发生任何变化。因为当您滚动页面时,您不会滚动 #navbar 元素,而是滚动整个 window,因此您可以从元素中删除方法调用并在 JS 文件中添加正确的事件侦听器:
window.addEventListener('scroll', scrollnav)
确认函数运行后,您的控制台中将显示更有意义的错误消息。
要获得最高位置,document.body.scrollTop() 不是函数,因此您不能调用它。我建议您使用window.scrollY 以获得最佳效果。
最后但同样重要的是,CSS background-color 属性没有none 的值,请改用unset 或initial。
注意事项:
- 即使在函数定义前添加
window.addEventListener,它仍然可以工作,因为hoisting
- 监听窗口滚动事件是一个代价高昂的操作,你应该根据应用考虑节流或谴责,但这不在问题范围内