CSS Sprites

Biztosan sokan találkoztatok már a CSS sprites kifejezéssel. Ha valaki mégsem ismerné íme egy rövid összefoglaló róla.

A weboldalak főként a design miatt, nagyon sok kis apró képet töltenek le. Minden egyes kép letöltése 1-1 request, ami sok kép esetén nagy mértékben lassítja az oldal letöltését. Ezért célszerű lenne a sok kis kép helyett egy nagyon használni, amibe szerepel az összes kicsi. Az alábbi példán keresztül láthatjuk hogyan tudjuk ezt megtenni egyszerűen.

Egy felsorolásba megjelenítjük egy pár letölthető fájlt. Minden egyes elem élé oda szeretnénk tenni egy ikont a kiterjesztése alapján. Ehhez szükséges minden egyes kiterjesztéshez egy kép. Ha sok elemből áll a lista, akkor ez akár 10-15 request többletet is generálhat csak azért, hogy a kiterjesztések alapján a böngésző megjelenítse a képeket.
Mennyivel egyszerűbb lenne, ha egy nagy képünk lenne, amiben szerepel az összes kiterjesztéshez tartozó kép, és mindig csak a kép megfelelő részét jelenítenénk meg. Ekkor csak egy képet kellene letölteni, amit egyszerű kliens oldalon cacheelni és a CSS-ből csak azt kell beállítani, hogy a kép mely része látszódjon, amit a például így tehetünk meg:

CSS

ul.icons li
{
  padding-left: 20px;
  list-style: none;
  background-image:url(/Images/nagykep.png);
  background-color:transparent;
  background-repeat:no-repeat;    
}
li.gif {
height:16px;background-position:-66px 0;
}
li.jpg { 
height:16px;background-position:-98px 0;
}

HTML

<ul class="icons">
    <li class="gif">kép.gif</li>
    <li class="jpg">másikkép.jpg</li>
</ul>

Ebben az szerepel hogy minden li-nek ami az icons osztállyal ellátott ul-ben szerepel a háttérképe a generált nagy kép. A második bejegyzés a CSS-ben pedig azt mondja meg, hogy az li hátterében a 98,0 pozíciótól kell megjeleniteni 16 pixel magasan, mivel a gif osztály van beállítva. Fontos, hogy ilyen esetben, ahol nem csak a képet jelenítjük meg, a generált nagy képben egy oszlopban szerepeljenek a képek, mert így csak a magassággal kell játszani.

A probléma ezzel csak annyi, hogy nehéz összerakni a sok kis képet, és kiszámolni, hogy ezek pontosan hol kezdődnek és mekkora a méretük. Ehhez nyújt nagy segítséget a http://css-sprit.es/ vagy a http://spritegen.website-performance.org/ oldal. Ennek segítségével kiválasztjuk mely képeket szeretnénk összegyúrni és ez alapján legenerálja a nagy képet és minden kis képhez a CSS osztályt ami megadja a pozíciót, amit csak át kell emelnünk a saját CSS osztályunkba.



Gincsai Gábor

Gincsai Gábor Műszaki informatikusként végeztem a BME-n és jelenleg a BME Automatizálási és Alkalmazott Informatikai Tanszékén programozás és webes fejlesztés oktatásával foglalkozom. Jópár éve tartok különböző előadásokat Microsoftos technológiákról főként az ASP.NET-ről. Az MSDN Kompetencia Központon belül a Portál Technológiák Csoport szakembere vagyok, illetve 2008 óta ASP.NET MVP.

2010.06.25. 14:35:12 | Permalink | Hozzászólások: 0 | Tárgyszavak: , ,


  • VS 2010: szeretlek is meg nem is

    Balássy György (MS RD, ASP.NET MVP, MCTS) Nagyon vártuk már, hogy elkészüljön a .NET 4.0 és vele együtt egy újabb és jobb Studio, ami hétfőn végre be is következett. Kedden fel is kúszott a gépemre, de nem felhőtlen az örömöm. Tovább »
  • Ethical Hacking ASP.NET

    Balássy György (MS RD, ASP.NET MVP, MCTS) Csütörtökön lezajlott a harmadik Ethical Hacking konferencia, ám az első, amin volt .NET-es téma is. Íme egy rövid összefoglaló arról, hogy hány sebből vérzik az ASP.NET. Tovább »


Írja meg Ön is véleményét!


Hozzászólásokat csak regisztrált, bejelentkezett felhasználóktól tudunk elfogadni!

Hozzászólások