Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jquery] Jak zrobic petle, gdzie co jakis czas beda sie zmieniac divy z obrazkiem?
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
basu
Witam,
jak zrobic banner, gdzie divy z obrazkiem beda sie zmieniac w petli co jakis czas w efektem fadeOut(). Jak zapetlic taka animacje?
Chodzi o to ze przez powiedzmy 10s mam pokazany div=banner_right_1 z obrazkiem, pozniej po 10 sek wjezdza div=banner_right_2, po nast 10 sek div=banner_right_3 i spowrotem 1 i tak w kolko?

  1. <div id="banner_right">
  2. <div id="banner_right_1"></div>
  3. <div id="banner_right_2"></div>
  4. <div id="banner_right_3"></div>
  5. </div>
ShadowD
Jak w JS to zrobić to nie wiem ale tak na szybko i jak nie patrzysz na standardy tu daj ten baner w lokalnej ramce i w niej daj z html przekierowanie po 10sec na następny dokument a w nim na trzeci a w trzecim na pierwszy...

1bane.html
  1. <meta http-equiv="Refresh" content="10;url=2bane.html">


2bane.html
  1. <meta http-equiv="Refresh" content="10;url=3bane.html">


3bane.html
  1. <meta http-equiv="Refresh" content="10;url=1bane.html">


Ps Wiem, że to nie jest mądre rozwiązanie ale jakieś jest. ;p
lord_t
ShadowD n/c blinksmiley.gif

basu
łap i analizuj:
  1. <script type="text/javascript">
  2. <!--
  3. $('document').ready(function(){
  4. pokaz(1,3);
  5. });
  6.  
  7. function pokaz(i,j){
  8. i=i%3+2;
  9. $("#banner_right_"+j).fadeOut();
  10. $("#banner_right_"+(i-1)).fadeIn();
  11. setTimeout("pokaz("+i+","+(i-1)+")",10000);
  12. }
  13. //-->
  14.  
  15. <style type="text/css">
  16. /* <![CDATA[ */
  17. #banner_right_1{
  18. background:#dda;
  19. width:400px;
  20. display:none;
  21. }
  22. #banner_right_2{
  23. background:#cfa;
  24. width:400px;
  25. display:none;
  26. }
  27. #banner_right_3{
  28. background:#aaa;
  29. width:400px;
  30. display:none;
  31. }
  32.  
  33. /* ]]> */
basu
To jest to! dzieki wielkie. smile.gif

Jest tylko 1 maly problem: obrazek 2 i 3 pokazuja sie przez chwile w tym samym momencie co rozwala mi przez sekunde caly ukad strony?
Dzieje sie to gdy div 3 ma fadeout a 2 fadein?

  1. #banner_right {
  2. background-color: #1b8cc8;
  3. background-image: url(gfx/home_banner_pic_1.jpg);
  4. background-repeat: no-repeat;
  5. width: 606px;
  6. height: 217px;
  7. float: left;
  8. }
  9.  
  10. #banner_right_1 {
  11. background-color: #1b8cc8;
  12. background-image: url(gfx/home_banner_pic_1.jpg);
  13. background-repeat: no-repeat;
  14. width: 606px;
  15. height: 217px;
  16. float: left;
  17. display: none;
  18. }
  19.  
  20. #banner_right_2 {
  21. background-image: url(gfx/home_banner_pic_2.jpg);
  22. background-repeat: no-repeat;
  23. width: 606px;
  24. height: 217px;
  25. display: none;
  26. }
  27.  
  28. #banner_right_3 {
  29. background-image: url(gfx/home_banner_pic_3.jpg);
  30. background-repeat: no-repeat;
  31. width: 606px;
  32. display: none;
  33. height: 217px;
  34. }



OK juz dziala - position: absolute smile.gif
lord_t
To może trzeba zamiast fade-ów zastosować przezroczystość (opacity). Masz 3 divy wszystkie w tym samym miejscu (position absolute?) i zmyślnie manewrujesz właśnie przezroczystością (może też z-indexem).

Możesz też obczaić show i hide. Wyszło ciekawie:)
  1. <script type="text/javascript">
  2. <!--
  3. $('document').ready(function(){
  4. pokaz(1,3);
  5. });
  6.  
  7. function pokaz(i,j){
  8. i=i%3+2;
  9. $("#banner_right_"+j).hide('slow');//alert('$("#banner_right_"'+(i-1)+').fadeIn()');
  10. $("#banner_right_"+(i-1)).show('slow');//',400);
  11. setTimeout("pokaz("+i+","+(i-1)+")",2000);
  12. }
  13. //-->
  14.  
  15. <style type="text/css">
  16. /* <![CDATA[ */
  17. #banner_right_1{
  18. background:#dda;
  19. width:400px;
  20. display:none;
  21. }
  22. #banner_right_2{
  23. background:#cfa;
  24. width:400px;
  25. display:none;
  26. }
  27. #banner_right_3{
  28. background:#aaa;
  29. width:400px;
  30. display:none;
  31. }
  32.  
  33. #banner_right{
  34. height:10;
  35. border:black solid 1px;
  36. }
  37. /* ]]> */
  38.  
  39.  
  40.  
  41. <div id="banner_right">
  42. <div id="banner_right_1">x</div>
  43. <div id="banner_right_2">x</div>
  44. <div id="banner_right_3">x</div>
  45. </div>
basu
zrobilem cos takiego i dziala super:

  1. <?php
  2. $('document').ready(function(){
  3. show(1,6);
  4. });
  5.  
  6. function show(i,j){
  7.  
  8. $("#div"+j).fadeOut();
  9. j=j+1; if( j>) j=1;
  10.  
  11. $("#div"+i).fadeIn();
  12. i=i+1; if( i>) i=1;
  13.  
  14. setTimeout("show("+i+","+j+")",4000);
  15. }
  16. ?>


Teraz potrzebuje dodac zdarzenie hover(). Tzn zdjecia sie zmieniaja, ale jak najade myszka na zdjecie, to sie zatrzyma. Wiem ze jest zdarzenie hover, ale za kazdym razem nie wychodzi tak jak powinno byc. Jakies sugestie?
lord_t
Łap basu:

-styl i js na których testowałem:
  1. <style type="text/css">
  2.  
  3. div{width:520px; height:70px;display:none;position:absolute}
  4. #div1{background: red;}
  5. #div2{background: blue;}
  6. #div3{background: gray;}
  7. #div4{background: yellow;}
  8. #div5{background: purple;}
  9. #div6{background: green;display:block;}
  10.  
  11. <script type="text/javascript" src="jquery-1.2.3.min.js"></script>
  12. <script type="text/javascript">
  13.  
  14. $('document').ready(function(){
  15. b=true;
  16. $('div').hover(function(){b=false;},function(){b=true;});
  17. show(1,6);
  18. });
  19.  
  20. function show(i,j){
  21.  
  22. if(b)
  23. {
  24. $("#div"+j).fadeOut();
  25. j=j+1; if( j>6 ) j=1;
  26.  
  27. $("#div"+i).fadeIn();
  28. i=i+1; if( i>6 ) i=1;
  29. }
  30.  
  31. setTimeout("show("+i+","+j+")",1000);
  32. }
  33.  

-divy na których testowałem
  1. <div id='div1'>11</div>
  2. <div id='div2'>22</div>
  3. <div id='div3'>33</div>
  4. <div id='div4'>44</div>
  5. <div id='div5'>55</div>
  6. <div id='div6'>66</div>
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.