Zmiana obrazków w jquery co kilk sekund z animacja

Zmiana obrazków w jquery co kilk sekund z animacja
G6
  • Rejestracja:około 12 lat
  • Ostatnio:ponad 9 lat
  • Postów:84
0

Mam kolumny w kazdej po 5 obrazków. Chce zrobic tak aby kazdy obrazek zmieniał się losowo co iles sekund i kazdy w innym czasie aby nie było non stop e wszystkie razem.
Kazdy obrazek jest inny oraz podmieniany także. Zrobiłem cos takiego

Kopiuj
setInterval(function(){$('#cf1').toggleClass('liveEventsActive', 1000)}, 4000);
	setInterval(function(){$('#cf2').toggleClass('liveEventsActive', 1000)}, 14000);
	setInterval(function(){$('#cf3').toggleClass('liveEventsActive', 1000)}, 12000);
	setInterval(function(){$('#cf4').toggleClass('liveEventsActive', 1000)}, 4500);
	setInterval(function(){$('#cf5').toggleClass('liveEventsActive', 1000)}, 14000);
	setInterval(function(){$('#cf6').toggleClass('liveEventsActive', 1000)}, 3000);
	setInterval(function(){$('#cf7').toggleClass('liveEventsActive', 1000)}, 4000);
	setInterval(function(){$('#cf8').toggleClass('liveEventsActive', 1000)}, 24000);
       setInterval(function(){$('#cf9').toggleClass('liveEventsActive', 1000)}, 2000);
       setInterval(function(){$('#cf10').toggleClass('liveEventsActive', 1000)}, 5000); 

w css takie coś

Kopiuj
#cf1 .two_img , #cf2 .two_img , #cf3 .two_img , #cf4 .two_img , #cf5 .two_img , #cf6 .two_img , #cf7 .two_img , #cf8 .two_img, #cf9 .two_img, #cf10 .two_img  {
	
	display: none;
}
#cf1 .one_img, #cf2 .one_img, #cf3 .one_img, #cf4 .one_img, #cf5 .one_img, #cf6 .one_img, #cf7 .one_img, #cf8 .one_img, #cf9 .one_img, #cf10 .one_img {
	
	display: block;
}
#cf1.liveEventsActive .two_img, #cf2.liveEventsActive .two_img, #cf3.liveEventsActive .two_img, 
#cf4.liveEventsActive .two_img, #cf5.liveEventsActive .two_img, #cf6.liveEventsActive .two_img, 
#cf7.liveEventsActive .two_img, #cf8.liveEventsActive .two_img, #cf9.liveEventsActive .two_img, 
#cf10.liveEventsActive .two_img  {
	
	display: block;
}
#cf1.liveEventsActive .one_img, #cf2.liveEventsActive .one_img, #cf3.liveEventsActive .one_img, #cf4.liveEventsActive .one_img, #cf5.liveEventsActive .one_img,
#cf6.liveEventsActive .one_img, #cf7.liveEventsActive .one_img, #cf8.liveEventsActive .one_img, #cf9.liveEventsActive .one_img, #cf10.liveEventsActive .one_img  {
	
	display: none;
}
 

Wszystko ok działa ale chce dorobić animacje przejscia i niestety nie da się ma ktos pomysł jak to zrobić?

edytowany 2x, ostatnio: dzek69
Zobacz pozostały 1 komentarz
hauleth
Nie stylizuj ID.
dzek69
Stylizowanie ID ma sens, ale nie w tym przypadku.
hauleth
Stylizowanie ID to zła praktyka. Zamiast tego lepiej nadać parę różnych klas do 1 elementu.
dzek69
To jakaś nowa dziwna szkoła ;)
hauleth
Nie nowa i czemu dziwna? Style mają być proste, semantyczne i reużywalne. Stylizowanie ID nie zapewnia ani 1 z tych punktów.
dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Rzeszów
2

A dlaczego nie gotowiec, tylko wynajdywanie koła od nowa, w dodatku w tak kiepski sposób (poczytaj o DRY w programowaniu - Twój kod poza cyferkami to w kółko to samo)?


G6
  • Rejestracja:około 12 lat
  • Ostatnio:ponad 9 lat
  • Postów:84
0

no wiem ze to nie jest ok ale taki mialem pomysl tylko na szybkiego ok zaraz sie biore za czytanie tego:)

dzek69
http://pl.wikipedia.org/wiki/DRY - ale to jest tylko offtop do Twojego problemu
G6
  • Rejestracja:około 12 lat
  • Ostatnio:ponad 9 lat
  • Postów:84
0

ok dzieki a miales na mysli gotowca tzn?

dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Rzeszów
1

W sumie to źle Cię zrozumiałem, nie znam gotowca na Twój problem :/
Ale na pewno: przygotuj sobie listę obrazków (linków). Potem nakładaj nowy element na stary, stary usuwaj. Pytanie jest takie: jaki rodzaj animacji w ogóle Cię interesuje?


Sebastiano
  • Rejestracja:ponad 12 lat
  • Ostatnio:prawie 4 lata
  • Postów:488
0

@gucio666 ten kod to "lekka" masakra. Proponuje Ci zainteresować się Bootstrapem, jest tam taki element jak karuzela. Można to fajnie skonfigurować i wtedy powinieneś uzyskać interesujący Cie efekt.

edytowany 1x, ostatnio: Sebastiano
G6
  • Rejestracja:około 12 lat
  • Ostatnio:ponad 9 lat
  • Postów:84
0

przenikanie. Potrzebuje najlepszy sposob na to. Carousela to nie to ona jest do tworzenia sliderów chyba nie zrozumiałeś mnie.

edytowany 1x, ostatnio: gucio666
mylk
  • Rejestracja:około 10 lat
  • Ostatnio:ponad 3 lata
  • Postów:37
0

Myślę że metody: FadeIn() i FadeOut() będą dla Ciebie najlepsze (chyba z biblioteki jquery).

E3
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 7 lat
  • Postów:11
1

Zgadzając się z przedmówcami, DRY ftw!

Przy większej ilości takich wywołań narażasz się na brzydki spadek wydajności, generalnie nie używaj setTimeout i setInterval, zamiast tego użyj requestAnimationFrame (dla starych przeglądarek np. ie9 są polyfille, np. https://gist.github.com/paulirish/1579671).

A jeszcze lepiej, jeśli masz możliwość, to zrób to w css3, nie będziesz obciążał strony tymi zegarami w javascript, w skrócie można to zrobić tak:

Kopiuj
@keyframes animateImg{
    0% {opacity: 0;}
    49.99% {opacity: 0;}
    50% {opacity:1;}
    99.9% {opacity:1;}
    100% {opacity:0;}
}
  • HTML: dodajesz to do swoich obrazków (np. dodaj im klasę .animateImg)
  • CSS: podpinasz animacje do obrazków:
    .animateImg{animation: animateImg linear infinite;}
  • JS: po wczytaniu danych elementów na stronie dopisujesz im inlinowo atrybut animation-duration, np w jQuery:
    $('.animateImg').each(function(){$(this).css({'animation-duration': Math.floor(1000 + Math.random() * 2000) + 's'})});

W przykładzie nie pisałem prefixów cssowych, może być też gdzieś literówka bo nie testowałem ;p

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.