我根据 YouTube 的一些想法制作了这个水平滚动页面,一切正常,逻辑也很好,但是 x 的翻译有问题,有时它翻译的 X 太多或有时低于应有的水平,有必须对 translateThisMuch const 进行更改,但我想不出任何事情,任何帮助将不胜感激。这是代码的链接https://codepen.io/AbramPlus/pen/RwwoPrW 请注意,当它从滚动部分的不同部分转到其他部分时,视口中仍然有一些其他部分。这是JS代码。
const spacer = document.querySelector(".spacer");
const spacerSecond = document.querySelector(".spacerSecond");
const wrapper = document.querySelector(".wrapper");
const windowEffect = document.querySelector(".windowEffect");
const horizontalScrollEnabler = () => {
const scrollFromTop = window.scrollY;
const translateThisMuch = scrollFromTop - spacer.offsetTop;
const spacerHeight = window.innerWidth * 4 ;
const spacerSecondHeight = spacerSecond.offsetHeight;
if (scrollFromTop > spacer.offsetTop && scrollFromTop < spacerSecond.offsetTop && scrollFromTop + window.innerHeight < spacerSecond.offsetTop + spacerSecond.offsetHeight) {
windowEffect.style.position = "fixed";
wrapper.style.transform = `translateX(-${translateThisMuch}px)`;
windowEffect.style.top = "0";
}
if (scrollFromTop < spacer.offsetTop) {
windowEffect.style.position = "absolute";
windowEffect.style.top = "0";
}
if (scrollFromTop > spacer.offsetTop + spacerHeight) {
windowEffect.style.position = "absolute";
windowEffect.style.top = `${window.innerWidth * 4}px`;
}
requestAnimationFrame(horizontalScrollEnabler);
};
document.addEventListener("DOMContentLoaded", horizontalScrollEnabler);
梵蒂冈之花
相关分类