Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] jQuery - slider
Forum PHP.pl > Forum > Przedszkole
bahh
Mam 6 divów o klasach .s, .s2, .s3, .s4, .s5, .s6

Wszystkie są display:none;

1. Przy załadowaniu strony, .s, .s2 są na display:block oraz dodawana jest im klasa animated bounceInLeft.
2. Po 5 sekundach, zmienia się im klasę na animated bounceOutLeft a po 0,8 sekundy .s3, .s4 są na display:block oraz dodawana jest im klasa animated bounceInLeft.
3. Po 10 sekundach, zmienia się im klasę na animated bounceOutLeft a po 0,8 sekundy .s5, .s6 są na display:block oraz dodawana jest im klasa animated bounceInLeft.

Teraz powinna być pętla, cały czas wykonywane są te trzy punkty. Mój kod:

  1. window.onload = function() {
  2. var time = 3000;
  3. $('.s').css({'display':'block'});
  4. $('.s').addClass('animated bounceInLeft');
  5. setTimeout(function(){
  6. $('.s2').css({'display':'block'});
  7. $('.s2').addClass('animated bounceInLeft');
  8. }, 300);
  9.  
  10. setTimeout(function(){
  11. $('.s').addClass('animated bounceOutLeft');
  12. setTimeout(function(){
  13. $('.s2').addClass('animated bounceOutLeft');
  14. }, 300);
  15. setTimeout(function(){
  16. $('.s3').css({'display':'block'});
  17. $('.s3').removeClass('animated bounceOutLeft');
  18. $('.s3').addClass('animated bounceInLeft');
  19. setTimeout(function(){
  20. $('.s4').css({'display':'block'});
  21. $('.s4').removeClass('animated bounceOutLeft');
  22. $('.s4').addClass('animated bounceInLeft');
  23. }, 300);
  24. }, 800);
  25. }, time);
  26.  
  27. setTimeout(function(){
  28. $('.s3').addClass('animated bounceOutLeft');
  29. setTimeout(function(){
  30. $('.s4').addClass('animated bounceOutLeft');
  31. }, 300);
  32. setTimeout(function(){
  33. $('.s5').css({'display':'block'});
  34. $('.s5').removeClass('animated bounceOutLeft');
  35. $('.s5').addClass('animated bounceInLeft');
  36. setTimeout(function(){
  37. $('.s6').css({'display':'block'});
  38. $('.s6').removeClass('animated bounceOutLeft');
  39. $('.s6').addClass('animated bounceInLeft');
  40. }, 300);
  41. }, 800);
  42. }, 2*time);
  43.  
  44. setTimeout(function(){
  45. $('.s5').addClass('animated bounceOutLeft');
  46. setTimeout(function(){
  47. $('.s6').addClass('animated bounceOutLeft');
  48. }, 300);
  49. setTimeout(function(){
  50. $('.s').css({'display':'block'});
  51. $('.s').removeClass('animated bounceOutLeft');
  52. $('.s').addClass('animated bounceInLeft');
  53. setTimeout(function(){
  54. $('.s2').css({'display':'block'});
  55. $('.s2').removeClass('animated bounceOutLeft');
  56. $('.s2').addClass('animated bounceInLeft');
  57. }, 300);
  58. }, 800);
  59. }, 3*time);
  60. }


ale nie wiem jak ustawić powtarzanie się tego. Przy okazji, gdy wszystkie klasy dostaja addClass('animated bounceOutLeft'); musi być przed addClass('animated bounceInLeft'); zrobiony removeClass('animated bounceOutLeft'); żeby animacja zadziałała.
trueblue
Źle się do tego zabrałeś.
Jeśli będziesz mieć więcej slajdów, to będziesz dodawał dla nich kolejny fragment kodu?
Być może nie będzie więcej, co nie zmienia faktu, że powinieneś zrobić kod wywoływany wewnątrz setInterval, tam dwa slajdy chować, dwa kolejne wysuwać. Jeśli brak kolejnych dwóch slajdów, to resetujesz licznik i pobierasz dwa pierwsze.
bahh
jQuery to nowy temat dla mnie, dopiero się uczę na nim pisać kody. Będę wdzięczny za szerszą pomoc smile.gif
trueblue
Pokaż strukturę html tego slidera.
bahh
To wersja jeszcze nie uproszczona:

  1. <div style="font-size:56px; position:absolute; left:50%; margin-left:-498px; top:80px; text-transform:uppercase; letter-spacing: 0.05ex;" class="s"><span style="font-weight:900; padding-right:50px; color:#f1c40f;">aaa</div>
  2. <div style="font-size:32px; position:absolute; left:50%; margin-left:-498px; top:210px; text-transform:uppercase; color:#f1c40f;" class="s2">bbb</div>
  3. <div style="font-size:56px; position:absolute; left:50%; margin-left:-498px; top:80px; text-transform:uppercase; letter-spacing: 0.05ex;" class="s3"><span style="ccc</div>
  4. <div style="font-size:32px; position:absolute; left:50%; margin-left:-498px; top:210px; text-transform:uppercase; color:#f1c40f;" class="s4">ddd</div>
  5. <div style="font-size:56px; position:absolute; left:50%; margin-left:-498px; top:80px; text-transform:uppercase; letter-spacing: 0.05ex;" class="s5">eee</div>
  6. <div style="font-size:32px; position:absolute; left:50%; margin-left:-498px; top:210px; text-transform:uppercase; color:#f1c40f;" class="s6">fff</div>


Trzeba uwzględnić w sumie sprawdzenie czy przeglądarka obsługuje animations inaczej zastosować animacje zdefiniowane w jquery

Animacje są z tego:
http://daneden.github.io/animate.css/

Chyba, że ma ktoś gotowy kod do jQuery w miarę krótki (bez przycisków itp)
trueblue
http://jsfiddle.net/t708zzdj/1/
Musiałbyś pokombinować jak ustalić sytuację początkową - teraz wszystkie znikają z efektem animacji, i ewentualnie bawić się w przeróbkę tego w przypadku nieobsługiwania animacji CSS.
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.