Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript][CSS][HTML]Prosta animacja galerii w jQuery, Prosta animacja galerii w jQuery
Moodey
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 15.02.2012

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


Witam,

Dopiero zaczynam zabawę programowaniem, a wybrałem na to JavaScript. Po zapoznaniu się z podstawowymi zasadami tworzenia czegokolwiek w tym języku chcę również poznać "gotowca" jakim jest framework jQuery. Jednakże dopadł mnie brak praktyki i po usiłowaniu stworzenia galerii na stronie opartej na identycznym kodzie html i css i sposobie animacji w JQ jednakże działających niezależnie względem siebie otrzymuje problem nie do przeskoczenia na moim poziomie. Próbowałem wprowadzać dodatkowe klasy pomocnicze w JS/JQ do już oklasowanych wcześniej elementów i mimo to nie chcą się dodać, próbowałem operować na położeniu obiektów w DOM ale i to odmówiło mi posłuszeństwa. Domyślam się, że zmiana klas strzałek to konieczność no ale tutaj właśnie jest moje zapytanie. Jak przerobić mój kod podany poniżej tak aby te galerie oparte były na tym samym kodzie animacji i hmtl ale pracowały niezależnie względem siebie? zależy mi na nie zmienianiu czystego html, a ewentualnej przeróbce tego kodu w JS/JQ.


  1.  
  2. <div class="gal-container">
  3. <div class="arow-left"></div>
  4. <div class="window">
  5. <ul class="gal">
  6. <li class="gal-item"><img src="images/empty.jpg" alt="" /></li>
  7. <li class="gal-item"><img src="images/empty.jpg" alt="" /></li>
  8. <li class="gal-item"><img src="images/empty.jpg" alt="" /></li>
  9. <li class="gal-item"><img src="images/empty.jpg" alt="" /></li>
  10. <li class="gal-item"><img src="images/empty.jpg" alt="" /></li>
  11. <li class="gal-item"><img src="images/empty.jpg" alt="" /></li>
  12. <li class="gal-item"><img src="images/empty.jpg" alt="" /></li>
  13. </ul>
  14. </div>
  15. <div class="arow-right"></div>
  16. </div>
  17.  
  18. <div class="gal-sep"></div>
  19.  
  20. <div class="gal-container">
  21. <div class="arow-left"></div>
  22. <div class="window">
  23. <ul class="gal">
  24. <li class="gal-item"><img src="images/empty.jpg" alt="" /></li>
  25. <li class="gal-item"><img src="images/empty.jpg" alt="" /></li>
  26. <li class="gal-item"><img src="images/empty.jpg" alt="" /></li>
  27. <li class="gal-item"><img src="images/empty.jpg" alt="" /></li>
  28. <li class="gal-item"><img src="images/empty.jpg" alt="" /></li>
  29. <li class="gal-item"><img src="images/empty.jpg" alt="" /></li>
  30. <li class="gal-item"><img src="images/empty.jpg" alt="" /></li>
  31. </ul>
  32. </div>
  33. <div class="arow-right"></div>
  34. </div>
  35.  



  1. div.gal-container {
  2. position: relative; margin: 0 auto;
  3. width: 948px; height: 236px;
  4. }
  5.  
  6. /* maskowanie lini zdjęć */
  7.  
  8. div.window {
  9. position: absolute; overflow: hidden;
  10. left: 48px;
  11. width: 850px; height: 236px;
  12. }
  13.  
  14. /* linia zdjęć */
  15.  
  16. ul.gal {
  17. position: absolute;
  18. height: 236px; width: 10000px;
  19. left: -40px; /* omijanie CSS3 na margin-left dla gal-item*/ /* przesuwanie */
  20. }
  21.  
  22. li.gal-item img {
  23. display: block;
  24. margin-left: 40px;
  25. float: left;
  26. }
  27.  
  28. div.arow-left {
  29. display: block; width: 38px; height: 236px;
  30. background: url(images/arrow-l.png) no-repeat;
  31. float: left;
  32. margin: 0; padding: 0;
  33. }
  34.  
  35. div.arow-right {
  36. display: block; width: 38px; height: 236px;
  37. background: url(images/arrow-r.png) no-repeat;
  38. float: right;
  39. margin: 0; padding: 0;
  40. }
  41.  
  42.  
  43. div.gal-sep {
  44. width: 1200px; height: 96px;
  45. background: url(images/gal-sep.jpg) no-repeat;
  46. clear: both;
  47. margin: 0 auto;
  48. }



[JAVASCRIPT] pobierz, plaintext
  1.  
  2. $(document).ready(function() {
  3.  
  4. var $galeria = $('.gal-container');
  5. var $liniaobrazkow = $('ul.gal');
  6. var $lewy = $('.arow-left');
  7. var $prawy = $('.arow-right');
  8.  
  9. var przesun = 0;
  10.  
  11.  
  12. $prawy.click(
  13. function(){
  14. if(przesun > -1800 ) {
  15.  
  16. przesun -=900;
  17. $liniaobrazkow.animate({
  18. left: -40 + przesun
  19. })
  20. }
  21. } );
  22.  
  23.  
  24. $lewy.click(
  25. function(){
  26. if (przesun<0) {
  27.  
  28. przesun +=900;
  29. $liniaobrazkow.animate({
  30. left: -40 + przesun
  31. })
  32. }
  33. } );
  34.  
  35.  
  36. });
  37.  
  38.  
[JAVASCRIPT] pobierz, plaintext



PS: Temat pewnie przewija się od czasów wynalezienia koła ale mój mózg już nie potrafi wymyślić odpowiedniego zapytania w opcji "szukaj". Przepraszam z góry i jeśli temat juz był byłbym wdzięczny za odsyłacz.


Pozdrawiam,
-Moodey

Ten post edytował Moodey 15.02.2012, 17:25:47
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
kamil4u
post
Post #2





Grupa: Zarejestrowani
Postów: 2 350
Pomógł: 512
Dołączył: 4.01.2009
Skąd: Wrocław / Świdnica

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


Zrób to tak:
- pobierz tylko <div class="gal-container"> do zmiennej
- jako, że jQuery robi i z tego tablicę( masz kilka elementów, które mają taką klasę ) to wertujesz po wszystkich ( each )
- teraz poznajesz magiczne słówko this, które zawsze w obrębie each wskazuje na aktualny element
- następnie przerabiasz cały swój kod:
a ) przyciski lewy, prawy itd. wyszukujesz właśnie w tym elemencie: czyli $( this ).pobierzDzieci( ',lewyPrzycisk')
B ) reszta kodu praktycznie bez zmian, a jak już to na tyle proste, że sobie poradzisz

Ten post edytował kamil4u 15.02.2012, 17:50:53
Go to the top of the page
+Quote Post
Moodey
post
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 15.02.2012

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


Cytat(kamil4u @ 15.02.2012, 17:50:42 ) *
Zrób to tak:
- pobierz tylko <div class="gal-container"> do zmiennej
- jako, że jQuery robi i z tego tablicę( masz kilka elementów, które mają taką klasę ) to wertujesz po wszystkich ( each )
- teraz poznajesz magiczne słówko this, które zawsze w obrębie each wskazuje na aktualny element
- następnie przerabiasz cały swój kod:
a ) przyciski lewy, prawy itd. wyszukujesz właśnie w tym elemencie: czyli $( this ).pobierzDzieci( ',lewyPrzycisk')
B ) reszta kodu praktycznie bez zmian, a jak już to na tyle proste, że sobie poradzisz



Dziękuje (IMG:style_emoticons/default/smile.gif) to na pewno mi pomoże (IMG:style_emoticons/default/wink.gif) ) wygląda prosto i logicznie i przede wszystkim sensownie (IMG:style_emoticons/default/smile.gif) )))) postaram się poinformować jak mi poszło jak rozwiąże problem (IMG:style_emoticons/default/smile.gif) )

EDIT:

Hmm... mam problem... bo o ile dobrze zrozumialem chodziło bym zrobił to tak:

[JAVASCRIPT] pobierz, plaintext
  1. $(document).ready(function() {
  2.  
  3. var $galeria = $('div.gal-container');
  4. //var $liniaobrazkow = $('ul.gal');
  5. //var $lewy = $('.arow-left');
  6. //var $prawy = $('.arow-right');
  7.  
  8.  
  9. $.each($galeria, function () {
  10.  
  11.  
  12. var $liniaobrazkow = $(this).children('.gal');
  13. var $lewy = $(this).children('.arow-left');
  14. var $prawy = $(this).children('.arow-right');
  15.  
  16.  
  17. var przesun = 0;
  18.  
  19. $prawy.click(
  20. function(){
  21. if(przesun > -1800 ) {
  22.  
  23. przesun -=900;
  24. $liniaobrazkow.animate({
  25. left: -40 + przesun
  26. })
  27. }
  28. } );
  29.  
  30.  
  31. $lewy.click(
  32. function(){
  33. if (przesun<0) {
  34.  
  35. przesun +=900;
  36. $liniaobrazkow.animate({
  37. left: -40 + przesun
  38. })
  39. }
  40. } );
  41.  
  42.  
  43. });
  44.  
  45.  
  46. });
[JAVASCRIPT] pobierz, plaintext


niby kod w przeglądarce nie wywala błędów, a mimo to nie działa...

co robię nie tak?

Ten post edytował Moodey 16.02.2012, 20:36:17
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: 7.10.2025 - 14:45