Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> jquery hover i ładowanie obrazków
tomtheman
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 23.09.2011

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


Witam

Mam taki problem:
Mam listę nieuporządkowaną w html taką jak poniżej.



  1. <ul class="lista">
  2. <li class="pierwszy"><a href="#">Pierwszy link</a></li>
  3. <li class="drugi"><a href="#">Drugi link</a></li>
  4. <li class="trzeci"><a href="#">trzeci link</a></li>
  5. </ul>




W jquery napisałem kod, który ładuje obrazek (o nazwie "nazwa_klasy.svg") jako tło do każdego wiersza listy a potem poprzez najechanie myszką przełącza na drugi obrazek ("nazwa_klasy-hover.svg") czyli ten sam obrazek (ikonę) z innym kolorem wypełnienia.
Problem polega na tym, że przy każdym najechaniu myszką i każdym zjechaniu ładowany jest od nowa obrazek co po pierwsze nie wygląda dobrze bo pomiędzy jednym a drugim załadowaniem obrazka jest białe mignięcie a po drugie zżera niepotrzebnie transfer.

[JAVASCRIPT] pobierz, plaintext
  1. $(function(){
  2. $(".lista li").each(function() {
  3. var $this = $(this);
  4. $this.css({
  5. 'background-image': 'url(icons/' + $this.attr('class') + '.svg)',
  6. });
  7. });
  8.  
  9. $(".lista li").hover(function() {
  10. var $this = $(this);
  11. $this.css('background-image', 'url(icons/' + $this.attr('class') + '-hover.svg)');
  12. },
  13. function() {
  14. var $this = $(this);
  15. $this.css('background-image', 'url(icons/' + $this.attr('class') + '.svg)');
  16. });
  17.  
  18. });
[JAVASCRIPT] pobierz, plaintext


No i mam odpowiednie ostylowanie w css.

Najlepszym rozwiązaniem byłoby użycie w css'ie :hover {fill:red;} ale niestety nie działa to do obrazków svg ładowanych zewnętrznie (działa tylko wtedy gdy svg jest dodawane jako wewnętrzny kod do pliku html).

Ma ktoś pomysł dlaczego raz załadowany obrazek nie zostaje zapamiętany tylko jest od nowa ładowany przy każdej akcji?

ps. dla obrazków innych niż .svg (np. png) problem też występuje.

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
kafowi
post
Post #2





Grupa: Zarejestrowani
Postów: 75
Pomógł: 20
Dołączył: 13.02.2015

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


Czytając ten temat na myśl przyszło mi tylko jedno hasło: sprite css.
Go to the top of the page
+Quote Post
d4ng
post
Post #3





Grupa: Zarejestrowani
Postów: 191
Pomógł: 4
Dołączył: 7.03.2010

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


Tak jak mój przedmówca polecam Ci sprite ponieważ twoje obecne rozwiązanie generuje więcej zapytań co przy większych projektach ma spore znaczenie.
Ps. Pamiętaj że zawartość SVG też można wrzucić bądź edytować stąd nie widzę potrzeby odwoływania się do innego SVG który ma inną wartość np. fill="FF0000"
Go to the top of the page
+Quote Post
smiady
post
Post #4





Grupa: Zarejestrowani
Postów: 137
Pomógł: 2
Dołączył: 2.07.2007
Skąd: Ostrzeszów

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


Tutaj masz znaną stronę do generowania spritów:
http://www.pl.spritegen.website-performance.org/
Go to the top of the page
+Quote Post

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: 5.10.2025 - 07:17