Gli ultimi tutorial di sviluppo web
 

CSS Sprites immagine


Sprites immagine

Un sprite immagine è una raccolta di immagini messe in una singola immagine.

Una pagina web con molte immagini può richiedere molto tempo per caricare e genera più richieste al server.

Utilizzando immagini sprite ridurrà il numero di richieste al server e risparmiare larghezza di banda.


Sprites Immagine - Esempio semplice

Invece di usare tre immagini separate, usiamo questa immagine singola ("img_navsprites.gif") :

immagini di navigazione

Con i CSS, possiamo mostrare solo la parte dell'immagine che ci serve.

Nell'esempio che segue il CSS specifica quale parte del "img_navsprites.gif" immagine per mostrare:

Esempio

#home {
    width: 46px;
    height: 44px;
    background: url(img_navsprites.gif) 0 0;
}
Prova tu stesso "

Esempio spiegato:

  • <img id="home" src="img_trans.gif"> - definisce una piccola immagine trasparente solo perché l'attributo src non può essere vuoto. L'immagine visualizzata sarà l'immagine di sfondo si precisa in CSS
  • width: 46px; height: 44px; width: 46px; height: 44px; - Definisce la porzione di immagine che vogliamo usare
  • background: url(img_navsprites.gif) 0 0; - Definisce l'immagine di sfondo e la sua posizione (0px sinistra, in alto 0px)

Questo è il modo più semplice per usare gli sprite immagine, ora vogliamo espanderlo utilizzando i collegamenti e librarsi effetti.


Sprites Immagine - Creare un elenco di navigazione

Vogliamo usare l'immagine sprite ("img_navsprites.gif") per creare una lista di navigazione.

Useremo una lista HTML, perché può essere un collegamento e supporta anche un'immagine di sfondo:

Esempio

#navlist {
    position: relative;
}

#navlist li {
    margin: 0;
    padding: 0;
    list-style: none;
    position: absolute;
    top: 0;
}

#navlist li, #navlist a {
    height: 44px;
    display: block;
}

#home {
    left: 0px;
    width: 46px;
    background: url('img_navsprites.gif') 0 0;
}

#prev {
    left: 63px;
    width: 43px;
    background: url('img_navsprites.gif') -47px 0;
}

#next {
    left: 129px;
    width: 43px;
    background: url('img_navsprites.gif') -91px 0;
}
Prova tu stesso "

Esempio spiegato:

  • #navlist {position:relative;} - posizione è impostato per rispetto per consentire il posizionamento assoluto al suo interno
  • #navlist li {margin:0;padding:0;list-style:none;position:absolute;top:0;} - margin e padding è impostato su 0, list-style viene rimosso, e tutti gli elementi della lista sono assoluti posizionato
  • #navlist li, #navlist a {height:44px;display:block;} - l'altezza di tutte le immagini sono 44px

Ora inizia a posizione e stile per ogni parte specifica:

  • #home {left:0px;width:46px;} - Posizionato tutta la strada a sinistra, e la larghezza dell'immagine è 46px
  • #home {background:url(img_navsprites.gif) 0 0;} - Definisce l'immagine di sfondo e la sua posizione (0px sinistra, in alto 0px)
  • #prev {left:63px;width:43px;} - 63px a destra (#Home larghezza 46px + qualche spazio in più tra gli elementi) Posizionato, e la larghezza è di 43px.
  • #prev {background:url('img_navsprites.gif') -47px 0;} - Definisce il 47px immagine di sfondo a destra (#Home larghezza 46px + 1px linea di divisione)
  • #next {left:129px;width:43px;} - Posizionato 129px a destra (inizio del #prev è 63px 43px + larghezza #prev + spazio), e la larghezza è di 43px.
  • #next {background:url('img_navsprites.gif') -91px 0;} - Definisce il 91px immagine di sfondo a destra (#Home larghezza 46px + 1px linea di divisione + larghezza + #prev 43px 1px linea di divisione)

Sprites Immagine - effetto hover

Ora vogliamo aggiungere un effetto hover alla nostra lista di navigazione.

Nota Tip: L' :hover selettore può essere usato su tutti gli elementi, non solo sui collegamenti.

La nostra nuova immagine ("img_navsprites_hover.gif") contiene tre immagini di navigazione e tre immagini da utilizzare per gli effetti hover:

immagini di navigazione

Perché questa è una singola immagine, e non sei file separati, non ci saràalcun ritardo di carico quando un utente passa sopra l'immagine.

Aggiungiamo solo tre righe di codice per aggiungere l'effetto hover:

Esempio

#home a:hover {
    background: url('img_navsprites_hover.gif') 0 -45px;
}

#prev a:hover {
    background: url('img_navsprites_hover.gif') -47px -45px;
}

#next a:hover {
    background: url('img_navsprites_hover.gif') -91px -45px;
}
Prova tu stesso "

Esempio spiegato:

  • #home a:hover {background: transparent url('img_navsprites_hover.gif') 0 -45px;} - Per tutte e tre le immagini al passaggio del mouse si precisa la stessa posizione di fondo, solo 45px più in basso