HTML
<section id="imag" class = "paral-1 image-contain">
</section>
JAVAScript
var g = 0;
//var myImage = document.getElementById("imag");
window.addEventListener('scroll', pageScrolled);
function pageScrolled() {
g = g + 10;
document.getElementById("imag").style.top = -g+"px" ;
}
- 首先,该函数应在滚动时调用,但在页面加载时调用它。
- 其次,当我滚动时,函数应该用 10 更新变量"g",但它会增加 100。这是什么奇怪的珠子。您可以打开控制台并检查。这是小提琴 - https://jsfiddle.net/LuLt0mh0/
- 仅当文档在加载时滚动时(
例如,由于锚点,或者如果页面已经滚动,则在重新加载时(才会发生这种情况
对于每个发出的
scroll
事件,g
增加10
。 但这是一个在滚动时多次触发的持续事件。向
pageScrolled
添加console.log(g)
将显示它增加了10
倍数:jsfiddle.net/LuLt0mh0/1参见 MDN滚动查看更多详细信息:
[...]由于滚动事件可以以高速率触发,因此事件处理程序 不应该执行计算成本高昂的操作,例如 DOM 修改。[...]
以下行有 2 个问题:
document.getElementById("imag").style.top = -g + "px";
每次滚动事件发生时,该行都会执行 - 结果
#imag
top
减少 x10px。当然,之所以什么都没有发生,是因为...#imag
没有分配position
属性。为了使属性top
工作,如果元素具有position: relative, absolute, or fixed.
但是,即使您确实更正了此问题,该行代码也会使您的#imag
离开视口,再也不会被看到,并将继续向北移动,直到您刷新页面。