2013-06-13 23 views
5

Mam .gif odtwarzającą animację raz. To nie działa w pętli i nie chcę, żeby się zapętlał.html css Animacja Gif

Mam 2 obrazów, png ("1" i "1"), animowany gif

chcę, że za każdym razem, gdy wskaźnik myszy znajduje się nad obrazem png, gif sztuk.

Mój problem polega na tym, że kiedy ustawiam pozycję myszy nad obrazem png, gif zagra raz i się zatrzyma. Kiedy odsuwam mysz, a następnie przesuję ją z powrotem nad obrazem, nie jest ona już odtwarzana.

Moi kody CSS:

#icon{ 
float: left; 
width:50px; 
height:50px; 
background: url("images/smal_icon.png") no-repeat scroll 0% 0% transparent; 
} 
#icon:hover{ 
float: left; 
width:50px; 
height:50px; 
background: url("images/smal_icon.gif") no-repeat scroll 0% 0% transparent; 
} 

#icon jest div

+0

Bo to zestaw do gry tylko raz, co prawdopodobnie chcesz zrobić, to dołączyć coś do końca '.gif' po najechaniu na png, więc' .gif? RND = 12334', to zapewni, że 'gif' jest ponownie pobierany i będzie ponownie animowany. –

+0

@NickR możesz podać mi przykład z kodem, który mam (Edycja mojego postu i umieszczenie kodów) – LeSam

+0

użyć wbudowanych GIF-ów, aby zrobić natychmiastową animację i nie pobrać ponownie. –

Odpowiedz

4

Domyślnie nie można kontrolować pętli lub animacji GIF. Przeglądarka po prostu odtwarza GIF w obecnej formie.

Domyślnie niemożliwe jest określenie, kiedy GIF powinien grać.

Dostępne są trzy rozwiązania:
1. Użytkownik zastąpił src pliku img wartością data:image, tak aby wstawić GIF. Za każdym razem, gdy src się zmieni, GIF zostanie odtworzony ponownie. Używając wbudowanego GIF zamiast prawdziwego adresu URL, nie ma ponownego pobrania GIF-a, co oszczędza czas. Zobacz: http://www.websiteoptimization.com/speed/tweak/inline-images/ na przykład
2. Podobnie jak w komentarzach i innych odpowiedziach, możesz zastąpić src tagu img tym samym GIF, ale z załącznikiem do adresu URL (np.? SomeRandomNumber = 1345), aby ponownie załaduj GIF i zagraj ponownie. Minusem jest to, że GIF zostanie ponownie załadowany.
3. Używasz czegoś podobnego do http://slbkbs.org/jsgif/, aby pobrać GIF przez AJAX, a następnie narysujesz go za pomocą elementu canvas i masz nad nim pełną kontrolę ...

0

Pętla jest właściwością samego GIF. Najlepszym sposobem na zrobienie tego byłoby zmodyfikowanie GIF-a, aby animacja mogła się bez końca pętać. Większość edytorów graficznych akceptujących animacje GIF ma opcję "Loop", która może być ustawiona na true.

W przeciwnym razie można to zrobić w sposób hacky za pomocą JavaScriptu, ponownie ładując obraz lub ponownie uruchamiając wskaźnik po pewnym czasie (patrz window.setInterval).

+1

Powiedziałem, że nie chcę, żeby pętle gifa. Chcę, gdy Myszą jest nad png, Moje gify Odtwarzają raz. Tylko raz. Ale robi to tylko 1 raz, a kiedy ponownie włożyłem mysz, już nie gram – LeSam

+0

@ user2372006 w takim przypadku musisz użyć JavaScript, aby wykryć zdarzenie "mouseover" i ustawić "styl" tła tego elementu , następnie wykryj zdarzenie 'mouseout' i przywróć domyślny styl. Czy w ogóle korzystasz z jQuery? –

1

Musisz wziąć obraz z CSS dla tej pracy i używać img src=

ale można zmodyfikować to:

// hack for not caching .gifs in ff/chrome etc. 
$("img").each(function() { 
    var src = $(this).attr("src"); 
    if(/\.gif$/i.test(src)) { 
     $(this).attr("src", src.replace(/\.gif$/, ".gif?rnd=" + Math.floor(Math.random() * 100) + 1)); 
    } 
}); 

Co to jest

  • pętle ze wszystkich obrazów na stronie
  • sprawdza, czy jest .gif zmienia
  • rozszerzenie, aby dodać losową liczbę na pl.

Możesz zamienić go w funkcję i usunąć fragmenty, których nie potrzebujesz, tak aby za każdym razem, gdy wskazywałeś kursor nad png - ponownie zażąda on obrazu .gif, ponieważ miałby on inny numer dołączony do końca.

+0

Powinieneś użyć 'attr()' zamiast 'prop()' dla 'src'. 'prop()' jest używane dla wartości logicznych. –

+0

Woops, głupi mnie, naprawiony. –

+0

Dziękuję, mam nadzieję, że to zadziała, ustawiłem go jako "rozwiązany", ale na razie nie mogę go wypróbować ... Dziękuję i tak – LeSam