Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: menu reagujące na przewijanie strony
Forum PHP.pl > Forum > Po stronie przeglądarki
kwiecia
Mam stronę podzieloną na dwie kolumny (div-y). W lewej znajduje się menu wypozycjonowane na fixed, w prawej cała treść strony podzielona na pewne partie. Menu działa na zasadzie odsyłaczy do konkretnego miejsca w treści prawej kolumny. Czyli to taka typowa "single-page website".

I tutaj moje pytanie. Jak sprawić, żeby po ręcznym zjechaniu scrollem do danego miejsca w prawej kolumnie, odpowiednia pozycja menu zyskiwała klasę "active". Tak żeby menu pokazywało, która część treści jest aktualnie pokazywana.

Z góry dziękuję za wszelkie rady i wskazówki. Pozdrawiam
melkorm
jQuery#Appear
kwiecia
Dziękuję bardzo smile.gif

Napotkałam jednak na pewien niezrozumiały dla mnie problem. Kiedy wybieram coraz niższe pozycje z menu, to wszystko działa ok i klasa 'active' usuwa i dodaje się tak jak powinna. Ale gdy jestem na pozycji niższej i próbuję jechać w górę, nic się nie dzieje. Klasa 'active' zostaje na stałe przy najniższej pozycji menu która była odsłonięta. Poniżej kod a tutaj LINK DO STRONY.

  1.  
  2. <ul id="menu">
  3. <li><a href="#ludzie" id="ludzieli">ludzie</a></li>
  4. <li><a href="#miejsca"id="miejscali">miejsca</a></li>
  5. <li><a href="#przedmioty"id="przedmiotyli">przedmioty</a></li>
  6. <li><a href="#wydarzenia"id="wydarzeniali">wydarzenia</a></li>
  7. <li><a href="#omnie" id="omnieli">o mnie</a></li>
  8. <li><a href="#kontakt"id="kontaktli">kontakt</a></li>
  9. </ul>


[JAVASCRIPT] pobierz, plaintext
  1. $('#wydarzeniadiv').appear(function() {
  2. $('#menu li a').removeClass('active');
  3. $('#wydarzeniali').addClass('active');
  4. });
  5.  
  6. $('#ludziediv').appear(function() {
  7. $('#menu li a').removeClass('active');
  8. $('#ludzieli').addClass('active');
  9. });
  10.  
  11. // i tak dalej...
[JAVASCRIPT] pobierz, plaintext

melkorm
Musisz przekazać w drugim parametrze obiekt z opcjami, czyli:

[JAVASCRIPT] pobierz, plaintext
  1. $('#ludziediv').appear(function() {
  2. $('#menu li a').removeClass('active');
  3. $('#ludzieli').addClass('active');
  4. }, {one : false}); // one to jest opcja default na true która mówi by appear odpalił się tylko raz ;)
[JAVASCRIPT] pobierz, plaintext



Ogólnie mogłabyś zrobić do tego jedną funkcję wink.gif

1. Nadać tym div'om co menu na nie reaguje jedną klasę i wtedy tylko:
[JAVASCRIPT] pobierz, plaintext
  1. $('.klasa').appear(
  2. function()
  3. {
  4. $('#menu a').removeClass('active');
  5. $('#menu a').get( $(this).index() ).addClass('active');
  6. },
  7. { one : false}
  8. );
[JAVASCRIPT] pobierz, plaintext


Nie testowałem + pisane z palca ;P
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.