2012-04-16 5 views
5

Meine Idee, vorausgesetzt, Sie mit einem 200x200 Sprite beginnen (dh die doppelte Auflösung Bild 400x400 ist), ist dies:Nachteile dieser CSS-Sprite-Lösung für Retina-Displays?

.sprite { 
    background-image:url('1x.png'); 
    background-repeat: no-repeat; 
    background-size: 200px 200px; 
} 

@media only screen and (-webkit-min-device-pixel-ratio: 2) { 
    .sprite { 
     background-image:url('2x.png'); 
    } 
} 

anschauliches Beispiel: http://ov3rkill.com/temp/a5dii52/

Ich habe für eine Weile zu kämpfen versuchen, das zu bestimmen, Der beste Weg, um Bilder mit höherer Auflösung zu liefern (vorher habe ich alle Bilder getrennt und einzeln sortiert) und das scheint ehrlich gesagt zu einfach.

Kann jemand mögliche Nachteile sehen? Ich spiele damit für den Produktionseinsatz und bisher scheint es zu funktionieren.

+0

Ein Nachteil, den ich sehe, ist, dass das Telefon beide Bilder herunterladen wird. Wie wäre es mit zwei verschiedenen Stylesheets, die erst nach der Verarbeitung der Medienabfrage angewendet werden? –

Antwort

4

Da die Medienabfrage für Retina beim Laden aufgerufen wird, sollte sie den ursprünglichen Aufruf überschreiben, um das kleine Bild zu laden. Ich habe noch nie erlebt, wie das Bild mit niedriger Auflösung auf diese Weise auf Retina-Displays aufblitzte.

Hat jemand JS verwendet, um zu bestätigen, dass das kleinere Bild auf einem Retina-Display geladen wird? Ich bin neugierig zu wissen.

+0

Konnte möglicherweise @media nicht screen und (-webkit-min-device-pixel-ratio: 2) verwenden, um das Ausgangsbild zu laden, aber das würde einige Benutzeragenten herausnehmen, die das Schlüsselwort "nicht" nicht unterstützen Unterstützung für diese Benutzer. – 4lun