Moderní tvorba webových aplikací

O webu

Zpožděné načtení obrázku, až když je potřeba

Kromě potřeby nahrát obrázek dopředu (preload), aby byl v době použití 100% připravený, může být potřeba opačná – načíst jej, až v momentě, kdy je potřeba. Z důvodu nemrhání datovým přenosem.

3 minuty

JavaScript

V JS je situace poměrně jednoduchá. Stačí při vykonávání nějaké akce přidávat elementy s obrázky (<img>) nebo elementy s pozadím v CSS (background).

Například pro donačítání obrázků při dojetí na konec stránky (tzv. lazy loading) stačí porovnávat offsetTop a scrollTop:

if (element.offsetTop < document.documentElement.scrollTop + document.body.scrollTop) {
	// nějaká akce
}

Sečtení document.documentElement s document.body slouží ke srovnání chování napříč prohlížeči.

Existují i různá komplexnější řešení v jQuery, například:

CSS

Máme-li třeba nějaké rozsáhlé :hover menu, kvůli kterému by by se zbytečně musel stahovat datově náročný obrázek, dává smysl jej načítat až při použití.

Použití display: none

element {display: none; background: url(obrazek.png)}
element:hover {display: block}

Nabízelo by se, že u elementu s display: none nebudou prohlížeče pozadí stahovat, leč dle monitorování síťových přenosů ve vývojářských nástrojích všech rozšířených prohlížečů to tak funguje jen v Opeře a Firefoxu; Internet Explorer a Google Chrome takto skrytý obrázek stáhnou. Řešení není ani naposicování elementu někam pryč (position: absolute; left: -9999px; top: -9999px}.

Všude funkční řešení je obrázek připojovat až při :hoveru, tedy:

element {display: none}
element:hover {display: block; background: url(obrazek.png)}

Funkční ukázka

Související články

JavaScript Battery API

Jak v JS zjistit stav baterie, co dnes funguje a kdy API nepoužívat.

3 minuty

Znázornění možnosti scrollování

Jak dát uživateli informaci, že je možné někam scrollovat.

10 minut

Plynulé scrollování na obsah

Jak vytvořit plynulé odrolování na určitou část stránky.

6 minut

Různá šířka <input type=number> s min/max

Proč má <input type=number> různou výchozí šířku v závislosti na min/max atributech.

3 minuty

Web jecas.cz píše Bohumil Jahoda, kontakt
Seznam všech článků
2013–2025