Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript][jQuery] Problem z .hover po kliknięcu
emilgojny
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 21.07.2011

Ostrzeżenie: (0%)
-----


Witam wszystkich,

Mam problem z funkcją .hover odpowiedzialną za animowanie przycisku na stonie. Załącze najpierw kod jQuery:

[JAVASCRIPT] pobierz, plaintext
  1. $(document).ready(function(){
  2.  
  3. $('.button').hover(function(){
  4. setTimeout(function(){$('.button').css('backgroundPosition','-'+160+'px -'+0+'px');}, 40);
  5. setTimeout(function(){$('.button').css('backgroundPosition','-'+320+'px -'+0+'px');}, 80);
  6. setTimeout(function(){$('.button').css('backgroundPosition','-'+480+'px -'+0+'px');}, 120);
  7. setTimeout(function(){$('.button').css('backgroundPosition','-'+640+'px -'+0+'px');}, 160);
  8. },
  9. function(){
  10. setTimeout(function(){$('.button').css('backgroundPosition','-'+640+'px -'+0+'px');}, 40);
  11. setTimeout(function(){$('.button').css('backgroundPosition','-'+480+'px -'+0+'px');}, 80);
  12. setTimeout(function(){$('.button').css('backgroundPosition','-'+320+'px -'+0+'px');}, 120);
  13. setTimeout(function(){$('.button').css('backgroundPosition','-'+160+'px -'+0+'px');}, 160);
  14. setTimeout(function(){$('.button').css('backgroundPosition','-'+0+'px -'+0+'px');}, 200);
  15. });
[JAVASCRIPT] pobierz, plaintext


Jak widać, funkcja w prosty sposób animuje przycisk podczas .mouseenter a podczas .mouseleave wykonuje tę samą animację od końca (przycisk sie rozsuwa i zsuwa). Wszystko działa poprawnie dopuki nie kliknę na przycisk. Po kliknięciu zmienia się strona (przycisk zostaje w tym samym miejscu i ma te same właściwości) lecz przycisk bez animacji wraca do stanu spoczynku, a kiedy z niego "zjadę" włącza się animacja z .mouseleave (która jest tak jakby urwana bo powinna następować dopiero po zaanimowaniu .mouseenter). Chciałbym, żeby po kliknięciu przycisk nie wracał do stanu spoczynku tylko zostawał rozsunięty. Na wszelki wypadek załaczam także fragment html i css.

  1. <a href="index.html"><div class="button">O nas</div></a>


  1. .button {
  2. float: left;
  3. overflow: hidden;
  4. background: transparent url("../grafika/animacja.png") no-repeat;
  5. width: 125px;
  6. height: 34px;
  7. }


Z góry dzieki za pomoc!
Pozdrawiam

emilg
Powód edycji: [thek]: Na przyszłość używaj własciwego bbcode!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
askone
post
Post #2





Grupa: Zarejestrowani
Postów: 654
Pomógł: 121
Dołączył: 27.10.2007
Skąd: Poznań, Łódź

Ostrzeżenie: (0%)
-----


Istnieją 2 rozwiązania Twego problemu:

1. W skrypcie php wykrywasz, który element menu ma być aktywnym i dodajesz do niego odpowiednią definicję pozycji background w atrybucie style
2. Zapisujesz każdy krok animacji jako osobną klasę w pliku css. Wtedy w poszczególnych klatkach animacji nie modyfikujesz background-position tylko nadajesz odpowiednia klasę. Ponadto klasa, która będzie miała background-position: -640px, 0 przypisujesz do aktywnego elementu menu.

Mam nadzieję, iż nie namieszałem - jak będziesz miał problem ze zrozumieniem idei to postaram się wrzucić jakiś kod

Pozdrawiam
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 09:23