Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][JavaScript]Płynne przejście zdjęć
Forum PHP.pl > Forum > Przedszkole
Kloc
Siemanko, jak mogę uzyskać efekt płynnego przejścia pomiędzy obrazkami w galerii na stronie, bo po wgraniu na serwer ma efekt "przycinania" się?
Za zmianę odpowiada js, po wywołaniu funkcji onclick="change()".

  1. background = new Array();
  2. background[0] = 'obrazek.jpg';
  3. background[1] = 'obrazek2.jpg'';
  4. background[2] = 'obrazek3.jpg'';
  5. background[3] = 'obrazek4.jpg'';
  6.  
  7. function change() {
  8. val = document.getElementById('ksztalt6');
  9. value = val.getAttribute('data-value');
  10. if(value < background.length - 1){
  11. id = ++value
  12. document.getElementById("ksztalt6").setAttribute('data-value', id);
  13. }
  14.  
  15. else{
  16. document.getElementById("ksztalt6").setAttribute('data-value', 0);
  17. }
  18. }
  19.  
  20. function show() {
  21. val = document.getElementById('ksztalt6');
  22. id = val.getAttribute('data-value');
  23. document.getElementById("top").style.backgroundImage = 'url('+background[id]+')';
  24. document.getElementById("top").style.transition = 'background-image 2s 0s';
  25. }
PrinceOfPersia
możesz na początku dla każdego obrazka w background stworzyć nowy obiekt Image, cos takiego:

[JAVASCRIPT] pobierz, plaintext
  1. background.forEach(function(src) {
  2. var img = new Image;
  3. img.src = src;
  4. });
[JAVASCRIPT] pobierz, plaintext

to powinno ci załadować do cache przeglądarki dany obrazek, i tym sposobem szybciej będzie się ładował pozniej (ale zobacz, czy to jest o co ci chodzi)

edit:
tam dwa apostrofy masz niepotrzebnie:
[JAVASCRIPT] pobierz, plaintext
  1. background[3] = 'obrazek4.jpg''
[JAVASCRIPT] pobierz, plaintext

az dziwne, że ci to działa, bo powinien krzyknąć błąd składni
Kloc
Rozwiązałem to szybciej dodając opóźnienie w przejściu na 500ms. Mogłem sobie na to pozwolić bo to są backgroundy

  1. document.getElementById("top").style.transition = 'background-image 2s 500s';


Ale co innego z img. Jak można zrobić aby po kliknięciu img dostało opacity:0 i za chwilę przeskoczyło na 1 (przyciemniło się i za chwilę rozjaśniło) efekt na ok 2s
onclick wywołuje funkcję show()

  1.  
  2. function show(){
  3.  
  4. document.getElementById("img1").style.opacity = '0';
  5. document.getElementById("img1").src = img_gallery[id1];
  6. document.getElementById("img1").style.opacity = '1';
  7.  
  8. }


w stylach mam zagnieżdżone

  1. #img1{
  2. transition:opacity 2s 0s;
  3. }


Efekt jest taki, że po kliknięciu nic się nie dzieje, a gdy usunę

  1. document.getElementById("img1").style.opacity = '1';


to znika i już się nie pojawia
PrinceOfPersia
lepiej zrób w CSS klasy, a potem dodawaj/zeruj klasy:
  1. .klasa1 {
  2. .....
  3. }


[JAVASCRIPT] pobierz, plaintext
  1. element.className = "klasa1"
  2. ...
  3. element.className = "klasa2"
[JAVASCRIPT] pobierz, plaintext


Cytat
Ale co innego z img. Jak można zrobić aby po kliknięciu img dostało opacity:0 i za chwilę przeskoczyło na 1 (przyciemniło się i za chwilę rozjaśniło) efekt na ok 2s

możesz zamiast z tranzycji skorzystać z animacji CSS3 (google: animations CSS3), tam możesz ustawić ileś klatek kluczowych, zamiast tylko dwóch (jak przy transition)
Kloc
spróbuje z tym dodawaniem klas, a animacje już testowałem i wykonuje się ona tylko raz, a po ponownym kliknięciu już nie działa.

Z tymi klasami też coś nie działa :/ bo zawszę liczy się ostatnia dodana klasa.
Mógłby ktoś pokazać mniej więcej ja wykonać to przejście?

  1. function show(){
  2.  
  3. document.getElementById("img1").src = img_gallery[id1];
  4.  
  5. }


tu mam przykład- demo 6, ale nie potrafię go wdrożyć.
Musi to działać co kliknięcie i wywołanie funkcji, bez odświeżania strony.

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.