Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wczytywanie się obrazków dopiero podczas przewijania strony
1q2w3e4r
post
Post #1





Grupa: Zarejestrowani
Postów: 238
Pomógł: 0
Dołączył: 6.05.2011

Ostrzeżenie: (10%)
X----


Witam,

Jak zrobić aby obrazki wczytywały się dopiero podczas przewijania strony?
Na allegro w liście przedmiotów maja taki efekt.

Pozdrawiam
Go to the top of the page
+Quote Post
toaspzoo
post
Post #2





Grupa: Zarejestrowani
Postów: 778
Pomógł: 84
Dołączył: 29.07.2010
Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury.

Ostrzeżenie: (20%)
X----


Ja bym na stronie zamieścił divy od określonej wysokości (niewidoczne) i podpiął do nich akcję onmouseover / jquery mouseenter
I dynamicznie (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
1q2w3e4r
post
Post #3





Grupa: Zarejestrowani
Postów: 238
Pomógł: 0
Dołączył: 6.05.2011

Ostrzeżenie: (10%)
X----


Tak, ale co wtedy gdy np. ktoś będzie miał wyłączony JS lub np. nie będzie tego obsługiwać czy coś?
Proszę o konkretny przykład.
Go to the top of the page
+Quote Post
by_ikar
post
Post #4





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Inaczej niż w JS takiego efektu nie osiągniesz. onmouseover to jest zdarzenie związane z myszką i musiałbyś najechać myszką aby odsłonić konkretny obrazek. Dodatkowo nie musi być taki obrazek w jakimś div'ie żeby móc w ten sposób na niego reagować. Jak już to onscroll. A na allegro ten efekt, to doczytywanie obrazków w ajaxie, nie wiem dokładnie czy poprzez sprawdzenie pozycji ekranu na stronie, czy też poprzez onscroll, ale tak czy inaczej jest to zrobione w javascript. Wyłącz wejdź na allegro i sam się przekonaj.

Ktoś ma wyłączone js? Trudno, nie będzie miał dodatkowego efektu. A strona dalej będzie miała swoją funkcjonalność.
Go to the top of the page
+Quote Post
Damonsson
post
Post #5





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Lazy Load - tak się to nazywa.

http://www.appelsiini.net/projects/lazyload/enabled.html

Tyle ludzi ma wyłączone JS, ile ma czarno białe monitory (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
1q2w3e4r
post
Post #6





Grupa: Zarejestrowani
Postów: 238
Pomógł: 0
Dołączył: 6.05.2011

Ostrzeżenie: (10%)
X----


Cytat(by_ikar @ 13.02.2012, 19:20:45 ) *
Ktoś ma wyłączone js? Trudno, nie będzie miał dodatkowego efektu. A strona dalej będzie miała swoją funkcjonalność.



Cytat(Damonsson @ 13.02.2012, 19:24:44 ) *
Lazy Load - tak się to nazywa.

http://www.appelsiini.net/projects/lazyload/enabled.html

Tyle ludzi ma wyłączone JS, ile ma czarno białe monitory (IMG:style_emoticons/default/wink.gif)


No tak, ale teraz trzeba brać pod uwagę userów, którzy korzystają z iphone oraz komórek.

W tym przykładzie niestety jest to robione tak:
  1. <img src="img/grey.gif" data-original="img/bmw_m1_hood.jpg" width="765" height="574" alt="BMW M1 Hood">

Gdzie główny src="" jest to obrazek ładowania, a data-original to obrazek właściwy. Więc jeśli ktoś ma wyłączony JS lub nie obsługuje tego to zobaczy same loadery.

Szukałem przykładów na oryginalnym src="" ale nie mogę znaleźć. Czyli chyba nie da sie tego tak zrobić. Trudno będę musiał taki przykład wykorzystać.
Go to the top of the page
+Quote Post
by_ikar
post
Post #7





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


No niestety nie da się tego inaczej zrobić. W samym html tego się nie zrobi, co najwyżej w js. A to co jest w JS będzie działać na iphone czy innych systemach mobilnych z przeglądarką która obsługuje javascript. Możliwe że opera mini może mieć jakieś problemy, nie wiem jak tam ona stoi z js, ale taki efekt można łatwo zamienić. Przykładowo, normalnie podajesz w src link do obrazka, i takiemu obrazkowi nadajesz klasę. Następnie w JS pobierasz zawartość src i podmieniasz na grey.gif, i dodajesz do takiego obrazka data-original z linkiem do oryginalnego obrazka. A dopiero po tym zabiegu, dodać stosowną klasę na której będzie działać lazyload. W efekcie, otrzymasz dla ludzi którzy mają włączony JS efek ładowania obrazków na bieżąco, a dla ludzi bez js, obrazki załadują się normalnie. W jqery kilka linijek kodu aby coś takiego wykonać.

Tyle że obrazki nie koniecznie trzeba dawać w img, a można dawać je jako tło innych elementów html.

BTW na allegro jak się wyłączy js, niestety obrazki się nie ładują (IMG:style_emoticons/default/wink.gif) może nie przywiązali do tego zbytniej uwagi, bo mają wersję strony dla urządzeń mobilnych.
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: 22.08.2025 - 15:42