Jak utrzymac pozycję nawigacyji?

0

Mam dosc dluga nawigacje, ktora jest po lewej stronie ekranu i ma scrollbar. Ma dosc duzo elementow. Uzytkownik czase musi dosc sporo skrolowac, zeby znalezc tego czego szuka. Chce napisac JQuey skypt, ktory bedzie sam utrzymywal pozycje nawigacji. Zaleznie od tego w ktory link kliknie uzytkownik do tej pozycji bedzie automatycznie przekierowany. Niby prost sprawa.

Mniej wiecej cos takiego. Tylko co w momencie, gdy uzytkownik np skopiuje link i przesle go drugiemu uzytkownikowi? Albo odswiezy podstrone? Albo ucieknie na inna podstrone, gdzie nie ma tej nawigacji.

$('nav > li.active').scrollTo();

Moze ktos trafil na podoby problem? Albo moze zna jakas jQuery lib, zeby rozwiazac ten problem?

Na razie napisalem maly skrypt, ktory przechowuje pozycje w sessionStorage, ale wydaje mi sie to teraz totalnie bezsensu. User moze przeciez przeslac link do kogos innego i juz traci sessionStorage.

0

możesz użyć #id żeby scrollnąć do danego elementu na stronie przykładowo.

Masz na stronie np. <div id="2424242"></div>
Teraz jak dodasz do strony http://example.pl/index.html#2424242 to przeglądarka automatycznie przeskrolluje do elementu o id 2424242.

Dla przykładu na 4p.
Zwolnienia - wątek zbiorczy

Mógłbyś po scrollowaniu dodać do adresu url #id elementu jaki jest oglądany aktualnie.
Do tego mógłbyś dodać jakiś intersection observer i jak viewport przeglądarki najedzie na jakiś post to ustawia w pasku adresu dany #id, wtedy jak ktoś skopiuje to automatycznie przeniesie go tam gdzie ostatnio czytał.

A url adres możesz np. podmienić tak.
window.history.replaceState(null, null, "https://4programmers.net/Forum/Kariera/364478-zwolnienia_watek_zbiorczy#id1876109")
Oczywiście origin musi się zgadzać bo przeglądarka, nie pozwoli na to gdyż mógłbyś pokazać stronę banku i url zamienić na banku i wtedy użytkownik by myślał, że jest na właściwej stronie.

0

@.GodOfCode. Mozeliwe, ze w sumie robie cos bardzo podobnego. Tylko nie podaje ID do URL'`. Generalnie w nawigacji mam zawsze jeden aktywny element. Jest to podstrona w ktorej aktualnie znajduje sie uzytkownik. Myslalem o dodatniu hash URL czy ID tak jak Ty zrobiles, ale myslalem, ze jest to zbedne? Czy sie myle?

Na razie mam cos takiego, ale troche lipnie to dziala. Raz przewija mi nawigacje na sam srodek i link z nawigacji znajduje sie doslownie pod kursorem, tak jak klikna user. A czasem jest o np 100-250 px w gore albo w dol. Do tego mam tez kilka collapsable elements. Czyli mam kilka pogrupowanych linkow i sa schowane pod jakis label.

const nav = $('#left-side-nav'),
            activeNavItem = nav.find("li.active)");
  
if (activeNavItem.length) {
      var navOffset = nav.offset().top;
      var activeItemOffset = activeNavItem.offset().top;
      var scrollAmount = activeItemOffset - navOffset - nav.height() / 2;
      
      nav.animate({
          scrollTop: nav.scrollTop() + scrollAmount + totalHeight
      }, 0);
  }

W ogole jakos nie moge nic znalezc w Google na temat przewijania nawigacji. Nie wiem czy moze nie podejmuje sie jakiemus karkolomnemu wyzwaniu. A moze po prostu ta nawigacja zostala zle zaprojektowana. Jezeli jest taka dluga moze powinna byc na gorze. Nie wiem... Sam w sumie tez nie kojarze, zebym widzial takie przewijane nawigacje, ale jak sobie o tym pomysle to ma to sense. Nie wiem...

1 użytkowników online, w tym zalogowanych: 0, gości: 1