von Sebastian Huber & Simon Koch
© Universal Pictures
Früher war alles einfach ...
Heute:
© Universal Pictures
© Universal Pictures
Desktop: 1024x576 Pixel
264 KB
© Universal Pictures
Tablet: 768x432 Pixel
264 KB 177 KB
33% Einsparung
© Universal Pictures
Mobile: 320x180 Pixel
85% Einsparung
© Universal Pictures
Download und Dokumentation:
http://scottjehl.github.io/picturefill/
Auf hochauflösenden Displays werden normale Bilder unscharf dargestellt und die meisten Smartphones und Tablets haben mittlerweile Retina-Bildschirme.
... und viele mehr in der Zukunft
Und der Browser-Support kann sich auch sehen lassen:
Chrome 35, Chrome für Android 38, Safari 7.1, iOS 8 und Opera 25
= 46% Abdeckung weltweit*
* Quelle: http://caniuse.com/#feat=srcset
Bei Retina-Grafiken lässt sich zusätzlich noch Dateigröße einsparen.
In Retina-Größe 370 KB
Nur 14% größer
Dadurch, dass das Retina-Bild vom Browser auf Normalgröße skaliert wird, kann eine JPG-Qualität von 30% oder weniger in Photoshop ausgewählt werden, ohne dass dies zu sichtbaren Einbußen führt.
Weitere Infos zu Compressive Images:
http://www.filamentgroup.com/lab/compressive-images.html
Zusätzlich kann mit Komprimierungstools wie ImageOptim noch einmal 5 - 10% eingespart werden (auch als Grunt Plugin erhältlich)
Unsere Webseite hat 4 Breakpoints
und eine Maximalbreite von 1280 Pixel.
In diesen Größen speichern wir unser Bild ab.
Und so binden wir das Bild mit srcset w in den 4 Größen ein:
Die w Angabe weist den Browser darauf hin, in welchen Breiten das Bild zur Verfügung steht, ohne dass dieser die Bilder herunterladen muss.
Falls das Bild nicht den kompletten Bildschirm einnehmen soll, kann zusätzlich das Attribut sizes verwendet werden, um dem Browser mitzuteilen, in welcher Größe das Bild eingesetzt wird.
Weitere Infos: https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-srcset
Es gibt da noch das picture Element
Unser vorheriges Beispiel
Mit picture ist es außerdem möglich, mehrere source Tags einzubinden und diese mit Media Queries zu versehen.
Z.B. gibt es diesen Retina Media Query,
den wir für unsere Retina-Grafiken einsetzen können:
192 dpi resolution = Retina-Auflösung, genau wie die für Safari und iOS benötigte Syntax Device pixel ratio von 2.
Für die Retina-Varianten unseres Bildes
fügen wir ein zusätzliches source Tag ein:
Der Media Query sorgt dafür, dass Retina-Geräte das erste source verwenden, normale Displays benutzen das zweite.
Damit lassen wir weiterhin den Browser entscheiden, welche Bildgröße für den aktuellen Viewport geeignet ist.
Die Beispiele aus diesem Talk findet ihr hier:
Und die Slides sind ab sofort online unter
http://denkwerk.github.io/talks/
Gerne jetzt oder im Anschluss oder per Twitter (@agorilla)