Responsive TYPO3

Responsive Web Design

 

Sven Wolfermann | maddesigns
TYPO3 Akademie 2012 · München, 10.02.2012
Twittern: @maddesigns #t3ak12 #rt3

Wer ist die Flitzpiepe da überhaupt?

Sven Wolfermann - Certified TYPO3 Integrator

Diese Website ist optimiert für Internet Explorer 4.X, 5.0 und Netscape ab 4.5X, bei einer Auflösung von 800x600, mittlerem Schriftgrad und 16,7 Mio. Farben.

 

Das Web

Webseiten waren grundsätzlich schon immer flexibel und haben sich an die Bildschirmauflösung angepasst.

Bild gesehen bei Jens Grochtdreis – Original von Brad Frost

Das Web

Top 10 Bildschirmauflösungen 2009–2012

2011 wurden erstmals mehr Smartphones als Desktop-PCs verkauft

Smartphone Markt (unvollständig)

Tablet Markt

 

(natürlich auch unvollständig)

Ein Viertel der Deutschen surft via Smartphone im Internet

“Mobile Web”

Herzlich Willkommen!

Responsive Web Design

Verschiedene Screens, aber die Website passt sich an!

Responsive Web Design

 

Responsive Web Design

Responsive Web Design

Responsive Design bezeichnet eine Praxis im Webdesign, bei der der grafische Aufbau von Webseiten dynamisch und unter Berücksichtigung der Anforderungen des betrachtenden Gerätes erfolgt … eine Webseite wird somit auf einem großen Display anders dargestellt als auf einem Tablet-PC oder Smartphone.
Wikipedia

Auf Umgebung und Endgeräte reagieren

Auf Umgebung reagieren - mobiler Kontext

Wo nutzen Menschen ihre mobilen Geräte?

Auf Endgeräte reagieren

Responsive Web Design

CSS3 Media-Queries moderne Browser-Technik

CSS3 Media-Queries

/* Smartphones (portrait and landscape) */
@media only screen 
and (min-device-width : 320px) and (max-device-width : 480px) {
/* CSS Styles */
}

/* Tablets (portrait and landscape) */
@media only screen 
and (min-device-width : 768px) and (max-device-width : 1024px) {
/* CSS Styles */
}

/* Desktops and Laptops */
@media only screen and (min-width : 1024px) {
/* CSS Styles */
}
      	

CSS3 @media-Queries

geht auch bei extern eingebundenen Dateien

<link rel="stylesheet" href="smartphone.css" 
media="only screen and (min-device-width : 320px) 
and (max-device-width : 480px)">
      	

für höhere Auflösung optimiertes CSS - iPhone4

<link rel="stylesheet" href="iphone4.css" 
media="only screen 
and (-webkit-min-device-pixel-ratio : 1.5), 
only screen and (min-device-pixel-ratio : 1.5)">
      	

Layout für kleine Bildschirmgrößen linearisieren

@media screen and (max-width: 600px) {
  header,
  footer,
  .main {
    float: none;
    width: auto;
  }
}
      	

keine statische Medieninhalte

img, embed, object, video {
  max-width: 100%;
}
      	

CSS3 Media-Queries » Browser-Support

Beispiel-Galerien – mediaqueri.es

Beispiel-Galerien – mediaqueri.es

Responsive TYPO3

TYPO3 Adventskalender Artikel

Anpassungen für TYPO3 – CSS

img, embed, object, video {
  max-width: 100%;
  height: auto;
  width: auto;
}
/* CSS Styled Content Regeln überschreiben */
DIV.csc-textpic-above DIV.csc-textpic-imagewrap,
DIV.csc-textpic-below DIV.csc-textpic-imagewrap,
DIV.csc-textpic DIV.csc-textpic-imagewrap UL LI,
DIV.csc-textpic DIV.csc-textpic-imagewrap DL.csc-textpic-image {
	float: none;
}
      	

Anpassungen für TYPO3

TypoScript

feste CSS style="" Anweisungen in CSS-Style-Content müssen überschrieben werden

tt_content.image.20 {
  imageStdWrap.dataWrap = <div class="csc-textpic-imagewrap"> | </div>
  imageColumnStdWrap.dataWrap = <div class="csc-textpic-imagecolumn"> | </div>
}
      	

Anpassungen für TYPO3

Auch beim Rendering selbst muss das style-Attribut entfernt werden.

tt_content.image.20 {
  rendering {
    dl {
      imageRowStdWrap.dataWrap = <div class="csc-textpic-imagerow"> | </div>
      imageLastRowStdWrap.dataWrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last"> | </div>
      oneImageStdWrap.dataWrap = <dl class="csc-textpic-image###CLASSES###" > | </dl>
    }
    ul {
      imageRowStdWrap.dataWrap = <div class="csc-textpic-imagerow"><ul> | </ul></div>
      imageLastRowStdWrap.dataWrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last"><ul> | </ul></div>
      oneImageStdWrap.dataWrap = <li class="csc-textpic-image###CLASSES###"> | </li>
    }
    div {
      imageRowStdWrap.dataWrap = <div class="csc-textpic-imagerow"> | </div>
      imageLastRowStdWrap.dataWrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last"> | </div>
      oneImageStdWrap.dataWrap = <div class="csc-textpic-image###CLASSES###"> | </div>
    }
    simple {
      imageStdWrap.dataWrap = <div class="csc-textpic-imagewrap csc-textpic-single-image"> | </div>
    }
  }
}
      	

Anpassungen für TYPO3

Gleich mal das Rendering auf HTML5 umstellen

tt_content.image.20 {
  renderMethod = figure
  rendering {
    figure {
      imageRowStdWrap.dataWrap = <div class="csc-textpic-imagerow"> | </div>
      imageLastRowStdWrap.dataWrap = <div class="csc-textpic-imagerow csc-textpic-imagerow-last"> | </div>
      noRowsStdWrap.wrap = 
      oneImageStdWrap.dataWrap = <figure class="csc-textpic-image"> | </figure>
      imgTagStdWrap.wrap =   |  
      editIconsStdWrap.wrap = <div> | </div>
      caption.wrap = <figcaption> | </figcaption>
      caption.required = 1
    }
  }
}
      	

Responsive Images

Adaptive Bilder

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

Polyfills müssen her

Lösungsansätze für Bildgrößenproblematik

CSS3-Ansatz von Nicolas Gallagher

http://nicolasgallagher.com/responsive-images-using-css3/

<img src="image.jpg" alt="" data-src-600px="image-600px.jpg">
      	

Responsive Images

https://github.com/filamentgroup/Responsive-Images

<img src="small.jpg?full=large.jpg"> 
      	

Responsive Images

Die aktuell beste Lösung meiner Meinung nach ist die <noscript>-Lösung mit HTML5 data-Attributen

<noscript data-large="Koala.jpg" 
          data-small="Koala-small.jpg" 
          data-alt="Koala">
  <img src="Koala.jpg" alt="Koala" />
</noscript> 
      	

Responsive Images mit Typoscript

tt_content.image.20 {
  maxW = 960
  maxW.override.data >
  maxWInText = {$styles.content.imgtext.maxWInText}
  maxWInText.override.data = register:maxImageWidthInText
  imageStdWrap.dataWrap.cObject = COA
  imageStdWrap.dataWrap.cObject {
    1 = TEXT
    1.value = <div class="csc-textpic-imagewrap"><noscript 
    10 = IMG_RESOURCE
    10 {
      file.import.data = TSFE:lastImageInfo|origFile
      file.maxW = 480
      file.override.data = {$styles.content.imgtext.maxW}
      stdWrap.noTrimWrap = | data-small="|" |
    }
    20 = IMG_RESOURCE
    20 {
      file.import.data = TSFE:lastImageInfo|origFile
      file.maxW = {$styles.content.imgtext.maxW}
      file.override.data = register:maxImageWidth
      stdWrap.noTrimWrap = | data-large="|" |
    }
    1000 = TEXT
    1000.value = >|</noscript></div>
  }
}
      	

Responsive Images

jQuery #FTW

$('noscript[data-large][data-small]').each(function(){
  var src = screen.width >= 500 ? 
  $(this).data('large') : 
  $(this).data('small');
  $('<img src="' + src + '" alt="' + $(this)
  .data('alt') + '" />')
  .insertAfter($(this));
}); 
      	

TYPO3 Extension

Ext:rtp_imgquery

Ext:rtp_imgquery

Extension installieren, statisches TypoScript einbinden

Ext:rtp_imgquery

TypoScript

10 = IMAGE
10.file = fileadmin/images/myimage.jpg
10.file.width = 800
10.breakpoint = 1200
10.breakpoints = 600:500, 400:280, 320:160

Fluid ViewHelper

{namespace responsive=Tx_RtpImgquery_ViewHelpers}
<responsive:image src="fileadmin/images/myimage.jpg" alt="alt text" 
breakpoint="900" breakpoints="600:500, 400:280, 320:160" />

      	

Ext:rtp_imgquery

für Bilder können in jedem Inhaltselement Breakpoints gesetzt werden

Responsive Web Design ist mehr als das Design für Geräte anzupassen – es ist die Anpassung an die Bedürfnisse des Nutzers

neue Herausforderungen für Designer, Konzepter, Berater und natürlich auch für Kunden

neue Herausforderungen

Responsive Web Design

Fragen?

“Ich hab genau zugehört, aber was ist nochmal … ?”

technische Lösungen sind vorhanden - Designer, Konzepter und Berater müssen an das Responsive Web herangeführt werden

Danke für die Aufmerksamkeit!

Sven Wolfermann | maddesigns

 

http://maddesigns.de/responsive-typo3/