Torsdag, d. 18. marts, 2010 - 14 kommentarer

CSS Sprites – Hvad er det? Og hvordan benytter jeg dem?

Forleden skrev jeg et blogindlæg omkring mine egne erfaringer i brugen af CSS Sprites, hvor store del af disse erfaringer stammer fra dette website.

På stor opfordring for henholdsvis Martin Nielsen og Niels Gamborg kommer her en “mindre” opfølgning, der fortæller dig lidt om, hvad CSS Sprites i det hele taget er for noget, men også hvordan, du kan benytte dem – rent teknisk.

Indholdsfortegnelse

  1. Kort om CSS Sprites
  2. Hvordan benytter jeg CSS Sprites
  3. Har du spørgsmål?
  4. Gode ressourcer
  5. Andre om CSS Sprites

1. Kort om CSS Sprites

Navnet i sig selv kan måske godt være lidt forvirrende, fordi det i sig selv ikke rigtigt danner et visuelt billede af, hvad CSS Sprites er for en størrelse. Nogle tænker måske på små billeder, men faktisk er det komplet modsat – som sådan.

CSS Sprites er en samling af billeder i et større billede, hvor man efterfølgende benytter sig af muligheden for at positionere baggrundsbillederne ved hjælp af CSS. Dette er jo faktisk slet ikke så tosset endda, da mange små billeder kræver mange kald til serveren, og samtidig kan gøre loadtiden langsomme på et pågældende website. Mange kender det jo nok, når de skal kopierer mange småfiler til en enhed til en anden – sjældent nogen hurtig process. Hvorimod det somregel er en mere nem process, når man flytter store filer.

Og for god service skyld, så viser jeg dig her alle de CSS Sprites, jeg selv har stykket sammen, så slipper du for at hoppe frem og  tilbage ;)

2. Hvordan benytter jeg CSS Sprites?

I stedet for al den snik snak, så synes jeg vi skal hoppe i med begge ben, og derfor kigge nærmere på, hvordan du egentlig benytter disse. Her tager jeg udgangspunkt i et af de nyeste CSS Sprites, jeg har stykket sammen. Rundt på min hjemmeside vil du støde på nogle iøjenfaldende knapper, hvilke jeg for nyligt har valgt at opdatere. Disse knapper består i al enkelthed af forskellige faser, der bliver aktiveret, når brugeren fører musen over knappen, og når brugeren klikker på knappen. Kig nedenfor:

CSS Sprites med 3 knapper af 3 faser

Som du kan se ud af billedet ovenfor, fremgår 3 forskellige knapper, der hver især har 3 stadiger.

Det er vigtigt, at brugeren får en rigtig fornemmelse af, at det rent faktisk er en knap, de kan klikke på og benytte. Men al den snak om brugervenlighed og webdesign, kommer i opfølgerenden til blogindlægget omkring, hvordan du bliver en bedre webdesigner.

Førhen ville man måske definere “3 forskellige knapper”, der hver blev især blev placeret på hver sin defination i CSS. Måden ses alligevel ofte anvendt – kender i ikke det, når i fører musen over et element på en pågældende hjemmeside, og der lige går et par sekunder før, at elementet rent faktisk ændrer sig? Heldigvis ikke groft udbredt, men ser det alligevel jævnligt, desværre. Lad os derimod kigge på vores 3 forskellige definationer i CSS og HTML, der hver især skal håndtere knappens 3 stadiger. Lig iøvrigt mærke til, at jeg benytter mig af mine retningslinier fordelt på 2 blogindlæg omkring CSS og HTML ;)

CSS

a.button {
background: url(../images/bg_buttons.jpg) no-repeat 0 0;
display: block;
height: 50px;
text-indent: -9999em;
width: 325px;
}

a.button:hover {
background: url(../images/bg_buttons.jpg) no-repeat 0 -50px;
}

a.button:focus {
background: url(../images/bg_buttons.jpg) no-repeat 0 -100px;
}

HTML

<a href="#comments" title="Afgiv en kommentar" class="button">Afgiv en kommentar</a>

Du undrer dig måske over, hvordan jeg kommer frem til de tal, der positionerer de forskellige faser? Her har jeg heldigvis været dig behjælpelig og lavet en mindre illustration, der viser dig, hvordan jeg er nået frem til disse tal.

Illustration af 3 knapper af 3 faser i forhold til CSS

Så enkelt kan det rent faktisk gøres. Brugeren får en god oplevelse med din knap, og du har sparet serveren for en række unødige kald. Derimod lad os se bort fra, at jeg måske skulle have valgt at benytte mig af <button> frem for <a> – Det er lidt af en smagssag, når jeg læser om det på det store internet. Rent semantisk, så burde du måske nok benytte dig af <button>, da du jo rent faktisk har med en knap at gøre, men lad os gemme den snak til en anden god gang.

Derudover handler det om, at du får bygget en god PSD-fil op, som du fremover nemt og smertefrit kan udvide eller redigere i. Nedenfor kan du se et lille skærmdump af, hvordan mine layers og groups er opsat for ovenstående knapper. Det er ingen skam i livet at være en smule struktureret. Tro mig, det lille forarbejde, vil du elsker i fremtiden ;)

Screenshot af layers i Photoshop brugt til CSS Sprites

3. Har du spørgsmål?

En konklusion er vidst ikke nødvendig i det her tilfælde, men skulle der været opstået spørgsmål i forbindelse med min lille gennemgang, så skal du ikke holde dem tilbage. Hellere stil et spørgsmål for meget end et for lidt (ja, lidt kliché skal man jo være). Uanset hvad, så er der øvrig hjælp at hente nedenfor.

Jeg vil super gerne stille et spørgsmål, smid mig direkte til kommentarfeltet

4. Gode ressourcer

For at spare dig lidt tid, så har du nedenfor nøjagtig de samme gode ressourcer tilgængelig, som du også så i foregående blogindlæg omkring CSS Sprites.

5. Andre omkring CSS Sprites

Og for at spare dig endnu mere tid, så har du nedenfor også de artikler/blogindlæg, der var tilgængelige i foregående blogindlæg.

Skriv en kommentar

Relaterede blogindlæg

  1. Fordele, ulemper og gode ressourcer til CSS Sprites
  2. Sådan arbejder du struktureret med CSS og HTML – del 2
  3. Sådan bliver du en bedre webdesigner – del 1
  1. Kim Andersen - På Twitter

    Fedt med en dansk tutorial om CSS sprites, Michael! Det er sku til at forstå med de små kode-snippets og beskrivende billeder.
    Keep’em coming ;)
    .-= Seneste blogindlæg: Min nye RSS-reader: Twitter – Slår Google Reader =-.

  2. Michael Østergaard - På Twitter

    Tak skal du have Kim, det er godt at vide, at det kan bruges til noget :)

    Du kan være ganske rolig, har mange gode ting gemt nede i “skrivebordsskuffen” ;)

  3. Lars Bo Thomsen

    Utroligt at et så simpelt redskab kan have så meget værdi. CSS Sprites er helt fantastisk. Jeg er først for nyligt begyndt at lave lidt flottere grafiske knapper i photoshop og der er CSS Sprites simpelthen fantastisk. Har du overvejet at lave lidt link-bait i form af knappe-tutorials? Jeg kunne godt bruge et par modeller at gå ud fra da mine photoshop evner er på mspaint niveau ;)

  4. Michael Østergaard - På Twitter

    @Lars, rigtig god idé du kommer med. Den skriver jeg fluks på listen :)

  5. Niels Gamborg

    Her kommer lige en noget forsinket “thumbs up” til dette indlæg.

    Det er dejligt konkret, og gør det hele meget mere forståeligt. Jeg smider fluks et link til denne opfølgende artikel. :)
    .-= Seneste blogindlæg: Better vampire names =-.

  6. Michael Østergaard - På Twitter

    @Niels – Bedre sent end aldrig ;) Jeg er glad for at høre, at blogindlægget er nemt og forståeligt, det var også mit mål. Mange tak for linket :)

  7. Michael Østergaard - På Twitter

    Jeg har bl.a. opdateret med dette plugin til Photoshop.

    http://arnaumarch.com/en/sprites.html

    Det ser ganske nifty ud :D

  8. Emil - På Twitter

    @Michael, jeg er ved at omstrukturere en hjemmeside til brug af sprite. Hvad tænker du ift., at hvis der nu opstår et dødt link til ens sprite fil – så står man lidt med håret i postkassen. Tænker her især, hvis man bruger sprite til ens logo. Der er jo ikke nogen “alt” funktion til at træde til, hvis der skulle opstå problemer.

  9. Michael Østergaard - På Twitter

    Hej Emil,

    Jeg vil slet ikke benytte sprites til eksempelvis et logo, fordi et logo ikke er en baggrund. Sprites benyttes som regel kun til baggrundsbilleder.

  10. Emil - På Twitter

    Hej Michael,

    Præcis, det tænkte jeg også! Bliver bare forvirret af, at eks. FaceBook bruger det til deres ikoner og logoer:

    http://static.ak.fbcdn.net/rsrc.php/v1/yb/r/lCznBcRYSg8.png

    Selv Googles logo på forsiden, er et baggrundsbillede – dog ik en del af et sprite sheet. Men de bruger det dog som et billede på Google+.

    Men tak for din hurtige feedback :)

  11. Michael Østergaard - På Twitter

    Hej igen Emil,

    Jeg bruger også gerne sprites til ikoner, da man ofte har en lang række ikoner, og der netop er noget at hente rent hastighedsmæssigt. Tit og ofte indgår logoet alligevel i et link og derfor kan det godt forsvares at benytte ikonet som et baggrundsbillede.

    Derimod et logo må også gerne optræde selvom hele stylesheetet ikke er loadet.

  12. Emil - På Twitter

    Super – tak for din feedback :)

  13. Michael Østergaard - På Twitter

    Det var så lidt Emil :)