Progressiv, Regressiv

geschrieben von Jonathan ( 1 Kommentar )

Progressiv enhancement ist eine weit anerkannte und verbreitete Arbeitsweise. Was sich in der Wirtschaft kontinuierlicher Verbesserungsprozess nennt könnte man gut auf den Begriff reflektieren.

Das Prinzip dieser Herangehensweise ist es zunächst eine solide Ausgangsbasis einer Website zu erstellen, die ihren Inhalt in allen Browsern problemlos zugänglich macht. »Progressiv enhancement« konzentriert sich auf den Inhalt einer Website. Da es letztendlich immer darum geht einen Inhalt zu kommunzieren ist es wichtig das die Kernaussagen einer Website jedem zugänglich sind, egal in welchem Browser er sich heimisch fühlt. Auf diese Basis wird aufgebaut und die Website mit neuen Technologien ,wie zum Beispiel CSS3 oder HTML5, verfeinert. User eines neuen Browsers sollen so alle Vorteile schöpfen können, während andere trotzdem Zugriff auf den wesentlichen Content haben.

Back to the roots

Der umkekehrte Weg also, »regressive enhancement« oder auch »graceful degredation« verfolgt eine andere Philosophie. Von Anfang an wird das Endprodukt in erster Linie für den modernen Browser gebaut. Alle neuen Features kommen zunächst ohne Rücksicht auf Verluste zum Einsatz. Erforderliche Inhaltselemente oder Effekte, die in älteren Browsern nicht von Haus aus nativ funktionieren werden mithilfe von JavaScript nachgeahmt. Ein praktisches Beispiel hierfür wäre zum Beispiel CSS3 box-shadow oder der Einsatz des <noscript>-Tags. Eine JavaScript Funktion wird zunächst implementiert. Diejenigen die JavaScript deaktiviert haben erhalten eine Meldung mit alternativen Lösungsbeschreibungen.

Ganz schöner Aufwand

Allerdings! Und warum? Es gibt heutzutage einfach eine Fülle an unterschiedlichen Browsern und Endgeräten auf denen Webseiten betrachtet werden können. Das gilt es zu bewältigen. Keine einfache Aufgabe, gerade weil die Anzahl der Endgeräte stets zunimmt (Netbooks, Tablets, Smartphones, Fernseher etc.). Ich denke das Ganze ist ein wesentlicher Teil unsers Berufs. Es gehört je nach Anforderung einfach dazu und wird meiner Meinung nach in Zukunft noch stärker an unseren Nerven zehren als so mancher IE Bug es getan hat oder immer noch tut. C'est la vie! Ok, zurück zum Thema. Im Endeffekt verfolgen beide Methoden das gleiche Ziel, nämlich eine Website möglichst allen Benutzern zugänglich zu machen. Hier führen wie überall viele Wege nach Rom. Ich persönlich zum Beispiel, denke, dass wir heutzutage ohne Gewissensbisse die semantischen HTML5 Elemente einsetzen können. Degradieren wir dann wieder graceful? Ist das schlimm? Nö!

Die Realität

Uns stehen heutzutage viele Möglichkeiten offen unsere Projekte an verschiedene Browser und Geräte anzupassen. Mit »Modernizr« haben wir ein Tool, das ebenfalls die regressive Vorgehensweise unterstützt. »Modernizr« teilt uns mit welche Features der verwendete Browser unterstützt und gibt uns die Möglichkeit auf ein Fallback. »Modernizr« stellt dafür erweiterte CSS Klassen zur Verfügung. 

.borderradius .box { 
  border-radius: 5px;
}
.no-borderradius .box {
  // Fallback
} 

Desweiteren stellt es ein globales JavaScript Objekt zur Verfügung

if(!Modernizr.input.required) {
 // Mach mal
} 

Geht noch besser

Nämlich in Verbindung mit sogenannten »Script Loadern«, mithilfe deren es möglich ist Skripte nur dann zu laden, wenn sie auch wirklich gebraucht werden. Ein gutes Beispiel dafür ist »yepnope.js«, mit dem man sogar Stylesheets laden kann. Folgender Ausdruck wäre beispielsweise gut möglich:

yepnope({
  test: Modernizr.input.required && Modernizr.input.placeholder,
  nope: 'h5f.min.js'
});

Es wird überprüft, ob der Browser die neuen input Attribute unterstützt. Wenn nicht wird ein Skript geladen. H5F ist eine JavaScript Bibliothek, die die HTML5 Formularelemente weitgehend aktiviert.

Also Vorwärts oder Rückwärts?

Mir gefällt rückwärts ganz gut muss ich sagen. Ist JavaScript deaktiviert funktionieren die vorgestellten Möglichkeiten zwar nicht, meiner Meinung nach kann man den Anteil der Benutzer, die JavaScript deaktiviert haben mittlerweile aber sogar vernachlässigen. Trotzdem sollte eine Website natürlich auch ohne aktiviertes JavaScript im Kern benutzbar bleiben. Meist ist es eine Gradwanderung bei der man es nicht jedem recht machen kann und sollte je nach Anforderung abgewogen werden. Generell bleibt zu sagen, dass wir heutzutage auf eine Vielzahl von Möglichkeiten zurückgreifen können um verschiedenen Browsertypen und Geräten ein individuelles Paket zu schnüren. Müssen deshalb Webseiten in jedem Browser exakt gleich aussehen? Können sie auch garnicht.

1 Kommentar