Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Do realizacji]Przypięta navigacja


Marchwj

Rekomendowane odpowiedzi

Opublikowano

Fajnie by było, jakby była opcja przypięcia navbara, aby przy scrollowaniu był ciągnie na górze strony (w starej wersji forum była taka opcja chyba)

Spoiler

raR1y5U.png

o tym mówię ;p

 

 

  • 2 tygodnie później...
Opublikowano

Nie jest jakoś dopracowane, ale działa :12_slight_smile:

Można sobie dodać do Greasemonkey lub odpowiedników z innych przeglądarek :10_wink:

Spoiler

window.addEventListener('scroll',function(){
  let elem = document.getElementById('elUserNav');
  if( (window.pageYOffset || document.documentElement.scrollTop)  - (document.documentElement.clientTop || 0) > elem.dataset.fromTop){
  	elem.toFixed();
  } else {
  	elem.toNormal();
  }
});

window.onload = function() {
  //
  let elem = document.getElementById('elUserNav');
  Object.assign(elem.style,{backgroundColor:'#15181e', zIndex:'10000', paddingLeft:'10px'});
  Object.assign(elem.dataset,{defaultPosition:elem.style.position, deafultLeft:(elem.style.left||''), defaultTop:(elem.top||'')});
  //
  elem.toFixed = function(){
    Object.assign(this.style,{position:'fixed',left:this.dataset.fromLeft+'px',top:'0'});
    return true;
  }
  //
  elem.toNormal = function(){
    Object.assign(this.style,{position:this.dataset.defaultPosition,left:this.dataset.deafultLeft,top:this.dataset.defaultTop});
    return false;
  }
  //
  elem.detectedResize = function(){
    let docEl = document.documentElement;
    let wasFixed = this.style.position=='fixed'?this.toNormal(this):false;
    //
    this.dataset.fromTop = (this.getBoundingClientRect().top + (window.pageYOffset || docEl.scrollTop || document.body.scrollTop) - (docEl.clientTop || document.body.clientTop || 0));
    this.dataset.fromLeft = (this.getBoundingClientRect().left + (window.pageXOffset || docEl.scrollLeft || document.body.scrollLeft) - (docEl.clientLeft || document.body.clientLeft || 0));
    //
    wasFixed?elem.toFixed(this):null;
  }
  //
  elem.detectedResize();
  window.addEventListener('resize', function(){elem.detectedResize();});
};

 

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...