Autor Zpráva
moom
Profil
Dobrý den, mám prosím dotaz. Udělal jsem si simulaci načítání obrázku,
že jsem si vytvořil CSS styl:

.project-gallery img {
	margin: 0 0 20px 0;
	float:left;
	background-image: url(../images/pozadi/loader.gif);
	background-repeat: no-repeat;
	background-position: center center;
	background-color: #2a2a29;
}


Problém je, že to působí blbě, když se obrázek načítá postupně od zhora dolů.
Dalo by se prosím pomocí JS (nebo třeba i nějak jinak), že by se obrázek
zobrazil až po úplném načtení?

Našel jsem na webu toto: www.appelsiini.net/projects/lazyload
ale na začátku píší, že to už pořádně nefunguje...

Prosím, prosím, prosím, nemáte nějaké řešení :)
tailor19
Profil
Ahoj, zkusil jsem si to vytvořit http://jsfiddle.net/7RJ7q/. Třeba ti to nějak pomůže.
margin
Profil *
moom:
Dalo by se prosím pomocí JS (nebo třeba i nějak jinak), že by se obrázek zobrazil až po úplném načtení?
Dalo: Obrázek zobrazit načtený
moom
Profil
tailor19:
Paráda, Super nádhera. Funguje to krásně. Dlužím pivko i s utopencem :)
Mohu se prosím zeptat jestli by šlo ještě nějak udělat abych mohl nadefinovat
které obrázky takto načítat. Nastavil bych to jenom na galerii, ale na další doplňky
stránky už ne.

margin:
Taky děkuji, ale nějak se lépe orientuji ve variantě tailora. Umím jenom
XHTML a CSS, ale kodér nejsem, tak jsem z toho trošku zmaten.
moom
Profil
Ještě doplnění. Myslíte, že to je všeobecně dobré použít.
Nebo se vystavuji nějakému riziku, že by někdo obrázky
neviděl. Pokud by neměl třeba povolený JavaScript.
Witiko
Profil
moom:
Řešení od tailor19 obrázek jak skryje, tak zobrazí až scriptem, takže uživatelům s deaktivovaným javascriptem se stránky zobrazí normálně. Stejně tak řešení od margina - jinak jeho řešení je snad ještě prostší, jen není psané v jQuery. :)
moom
Profil
Jo, jo, už jsem si vyzkoušel oba. Sice tailorovo řešení mně hlásí, že není validní použití
onload v rámci IMG, ale každopádně díky za pomoc. Třeba se to bude hodit.

Ještě vymyslet jak nadefinovat načítání jenom určitých obrázků...

Kurňa, myslel jsem že bych po XHTML a CSS udělal výlet do tajů PHP, ale
asi budu muset udělat výlet do říše JS :)
joe
Profil
moom:
že není validní použití
Což vůbec ničemu nevadí.
Chamurappi
Profil
Reaguji na mooma:
Nebo se vystavuji nějakému riziku, že by někdo obrázky neviděl
Vystavuješ se velmi reálnému riziku, protože některé prohlížeče skryté obrázky nenačítají. Pokud je skript stihne skrýt dříve, než je vyslán požadavek na server, tak ten požadavek už nemusí být nikdy vyslán a nikdy nedojde k události onload.

není validní použití onload v rámci IMG
Reklamuj u konsorcia, že si dosud nevšimlo, že Netscape Navigator 3.0 zavedl událost onload i na obrázku :-)
Jinak to snad máš opravdu validní?
tailor19
Profil
Chamurappi: Mohli by si prosím upřesnit, které prohlížeče skryté obrázky nenačítají?
moom
Profil
Tak jestli to chápu správně, tak by bylo lepší použít řešení
s jQuery, kde není onload, jak navrhl tailor19.

Asi to aplikuji rovnou na všechny obrázky, protože
menu a další důležité obrázky layoutu mám v CSS,
tak snad se to vztahuje jenom na IMG v rámci stránky.

No a to řešení, že bych určitým obrázkům dal nějaký ID
nebo class, a aktivoval to jenom u nich je asi moc složité...
moom
Profil
A netušíte prosím ještě, jestli se dá nějak simulovat pomalé načítání stránky.
Myslím třeba ve Firebugu, nebo Inspectoru v Google Chrome a Safari.
Jenom, že bych si testoval jak se zobrazuje stránka na pomalém připojení.
Co se načítá první atd...
tailor19
Profil
Celou tu galerii můžeš mít obalenou v divu s určitým id třeba gallery. Tak se to bude vztahovat na obrázky pouze v tom divu

$('#gallery img').hide().load(function() {
    $(this).show()
});


Ještě si počkej na odpověď s problémem načítáním skrytých obrázků, já se s tím nesetkal.
Anonymní
Profil *
tailor19:
Děkuji, děkuji, děkuji :) Funguje to parádně.
Právě jsem to otestoval na této ukázce.

Ještě jednou díky za pomoc. Pokud chamurapy nedá eso na stůl,
tak to použiji :)
margin
Profil *
Opera nenačítá obrázky skryté pomocí display: none; já jsem použil visibility, hlavně proto, že takto skrytý obrázek stále zabírá prostor na stránce. V kódu je zdánlivě nesmyslný časovač, je to proto, že pokud byl obrázek v keši, tak jej Opera nezobrazila. Když jsem přidal časovač, skript fungoval správně, i když jsem nastavil nulový čas.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0