我根據 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);
如何修復我用 vanilla JavaScript 編寫的水平滾動腳本
慕標琳琳
2021-11-25 19:23:25