Mittlerweile als moderne Technik etabliert, beschreiben zahlreiche Tutorials Umsetzungsvorschläge für Responsive Webdesign; dennoch stößt man in Projekten mit einem skalierbaren Layout auf immer gleiche Schwierigkeiten. Häufig haben mobile Geräte eine deutlich schwächere technische Ausstattung als der heimische Desktoprechner, sodass Fragen der Performance auf unterschiedlichen Devices in den Vordergrund gerückt werden. Gerade bei Bildern tauchen Begriffe wie "Responsive Images" oder "Adaptive Images" immer wieder auf. Welche Lösungen wann Sinn ergeben und wie man mit Retina-Screens umgeht, wie der aktuelle Stand des HTML5-Responsive-Image-Elements ist und wie man eine schlanke Bilder erstellt, werden in der Präsentation gezeigt.
2. Sven Wolfermann (35)
Freelancer für moderne Webentwicklung
(HTML5, CSS3, Responsive Webdesign) aus Berlin
CSS3 Adventskalender 2010/2011
schreibt Artikel für das T3N-, PHP- und
Webstandards-Magazin (new: Screengui.de)
mobile Geek
Wer ist die Flitzpiepe da überhaupt?
Twitter: @maddesigns
Web: http://maddesigns.de
·
·
·
·
·
/
3. Responsive Webdesign
Flexible Spaltenraster, die auf Prozentwerte basieren
Variable Bilder- und Videogrößen – Bilder passen sich den Spalten an
CSS3 um Gerätegröße abzufragen und Inhalte anzupassen
·
·
·
Quelle Bild: http://macrojuice.com/
/
4. flexible Medieninhalte
keine statische Breitenangaben
img,embed,object,video{
max-width:100%;
}
Für Medien muss im CSS eine flexible Breite gesetzt werden, die Höhe
soll sich automatisch in Relation anpassen.
img,embed,object,video{
max-width:100%;/*max.originalpxwidth*/
height:auto;
/*width:auto;*/
}
/
6. Responsive Images
Problem ist, dass sich Bilddatenmengen nicht dynamisch anpassen
Große Bilder werden zwar verkleinert dargestellt, laden aber
unnötige Datenmengen
<img>-Tag ist nicht dafür ausgelegt
ein responsives Bildformat gibt es nicht
Polyfills müssen helfen
·
·
·
·
·
/
8. Asset Loading Tests von Tim Kadlec
Tests des Ladeverhalten mobiler Browser
Beispiel: Test CSS-Hintergrundbilder
<divclass="test5"></div>
@mediaalland(min-width:601px){
.test5{
background-image:url("img/test5-desktop.png");
}
}
@mediaalland(max-width:600px){
.test5{
background-image:url("img/test5-mobile.png");
}
}
/
9. Asset Loading Tests von Tim Kadlec
nur das passende Bild wird geladen, gut!
Tim Kadlec – Media Query & Asset Downloading Results
/
10. Lösungsansätze für Responsive Images
CSS3-Ansatz von Nicolas Gallagher
<img src="image.jpg" alt="" data-src-600px="image-600px.jpg">
Umsetzung auf CSS-Basis
@media (min-device-width:600px) {
img[data-src-600px] {
content: attr(data-src-600px, url);
}
}
@media (min-device-width:800px) {
img[data-src-800px] {
content: attr(data-src-800px, url);
}
}
Nachteil: 2 Bilder werden geladen, keine Browserunterstützung
http://nicolasgallagher.com/responsive-images-using-css3/
/
11. Responsive Images
alter Ansatz der Filament Group
<imgsrc="small.jpg?full=large.jpg">
https://github.com/filamentgroup/Responsive-Images
Nachteil: nicht immer kann man "src" verändern (CMS)
wird von der Filament Group nicht mehr empfohlen und nicht
weiterentwickelt!
Responsive Media - Blog Post von @drublic
/
12. Responsive Images
Eine einfache und gute Lösung meiner Meinung nach, ist die
<noscript>-Lösung mit HTML5 data-Attributen
<noscriptdata-large="Koala-large.jpg"
data-small="Koala-small.jpg"
data-alt="Koala">
<imgsrc="Koala-small.jpg"alt="Koala"/>
</noscript>
Vorteil: Assets die im <noscript>-Tag eingebunden sind, werden nicht
vom Browser in den DOM eingefügt (und nicht geladen), wenn
JavaScript aktiviert ist.
Ressourcen werden also nicht doppelt geladen.
JavaScript notwendig
http://www.monoliitti.com/images/
/
14. <picture> Element
Aktuelle W3C-Diskussion – <picture> Element
Aufbau wie <video> Element
<picturewidth="500"height="500">
<sourcesrc="large.jpg" media="(min-width:45em)">
<sourcesrc="middle.jpg"media="(min-width:18em)">
<imgsrc="small.jpg"alt="">
<p>Accessibletext</p>
</picture>
picture element proposal
/
16. Vorschlag: srcset-Attribut
<img> durch ein neues Attribut erweitern, das mehrere Bildpfade und -
qualitäten enthält
<imgalt="TheBreakfastCombo"src="banner.jpeg"
srcset="banner-HD.jpeg2x,banner-phone.jpeg100w,
banner-phone-HD.jpeg100w2x">
Support in CSS für background-images
/*Safari6,Chrome21supportsbackground-image:-webkit-image-set();*/
background-image:-webkit-image-set(
url(cloud-sd.png)1x,url(cloud-hd.png)2x);
-› Retina-Support für iOS
srcset attribut proposal
/
18. <picture> Element + srcset
Das beste aus beiden Vorschlägen
<picturewidth="500"height="500">
<sourcemedia="(min-width:45em)"
srcset="large-1.jpg1x,large-2.jpg2x">
<sourcemedia="(min-width:18em)"
srcset="med-1.jpg1x,med-2.jpg2x">
<sourcesrcset="small-1.jpg1x,small-2.jpg2x">
<imgsrc="small-1.jpg"alt="">
<p>Accessibletext</p>
</picture>
wird mit den Browserherstellern diskutiert, aktuell scheint die
Integration vom "srcset"-Attribut bevorzugt zu werden
https://code.google.com/p/chromium/issues/detail?id=233751
/
19. Clown Car Technique
Media Queries innerhalb SVG
<imgsrc="file.svg"alt="image">
Vorteil:
gut für Bild im Text
Nachteil:
SVG erst ab Android 4, IE9
Bild das erscheint, ist nicht das was man
herunterladen kann
http://coding.smashingmagazine.com/2013/06/02/clown-car-technique-solving-for-adaptive-images-in-responsive-
web-design/
/
25. Focal Point – Lösungsvarianten für Bildausschnitte
http://www.cdnconnect.com/docs/focal-point-css/pure-html-css-responsive-high-resolution-images-solution
35. SVG vs. PNG
SVG 7,57 KB 51,50 KB 4,50 KB
PNG 200px 6,50 KB 11,10 KB 4,18 KB
PNG 400px 11,80 KB 27,60 KB 8,32 KB
PNG 800px 18,50 KB 72,70 KB 14,80 KB
fett = PNG kleiner als SVG
die Datenmenge für kleine PNG-Bilder ist häufig kleiner als eine SVG-
Grafik
super WPO Slides von Christian @derSchepp Schäfer
/
36. Classic CSS Sprites – Image-Requests sparen
kleine Grafiken oder Icons zu großen Sprite-Grafiken
zusammenfassen
mit CSS background-position den richtigen Ausschnitt anzeigen
·
·
CSS Sprite [DE]
/
39. Icon Fonts == Dingbats on dope
Vorteil:
Farben und Größe der Icons kann leicht mit CSS angepasst werden
zusätzlich können CSS-Effekte wie text-shadow oder animation für
die Darstellung genutzt werden
·
·
/
43. Data URI
super für kleine Grafiken, die nicht für Sprite-Image geeignet sind
(Twitter nutzt diese Technik für die Timeline Profilbilder)
optimal wenn Grafiken nur 1x vorkommen
reduziert die HTTP-Requests
Nachteile
nicht cachebar (cachebar in externen CSS Dateien)
IE8+ (IE8 Data-URI limitation < 24kb)
·
·
·
·
·
/
44. Vorsicht mit großen Bildern – iOS Resource Limits
Max. Größe für GIF, PNG & TIF = 3 Megapixel für Geräte < 256MB
RAM, 5 Megapixel ≥ 256 MB RAM
width * height ≤ 3 * 1024 * 1024.
Hinweis: Das dekodierte Bild ist weit aus größer als die enkodierte
Bild.
Mit Hilfe von Subsampling beträgt die maximale Größe von JPEGs 32
Megapixel. Das Subsampling dekodiert die JPEG Bilder so, dass sie
nur noch ein sechzehntel der ursprünglichen Pixel haben. Um den
Speicher zu reduzieren werden alle JPEGs mit mehr als 2 Megapixel
gesampelt.
·
·
·
Know iOS Resource Limits
/
46. Bildoptimierung kann Kosten sparen
Beispiel:
Amazon Web Service (AWS) – jedes gesparte Byte kann helfen Kosten
zu sparen
https://twitter.com/andmag/status/339987087531057153
/
47. Bildformat
das richtige Bildformat je Bildinhalt verwenden!
lieber PNG als GIF (besser komprimierbar)
PNG8 für einen limitierten Farbraum
PNG24 für Bilder mit Alphatransparenz
8bit PNG mit Alphatransparenz: http://pngmini.com/
zusätzlich PNGs crushen!
Bestes Tool: http://imageoptim.com/ (Mac)
RIOT http://luci.criosweb.ro/riot/ (Win)
·
·
·
·
·
·
Alpha Transparency in PNG-8 Images Without Using Fireworks
/
48. JPG für Photos verwenden! -› JPEGmini
Online-Tool
http://www.jpegmini.com/
/
49. kleinere Bilddaten bei vergleichbarer Qualität
neues Bildformat durch Google entwickelt (Ursprung in der WebM-
Videokompression)
komprimiert verlustbehaftet oder verlustfrei
statische oder animierte Bilder
unterstützt Alphatransparenzen
kann also PNG und JPG ersetzen
nur Chrome (und Opera)
Problematisch: Facebook testete WebP-Bilder, User waren unzufrieden
·
·
·
·
·
Video und Slides zum WebP-Status
/
50. Weitere Online-Tools zur Bildkomprimierung
PunyPNG
Smush.it
TinyPNG
http://img2webp.net
·
·
·
·
lossless image optimization tools
/