Javascript 当我想在全局对象中使用一个或多个滚动动作时?

Javascript 当我想在全局对象中使用一个或多个滚动动作时?,javascript,object,scroll,Javascript,Object,Scroll,当我在滚动手势中接近页脚时,我希望粘性页眉关闭,还有一个函数为链接提供一个.active类 如以下示例所示,当我想在全局对象中使用多个滚动动作时 在性能和可用性方面,你认为我应该怎么做 const Obj = { // variables stickyNearOfferClose() { let scrollPos; const elHeader = document.querySelector("header"); const elOffer

当我在滚动手势中接近页脚时,我希望粘性页眉关闭,还有一个函数为链接提供一个.active

如以下示例所示,当我想在全局对象中使用多个滚动动作时

在性能和可用性方面,你认为我应该怎么做

const Obj = {
  // variables
  stickyNearOfferClose() {
    let scrollPos;
    const elHeader = document.querySelector("header");
    const elOffer = document.querySelector(".offer");
    const documentOffset = elOffer.offsetTop;

      let stickyClose = () => {
        elHeader.classList.toggle("sticky", window.scrollY);
          if (scrollPos >= documentOffset) {
            elHeader.classList.add("hide");
          } else {
            elHeader.classList.remove("hide");
          }
      };

    window.addEventListener("scroll", () => {
      scrollPos = window.scrollY;
      requestAnimationFrame(stickyClose);
    });
  },
  spyScrolling() {
    let scrollPos;
    const sections = document.querySelectorAll(".hero");

    let scrollActiveUrl = () => {
      for (let s in sections) {
        if (
          sections.hasOwnProperty(s) &&
          sections[s].offsetTop <= scrollPos + 150
        ) {
          const id = sections[s].id;
          document.querySelector(".active").classList.remove("active");
          document.querySelector(`a[href*=${id}]`).classList.add("active");
        }
      }
    };

    window.addEventListener("scroll", () => {
      scrollPos = document.documentElement.scrollTop || document.body.scrollTop;
      requestAnimationFrame(scrollActiveUrl);
    });
  }
  init(){
    this.stickyNearOfferClose();
    this.spyScrolling()
  }
};

const Obj={
//变数
粘滞物{
让我们来讨论一下;
const elHeader=document.querySelector(“header”);
const elOffer=document.querySelector(“.offer”);
const documentOffset=elOffer.offsetTop;
让stickyClose=()=>{
elHeader.classList.toggle(“sticky”,window.scrollY);
如果(滚动位置>=文档偏移量){
elHeader.classList.add(“hide”);
}否则{
elHeader.classList.remove(“hide”);
}
};
window.addEventListener(“滚动”,()=>{
scrollPos=window.scrollY;
requestAnimationFrame(stickyClose);
});
},
斯皮斯克罗林(){
让我们来讨论一下;
const sections=document.queryselectoral(“.hero”);
让scrollActiveUrl=()=>{
for(让我们分段){
如果(
第3节拥有自己的财产&&
第[s]节。偏移{
scrollPos=document.documentElement.scrollTop | | document.body.scrollTop;
requestAnimationFrame(scrollActiveUrl);
});
}
init(){
这个。粘滞物为圆形();
这是spyScrolling()
}
};