Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Space Gallery
Forum PHP.pl > Forum > Przedszkole
starter91php
Witam, mam pewien problem ze skryptem galerii Space Gallery. Chodzi o to, że jeśli w moim pliku index.php mam odpalone kilka instancji tego skryptu. I wszystko jest okej, dopóki każda z tych instancji pracuje na tej samej liczbie zdjęć.
W przypadku, gdy np jeden slider będzie operował na 3 zdjęciach, a kolejny na 2 - to poprawnie działały będa tylko slidery z liczbą zdjęć, z jaką został załadowany ostatni slider (w tym wypadku 2). Przykład działania na: http://www.eyecon.ro/spacegallery/#about

Mój plik layout.js
(W folderze images są dwa zdjęcia, w images2 są trzy zdjęcia)

[JAVASCRIPT] pobierz, plaintext
  1. (function($){
  2. var initLayout = function() {
  3. var hash = window.location.hash.replace('#', '');
  4. $('.spacegallery').spacegallery({loadingClass: 'loading'});
  5. };
  6.  
  7. EYE.register(initLayout, 'init');
  8. })(jQuery)
[JAVASCRIPT] pobierz, plaintext



Takim sposobem poprawnie inicjalizują sie animacje tylko dla liczby zdjęć z ostatniej galerii (jak już wspomniałem). Z drugiej jednak strony, jesli custom.css zmienię z:
  1. #myGallery {
  2. width: 100%;
  3. height: 300px;
  4. }
  5. #myGallery img {
  6. border: 2px solid #52697E;
  7. }
  8. a.loading {
  9. background: #fff url(../images/ajax_small.gif) no-repeat center;
  10. }



na:

  1. #myGallery {
  2. width: 100%;
  3. height: 300px;
  4. }
  5. #myGallery img {
  6. border: 2px solid #52697E;
  7. }
  8. a.loading {
  9. background: #fff url(../images/ajax_small.gif) no-repeat center;
  10. }
  11.  
  12. #myGallery1 {
  13. width: 100%;
  14. height: 300px;
  15. }
  16. #myGallery1 img {
  17. border: 2px solid #52697E;
  18. }
  19. a.loading {
  20. background: #fff url(../images/ajax_small.gif) no-repeat center;
  21. }
  22.  
  23.  
  24. #myGallery2 {
  25. width: 100%;
  26. height: 300px;
  27. }
  28. #myGallery2 img {
  29. border: 2px solid #52697E;
  30. }
  31. a.loading {
  32. background: #fff url(../images/ajax_small.gif) no-repeat center;
  33. }


a layout.js w ten sposób:

[JAVASCRIPT] pobierz, plaintext
  1. (function($){
  2. var initLayout = function() {
  3. var hash = window.location.hash.replace('#', '')
  4.  
  5. $('#myGallery').spacegallery({loadingClass: 'loading'});
  6. $('#myGallery1').spacegallery({loadingClass: 'loading'});
  7. $('#myGallery2').spacegallery({loadingClass: 'loading'});
  8.  
  9.  
  10. EYE.register(initLayout, 'init');
  11. })(jQuery)
[JAVASCRIPT] pobierz, plaintext


To wtedy wszystkie trzy wyświetlą się poprawnie, jednak wtedy już czwarta w żadnej konfiguracji nie działa. Nie uśmiecha mi się tworzenie nowego ID w pliku .css dla każdej galerii (nie wiem, ile ich będę w danym momencie wyświetlał) , a jednak chciałbym, żeby działały one poprawnie dla wszystkich konfiguracji zdjęciowych.



Spora zmiana tematu. Bump!
Kostek.88
Musisz zrobić nieco na odwrót, tzn. nadać jedną klasę dla wszystkich DIV-ów i ustalić jeden kod CSS. Przykład:
  1. .myGallery {
  2. width: 100%;
  3. height: 300px;
  4. }
  5.  
  6. .myGallery img {
  7. border: 2px solid #52697E;
  8. }
  9.  
  10. a.loading {
  11. background: #fff url(../images/ajax_small.gif) no-repeat center;
  12. }


Następnie nadać różne ID dla galerii i oczywiście nie przejmować się CSS-em, bo wyżej ustaliliśmy, że wszystkie obiekty z klasą "myGallery" mają ten sam styl. Klasy mogą się powtarzać.
  1. <div id="gallery1" class="myGallery"></div>
  2. <div id="gallery2" class="myGallery"></div>
  3. <div id="gallery3" class="myGallery"></div>
  4. <div id="gallery4" class="myGallery"></div>


A teraz java script:
[JAVASCRIPT] pobierz, plaintext
  1. (function($){
  2. var initLayout = function() {
  3. var hash = window.location.hash.replace('#', '');
  4.  
  5. $('#gallery1').spacegallery({loadingClass: 'loading'});
  6. $('#gallery2').spacegallery({loadingClass: 'loading'});
  7. $('#gallery3').spacegallery({loadingClass: 'loading'});
  8. $('#gallery4').spacegallery({loadingClass: 'loading'});
  9.  
  10. EYE.register(initLayout, 'init');
  11. })(jQuery)
[JAVASCRIPT] pobierz, plaintext
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.