Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Problem z animacjami
Forum PHP.pl > Forum > Przedszkole
Rabat13
Witam Serdecznie,

podzieliłem stronę na dwie części (2x width: 50%), w których znajdują się po jednej poziomej belce (wyśrodkowane względem wysokości), o określonej wysokości (height: 150px) + div z tekstem.

Planuję zrobić taką animację, że po najechaniu na którąś z belek, ta przyjmuje większą szerokość razem z połową strony (dodawana jest jakaś wartość do niej, a od przeciwnej odejmowana - iluzja przesunięcia) i zwiększa się wysokość belki (o jakąś określoną wartość), znika div z tekstem i pojawiają się inne divy (akurat 5 boxy/divy tematyczne).

Ogólnie wszystko działa, tylko problem pojawia się, gdy zaczniemy szybko jeździć po belce, ta zaczyna wariować. Nie mam pomysłu, jak to sensownie poukładać... Obecnie animuje animowaną belkę i wariuje... Poniżej kod:

  1. $(function(){
  2. $(".nav-right").hover(function(){
  3. $(".title-right").hide();
  4. $(".right").animate({width: '+=200px' }, {queue:true,duration:500});
  5. $(".left").animate({width: '-=200px'}, {queue:true,duration:500});
  6. $(".nav-right").animate({height: '+=140px', top: '42%'}, {queue:true,duration:500});
  7. $(".item-right").css({visibility: "visible",display: "none"}).fadeIn(500);
  8. return false;
  9. },function(){
  10. $(".title-right").css({visibility: "visible",display: "none"}).fadeIn(1200);
  11. $(".right").animate({width: '-=200px'}, {queue:true,duration:500});
  12. $(".left").animate({width: '+=200px'}, {queue:true,duration:500});
  13. $(".nav-right").animate({height: '-=140px', top: '50%'}, {queue:true,duration:500});
  14. $(".item-right").hide();
  15. });
  16. });
  17. $(function(){
  18. $(".nav-left").hover(function(){
  19. $(".title-left").hide();
  20. $(".left").animate({width: '+=200px'}, {queue:true,duration:500});
  21. $(".right").animate({width: '-=200px'}, {queue:true,duration:500});
  22. $(".nav-left").animate({height: '+=140px', top: '42%'}, {queue:true,duration:500});
  23. $(".item-left").css({visibility: "visible",display: "none"}).fadeIn(500);
  24. return false;
  25. },function(){
  26. $(".title-left").css({visibility: "visible",display: "none"}).fadeIn(1200);
  27. $(".left").animate({width: '-=200px'}, {queue:true,duration:500});
  28. $(".right").animate({width: '+=200px'}, {queue:true,duration:500});
  29. $(".nav-left").animate({height: '-=140px', top: '50%'}, {queue:true,duration:500});
  30. $(".item-left").hide();
  31. });
  32. });


Legenda
.left/.right to lewa i prawa strona (width:50%)
.nav-left/right to belka
.item-left/right to zawartość, która ma się pojawić po najechaniu
.title-left/right to div z tekstem

Próbowałem to też zrobić na zasadzie complete w animacji, ale efekt ten sam, czyli animacja wariuje.

Prosiłbym o wskazówki w edycji kody. Chciałbym, aby animacja cała się wykonywała, czyli ktoś najeżdża - animuje do pokazania boxów, ktoś zjeżdża kursorem - animuje powrót do normalnego wyglądu. Żeby nie było możliwości animacji podczas animacji.

Dziękuję!
lobopol
Prze wykonaniem animacji powinieneś zatrzymać starą http://api.jquery.com/stop/
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.