WHELP! geeft advies over ontwerp, bouw en zoekmachine optimalisatie van je website. Ben je hier voor de eerste keer? Start dan bij het 4-stappenplan voor een eigen website.

CSS Sprite – maakt je leven (en site) gemakkelijker!

sprite Als je een menubalk hebt met knoppen, heb je meestal diverse standen van een knop: de gewone stand, een mouseover stand en een stand als de knop actief is. Drie afbeeldingen zou je denken voor drie standen. Je kunt het echter ook met één afbeelding en wat CSS voor elkaar krijgen. Een techniek die je op veel meer plaatsen en voor meer doeleinden kunt toepassen.

Voordelen van het gebruik van een sprite
Het gebruik van een sprite heeft heel wat voordelen:
1) je hoeft maar één afbeelding te onderhouden
2) je hoeft maar één afbeelding in te laden die ook nog eens kleiner is (waardoor je website sneller inlaadt)
3) het ziet er in Internet Explorer beter uit (geen flikkering bij een mouseOver)
4) en je kunt alles met CSS regelen
Dus, hoe werkt het en hoe kan je die zelf maken?

Googles spriteHoe ziet een sprite eruit?
Een goed voorbeeld van een sprite is die van Google. Zoals je ziet is deze afbeelding een combinatie van maar liefst 24 afbeeldingen van een Google pagina. Ze staan heel strak op elkaar maar worden met behulp van CSS op de juiste manier getoond.

Hoe werkt een sprite?
Een sprite laad je in als een achtergrondafbeelding. Afhankelijk van het plaatje dat je wilt laten zien verschuif je je achtergrond naar links, rechts, boven of onder. De breedte die je instelt bepaalt hoe groot het deel is dat je laat zien. Een voorbeeld:

.csb, .ss {
background:transparent url(/images/nav_logo4.png) no-repeat scroll 0 0;
display:block;
height:26px;
}

en

<span class="csb ch" style="background-position: -60px 0pt; width: 16px;"></span>2</a>

Deze code gebruikt Google om boven de 2 (de link naar de volgende pagina onderaan de zoekresultaten) alleen de O van het woord Google te laten zien. Via het stylesheet was de achtergrondafbeelding aangeven met een hoogte van 26px (niet herhalend). De achtergrondpositie van de sprite wordt vervolgens gezet op -60px (de startpositie van de gele O vanaf de linkerkant) en de breedte op 16px (dat is precies de breedte van de gele letter O).
Als je voor een hyperlink bij mouseover (a:hover) een andere classe gebruikt kan je dit effect ook bewerkstelligen bij menu's…

Hoe maak je een sprite?
Het maken van een sprite kan bijvoorbeeld met programma's als Photoshop/Imageready of Fireworks. Zet elke losse afbeelding binnen een layer en rangschik dit net zolang totdat het een zo klein mogelijke afbeelding is. Pas hierna je stylesheet hierop aan.
Heb je hier geen zin in? Probeer dan eens een online alternatief, zoals van WebsitePerformance (meer hierover later).

Stem / Bookmark [?]Plaatsen/stemmen op NUjijPlaatsen/stemmen op eKudosPlaatsen/stemmen op MSN ReporterPlaatsen/stemmen op DiggVoeg dit artikel toe aan Del.icio.usVoeg toe aan je favorieten op TechnoratiVoeg toe aan je Google bladwijzers

  1. CSS menu’s - lijsten vullen met achtergrondafbeeldingen
    28.02.09 - 18:37
    1

    [...] ander verbeterpunt voor de Volkskrant kan zijn om hier een sprite te gebruiken. Stem / Bookmark [?]  Vind je dit interessant? Neem dan een [...]


  2. Kor Dwarshuis
    08.03.09 - 19:06
    2

    Op de iPhone schijnen sprites problemen te geven:

    …AOL engineers found that one downside with image sprites is that some devices seem to handle sprites in a memory-intensive manner…


  3. Snelheid site bevordert vindbaarheid | Uptime | Door de internetprofessionals van Websites Nederland
    09.01.10 - 16:03
    3

    [...] overwogen keuzes voor CSS-code (o.a. door shorthand coding), snel te laden afbeeldingen (o.a. door sprites en lazy loading) en [...]


  4. Stan Janssen
    17.03.10 - 16:26
    4

    Nice! Thankx voor de tip ;-)

Jouw reactie

Spelregels voor commentaar

XHTML: Je kunt de volgende HTML code gebruiken: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

Domeinnaam vrij?

  • Test via Byte op .nl, .eu, .be, .com, .net, .org, .biz, .info, .de, .co.uk, .tv, .nu, .cn en .name