与滚动相关的背景位置仅运行一次

问题描述 投票:0回答:1

我试图将背景位置动画绑定到鼠标滚动,但它只在向上或向下滚动时执行一次,而我希望背景位置在向两个方向滚动时继续变化。我怎样才能实现这个目标?现在它只检测到“第一个”滚动然后停止。

const el = document.querySelector("#module");

el.addEventListener("wheel", (e) => {
  e.preventDefault();
  el.style.backgroundPositionY = +e.deltaY + "px";
}, { passive: false });

已经尝试过笔中的内容:https://codepen.io/then00bcoder/pen/vYvQjgX

javascript css animation scroll background-position
1个回答
0
投票

您需要将

e.deltaY
的值添加到现有值,而不是仅仅覆盖它:

const el = document.querySelector("#module");

el.addEventListener("wheel", (e) => {
  e.preventDefault();
  let bgPosY = 0;
  if (el.style.backgroundPositionY) bgPosY = parseInt(el.style.backgroundPositionY);
  el.style.backgroundPositionY = bgPosY + e.deltaY + "px";
}, { passive: false });
© www.soinside.com 2019 - 2024. All rights reserved.