[Guida] Sprites CSS
Risultati da 1 a 3 di 3
  1. #1
    Utente Elite
    L'avatar di Ryuzaki
    Registrazione
    15/08/11
    Località
    Inferi
    Età
    16
    Messaggi
    2528
    Ringraziato: 45 in 41 posts
    Reputazione
    3

    [Guida] Sprites CSS

    Gli sprites CSS rappresentano una tecnica molto potente che consente di ridurre le richieste HTTP della pagina velocizzandone, quindi, il caricamento.

    Il principio del loro funzionamento è basato sulla realizzazione di un unico file contenente le immagini di cui abbiamo bisogno, immagini che vengono poi opportunamente caricate attraverso la proprietà background-position.

    Tale tecnica può essere utilizzata in molte occasioni aumentando le prestazioni del sito web. Vediamone insieme il funzionamento realizzando un semplicissimo menu orizzontale.

    Il risultato finale è possibile vederlo nell’immagine seguente:



    Le immagini che compongono le voci del menu, compreso lo sfondo del badge, saranno contenute all’interno di un unico file png. All’interno del nostro programma di grafica, quindi, prima di iniziare l’effettiva realizzazione, andremo a creare qualcosa di questo genere:



    HTML/CSS di base

    Il codice HTML di cui abbiamo bisogno è semplicissimo. Vediamolo insieme:

    Codice:
    <div id="top-header">
      <ul id="menu">
        <li><a href="#" class="home">Home</a></li>
        <li><a href="#"class="about">About Us</a></li>
        <li><a href="#"  class="services active">Services</a></li>
        <li><a href="#" class="portfolio">Portfolio</a></li>
        <li><a href="#" class="contact">Contact</a></li>
      </ul>
      <div id="badge">&nbsp;</div>
    </div>
    Il codice CSS di base è, invece, il seguente:

    Codice:
    * { margin: 0; padding: 0; }
                   
    body {
      font-family: Verdana;
      font-size: 14px;
      background: black;
    }   
         
    #top-header {
      width: 100%;
      height: 40px;
      background-color: [Solo gli utenti registrati possono vedere i link. Clicca qui per registrarti..]
      border-bottom: 2px solid [Solo gli utenti registrati possono vedere i link. Clicca qui per registrarti..]
    }
      #badge {
        width: 100px;
        height: 100px;
        float: right;
        margin-right: 25%;
        margin-top: -25px;
      }
      #menu {
        margin: 0 auto;
        width: 800px;
        list-style: none;
      }
        #menu li {
          float: left;
          line-height: 40px;
        }
          #menu li a {
            height: 40px;
            display: block;
            overflow: hidden;
            line-height: 9999em;
            margin-right: 30px;
            outline: none;
          }

    CSS Sprites e background-position

    Giunti a questo punto dobbiamo applicare le immagini al menu e al badge utilizzando la tecnica descritta nell’articolo.

    Prima di vedere il codice necessario, vediamo in dettaglio la proprietà background-position.

    Quando applichiamo un’immagine di sfondo ad un elemento della pagina attraverso il CSS utilizziamo una regola come la seguente:

    Codice:
    div {
      background: url(../path/to/image) no-repeat 0px 0px;
    }
    La proprietà inserisce un’immagine di sfondo non ripetuta sul div. Le due cifre (0 0) indicano la posizione di partenza del background. La posizione può essere definita anche attraverso la proprietà background-position. La regola precedente, quindi, poteva essere espressa così:

    Codice:
    div {
      background: url(../path/to/image) no-repeat;
      background-position: 0px 0px;
    }
    Le due cifre nell’ordine rappresentano il numero di pixel di partenza rispettivamente da sinistra e dall’alto. Sfruttando questa proprietà, quindi, possiamo racchiudere tutte le immagini di cui necessitiamo in un unico file ottimizzando la pagina.

    Vediamo come utilizzare la proprietà nel nostro menu. Il codice necessario è il seguente:

    Codice:
    #menu li a { background: url('sprites.png') no-repeat 0 0; }
     
     #menu li a.home { width: 50px; background-position: 0 0; }
     #menu li a.home:hover { background-position: -61px 0; }
     #menu li a.home.active { background-position: -122px 0; }
     
     #menu li a.about { width: 55px; background-position: 0 -40px; }
     #menu li a.about:hover { background-position: -67px -40px; }
     #menu li a.about.active { background-position: -132px -40px; }
     
     #menu li a.services { width: 78px; background-position: 0 -80px; }
     #menu li a.services:hover { background-position: -88px -80px; }
     #menu li a.services.active { background-position: -177px -80px; }
     
     #menu li a.portfolio { width: 85px; background-position: 0 -120px; }
     #menu li a.portfolio:hover { background-position: -95px -120px; }
     #menu li a.portfolio.active { background-position: -190px -120px; }
     
     #menu li a.contact { width: 82px; background-position: 0 -160px; }
     #menu li a.contact:hover { background-position: -92px -160px; }
     #menu li a.contact.active { background-position: -180px -160px; }
     
    #badge { background: url("sprites.png") no-repeat 0 -200px; }
    Nel codice precedente assegniamo ai link contenuti all’interno del menu l’immagine di sfondo creata in precedenza. Ad ogni singolo elemento, poi, assegniamo la dimensione e la posizione di partenza in cui è presente l’immagine corrispondente. Possiamo notare infatti che, siccome abbiamo lasciato uno spazio di 40px tra una serie di immagini e le altre, la posizione di partenza rispetto al bordo superiore dell’immagine si sposta di 40px esatti per ogni serie di immagini.

    È possibile visualizzare l’esempio completo su [Solo gli utenti registrati possono vedere i link. Clicca qui per registrarti..].

    Quando non usare gli sprites CSS

    La tecnica appena vista apporta dei vantaggi non indifferenti e, infatti, è utilizzata dalla maggior parte dei portali e siti di grandi dimensioni. Giusto per fare qualche esempio, Yahoo e Google utilizzano entrambi tale tecnica. Non in tutti i casi però ne è consigliato il suo utilizzo.

    Quando le immagini singole sono di dimensioni piuttosto elevate è consigliato caricarle singolarmente perchè si rallenterebbe di molto il caricamento della pagina. Il browser resterebbe molto tempo in attesa del caricamento completo del file rallentando tutta la pagina

  2. # ADS
    Circuit advertisement
    Registrazione
    Always
    Località
    Advertising world
    Età
    2010
    Messaggi
    Many

     

  3. #2
    Utente Registrato
    L'avatar di Darcklite
    Registrazione
    23/08/11
    Località
    A casa mia
    Età
    15
    Messaggi
    347
    Ringraziato: 5 in 5 posts
    Reputazione
    0
    Bella guida, ma penso venga dopo le funzioni avanzate del background

  4. #3
    WebMaster &amp; Themes
    L'avatar di SkyDesign
    Registrazione
    22/10/11
    Località
    Sicilia/Siracusa/Floridia
    Età
    14
    Messaggi
    222
    Ringraziato: 11 in 9 posts
    Reputazione
    1
    ottimo tutorial, non la sapevo questa!
    UNDER CONSTRUCTION

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •