Jak na preload obrázků?
Nedávno jsem řešil menší problém díky těm krásným ikonkám, které vidíte v pravo nahoře. Nechtěl jsem, aby byli jen šedé, ale aby se při hoveru pěkně obarvili. Jelikož se mi nechtělo zasahovat do stylopisu a udělat to pomocí hoveru, vyřešil jsem to tolik to oblíbeným JavaScriptem. Ale to není teď důležité.
Takže o co jde?
Obrázkový hover se má správně řešit způsobem, jehož popis je na Pixyho
WellStyledu. Ve zkratce jde jen o to, že posouváte pozadí obrázku - v obrázku máte všechny stavy, které potřebujete. Což je velice chytré v tom, že jakmile se obrázek (ve kterém jsou všechny stavy tlačítka, které potřebujete) jednou načte, už se nic načítat nemusí. Ale pokud máte dva obrázky, původní a hover, vzniká problém (ať to máte řešené přes
JS nebo CSS) - obrázek se při hoveru začne načítat.
A teď jde o to, jak to vyřešit
.
Chtělo by, aby byl obrázek načten ještě před tím, než se přes jeho
první stav vůbec přejede. Když jsem hledal na internetu, našel jsem v různých diskuzí několik řešení. Všechna se zakládají na společném principu - obrázek, který chceme, aby byl přednačten (preloadován

), musíme někam do stránky šoupnout a skrýt. Není to zrovna nejelegantnější řešení, ale narazil jsem i na horší

. Holt kdo to chce mít eňoňuňo - použije CSS, kdo je ale línej zevlák jako já

, šoupne obrázek(obrázky) někam do stránky a skryje ho.
Jak?
Je to možné udělat udělat pomocí CSS a
visibility např.
<img src="zdroj_preloadovaneho_obrazku" alt="preloadovany_obrazek" style="visibility:hidden" />
jenomže tím se obrázek stane jenom neviditelným a prázdné místo po něm zůstane, takže to je celkem nechtěné, když si představíte, že budete mít v hlavičce 20px mezeru. Takže by to šlo pomocí
display a to např. takto
<img src="zdroj_preloadovaneho_obrazku" alt="preloadovany_obrazek" style="display:none" />
jenže to mi nejelo v Opeře. Opera je totiž tak "chytrá", že místo toho aby obrázek (resp. prvek) načetla a skryla, rovnou ho skryla aniž by ho načetla, čímž si teda ušetřila práci, ale nám je to spíše na škodu.
Takže přichází "mé" řešení
Mno
mé - nikde sem o nenašel napsané

a přitom je to tak prosté. Obrázku se nastaví výška i šířka 1px a je to.
<img src="zdroj_preloadovaneho_obrazku" alt="preloadovany_obrazek" width="1" height="1" />
Je to teda hodně kostrbaté, ale co jsem zkoušel tak to zatím funguje všude.
Tak mi dyštak dejte vědět, jestli jste na to někde narazili, že bych si to zapatentoval
, popř. jestli znáte elegantnější řešení (ne CSS)

03.02.2007, 09:45
Tento článek ještě nebyl komentován.
Napište komentář