2012-10-17 22 views
6

Di solito se creo sprite CSS, li allineo tutti uno accanto all'altro senza alcuna spaziatura. Ad esempio se tutte le immagini sono 10x10 pixel le metterei alle coordinate 0,10; 0,20; 10,10; 10,20.C'è una quantità raccomandata di spaziatura tra gli sprite CSS?

Ma questo sembra causare problemi in determinate circostanze. Ad esempio durante lo zoom delle pagine e sul cellulare puoi vedere il bordo del prossimo folletto.

Perché si verifica questo problema, si tratta di errori di arrotondamento? Sta semplicemente aggiungendo la spaziatura intorno agli sprite nel modo migliore per evitare il problema? Se è così, c'è una quantità minima o raccomandata di spazio che dovremmo avere tra le icone nell'immagine dello sprite?

+0

Credo che questo sarebbe completamente dipendente layout, ma in generale, senza spazi è preferito. – j08691

+0

Hmm, perché gli stretti voti? In che modo questa domanda non è costruttiva? – DisgruntledGoat

risposta

4

Sprite Bleeding può verificarsi sullo zoom a causa dell'arrotondamento, in particolare in IE (le versioni precedenti semplicemente arrotondate all'intero più vicino, e.G. un valore calcolato di 20.343px sarebbe visualizzato come 20px).
Poiché l'errore di arrotondamento non è mai maggiore di 1px, con una spaziatura di 1px su tutti i lati è già possibile risolvere il problema.

I moderni browser utilizzano un metodo chiamato rendering sub pixel per mitigare questo problema.

+0

Hai alcuni esempi o dati per il backup del tuo reclamo 1px, o è solo speculazione? – j08691

+0

Né né, è un valore empirico che ha funzionato bene per me da molto tempo ormai. Ma ho trovato [questa vecchia domanda] (http://stackoverflow.com/questions/646901/do-i-still-need-to-pad-images-in-a-css-sprite) per te, affermando praticamente lo stesso;) – Christoph

0

Sarebbe più semplice conservare gli sprite CSS memorizzati nelle caselle 50 x 50 px o 100 x x 100 px.

  • Aiuta nell'organizzazione di immagini correlate in sprite.
  • È possibile copiare incolla uno stile precedente e modificare solo una cifra per il nuovo stile.
  • Non è necessario trovare manualmente la posizione dei pixel perfetta manualmente.
  • Evita anche i casi problematici in cui a volte non è possibile controllare la larghezza/altezza di un elemento html e mostra le altre parti non intenzionali dell'immagine sprite.

es:

div.test { 
    background-image: url(image.png); 
    background-position: 100px 0px; 
} 
div.test:hover { 
    background-position: 100px 100px; /* Simple relation with previous style */ 
} 

div.box1 { 
    background-image: url(image.png); 
    background-position: 200px 0px; 
} 
div.box2 { 
    background-image: url(image.png); 
    background-position: 300px 0px; /* No efforts required to find out perfect pixel position */ 
} 
+0

Il problema qui è che ora hai un'immagine due volte più grande di quanto debba essere. – DisgruntledGoat

+0

La differenza di dimensione del file è trascurabile (a causa della compressione png) ma la manutenzione diventa molto più semplice –

+0

@Above Per i siti Web non banali, la differenza di dimensione del file è trascurabile ma la quantità di memoria del dispositivo (non dimentichiamo che siamo nell'era mobile) usato cresce dal quadrato della dimensione dell'immagine. Pertanto se si distribuiscono PNG a colori veri è meglio non aggiungere troppo spazio tra gli sprite. –

Problemi correlati