HTML5 & CSS3: Webentwicklung mit den Standards von morgen

HTML5 & CSS3: Webentwicklung mit den Standards von morgen

Brian P. Hogan

Die Informationen in diesem Buch wurden mit größter Sorgfalt erarbeitet. Dennoch können Fehler nicht vollständig ausgeschlossen werden. Verlag, Autoren und Übersetzer übernehmen keine juristische Verantwortung oder irgendeine Haftung für eventuell verbliebene Fehler und deren Folgen.

Alle Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt und sind möglicherweise eingetragene Warenzeichen. Der Verlag richtet sich im Wesentlichen nach den Schreibweisen der Hersteller. Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

Kommentare und Fragen können Sie gerne an uns richten:

Copyright der deutschen Ausgabe:

1. Auflage 2011

Die Originalausgabe erschien 2011 unter dem Titel
HTML5 and CSS3 bei Pragmatic Bookshelf, Inc.

Bibliografische Information der Deutschen Nationalbibliothek
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der
Deutschen Nationalbibliografie; detaillierte bibliografische Daten
sind im Internet über http://dnb.d-nb.de abrufbar.

Übersetzung und deutsche Bearbeitung: Stefan Fröhlich, Berlin
Lektorat: Inken Kiupel, Köln
Korrektorat: Friederike Daenecke, Zülpich
DTP: Andreas Franke, SatzWERK, Siegen; www.satz-werk.com
Produktion: Karin Driesen, Köln
Belichtung, Druck und buchbinderische Verarbeitung:
Druckerei Kösel, Krugzell; www.koeselbuch.de

Dieses Buch ist auf 100% chlorfrei gebleichtem Papier gedruckt.

O’Reilly Verlag Balthasarstr. 81 50670 Köln kommentar@oreilly.de

Inhalt

Danksagungen

Vorwort

HTML5: Plattform oder Spezikation?

Wie die Inhalte organisiert sind

Über dieses Buch

Vorkenntnisse

Online-Ressourcen

1. HTML5 und CSS3 im Überblick

1.1 Eine Plattform für die Webentwicklung

Aussagekräftigeres Markup

Multimedia mit weniger Plugins

Bessere Anwendungen

Kommunikation mit anderen Dokumenten

Web Sockets

Clientseitige Speicherung

Bessere Benutzeroberflächen

Bessere Formulare

Verbesserte Barrierefreiheit

Fortschrittliche Selektoren

Visuelle Effekte

1.2 Abwärtskompatibilität

1.3 Der Weg in die Zukunft ist steinig

Internet Explorer

Barrierefreiheit

Veraltete Tags

Konkurrierende Unternehmensinteressen

HTML5 und CSS3 befinden sich noch in der Entwicklung

I. Bessere Benutzeroberflächen

2. Neue strukturelle Tags und Attribute

1 Einen Blog mit semantischem Markup neu definieren

Auf den Doctype kommt es an

Kopfzeilen

Fußzeilen

Navigation

Abschnitte und Artikel

Artikel

Das aside-Tag und Seitenleisten

aside-Elemente sind keine Seitenleisten

Styling

Ausweichlösung

2 Pop-up-Fenster mit benutzerdefinierten Datenattributen

Das Verhalten vom Inhalt trennen oder warum onclick böse ist

Mehr Barrierefreiheit

onclick beseitigen

Ausweichlösung

3. Benutzerfreundliche Webformulare

3 Daten mit neuen Eingabefeldern beschreiben

Verbessertes Formular für unser AwesomeCo-Projekt

Das grundlegende Formular

Slider mithilfe von range erstellen

Zahlen und Spinboxen

Datumswerte

E-Mail

URL

Farbe

Ausweichlösungen

Den Farbwähler ersetzen

Modernizr

4 Mit autofocus zum ersten Feld springen

Ausweichlösung

5 Platzhaltertext für Hinweise nutzen

Ein einfaches Registrierungsformular

Autovervollständigung verhindern

Ausweichlösung

6 In-Place-Editing mit contenteditable

Das Profilformular

Die Daten ablegen

Ausweichlösung

Bearbeitungsseiten erstellen

Die Zukunft

4. Bessere Benutzeroberflächen mit CSS3

7 Tabellen mit Pseudoklassen stylen

Verbesserte Abrechnungen

Gestreifte Zeilen mit :nth-of-type

Spaltentexte ausrichten mit :nth-child

Die letzte Zeile fett darstellen mit :last-child

Rückwärts zählen mit :nth-last-child

Ausweichlösung

HTML-Code ändern

JavaScript verwenden

8 Links ausdrucken mit :after und content

Das CSS

Ausweichlösung

9 Mehrspaltige Layouts

Spalten spalten

Ausweichlösung

10 Benutzeroberflächen für mobile Geräte mit Media Queries

Ausweichlösung

Die Zukunft

5. Mehr Barrierefreiheit

11 Navigationshinweise mit ARIA-Rollen

Landmark-Rollen

Rollen für die Dokumentstruktur

Ausweichlösung

12 Barrierefreie aktualisierbare Bereiche erstellen

Die Seite erstellen

Höfliche, aber bestimmte Aktualisierung

Alles vorlesen lassen

Bereiche ausblenden

Ausweichlösung

Die Zukunft

II. Neue Perspektiven und Klänge

6. Zeichnen mit dem canvas-Element

13 Logos zeichnen

Das Logo zeichnen

Text einfügen

Linien zeichnen

Den Ursprung verschieben

Farben

Ausweichlösung

14 Statistiken grafisch darstellen mit RGraph

Daten mit HTML beschreiben

Ein Balkendiagramm aus HMTL erstellen

Alternativen Inhalt anzeigen

Ausweichlösung

Die Zukunft

7. Audio und Video einbetten

7.1 Ein bisschen Geschichte

7.2 Container und Codecs

Video-Codecs

Codecs und unterstützte Browser

H.264

Theora

VP8

Audio-Codecs

Codecs und unterstützte Browser

Advanced Audio Coding (AAC)

Vorbis (OGG)

MP3

Container und Codecs als Team

15 Mit Audio arbeiten

Aufbau der grundlegenden Liste

Ausweichlösung

16 Video einbetten

Ausweichlösung

Die Grenzen von HTML5-Video

Audio, Video und Barrierefreiheit

Die Zukunft

8. Augenschmaus

17 Scharfe Ecken abrunden

Ein Anmeldeformular auflockern

Browserspezifische Selektoren

Ausweichlösung

Unterstützung für abgerundete Ecken ermitteln

jQuery Corners

Unser formCorners-Plugin

Die Abrundung aufrufen

Ein kleiner IE-Trick

18 Schatten, Verläufe und Transformationen

Die grundlegende Struktur

Einen Verlauf hinzufügen

Schatten für das Ansteckschild

Das Namensschild drehen

Transparente Hintergründe

Ausweichlösung

Drehen

Farbverläufe

Transparenz

Alles zusammengenommen

19 Echte Schriften nutzen

@font-face

Schriftformate

Formate und unterstützte Browser

Schrift ersetzen

Ausweichlösung

Die Zukunft

III. Jenseits von HTML5

9. Mit clientseitigen Daten arbeiten

20 Einstellungen mit localStorage speichern

Formular für die Einstellungen

Einstellungen speichern und laden

Einstellungen anwenden

Ausweichlösung

Serverseitige Speicherung

Cookies und JavaScript

21 Daten in einer clientseitigen relationalen Datenbank speichern

CRUD in Ihrem Browser

Die Oberfläche für die Notizen

Mit der Datenbank verbinden

Eine Notiztabelle erstellen

Notizen laden

Bestimmte Datensätze abrufen

Datensätze einfügen, aktualisieren und löschen

Verpacken

Ausweichlösung

22 Offline arbeiten

Mit dem Manifest einen Cache definieren

Manifest und Caching

Die Zukunft

10. Mit anderen APIs spielen

23 Den Verlauf erhalten

Den aktuellen Zustand speichern

Den vorherigen Status abrufen

Standardwert

Ausweichlösung

24 Über Domains hinweg kommunizieren

Die Kontaktliste

Nachrichten senden

Die Support-Website

Nachrichten empfangen

Ausweichlösung

25 Chatten mit Web Sockets

Die Chat-Oberfläche

Mit dem Server sprechen

Ausweichlösung

Flash Socket Policy ähm, was ?

Server

26 Finden Sie sich selbst: Geolocation

AwesomeCo lokalisieren

Wie man gefunden wird

Ausweichlösung

Die Zukunft

11. Wie es weitergeht

11.1 CSS3-Übergänge

Timingfunktionen

11.2 Web Workers

11.3 Native Unterstützung für Drag-and-Drop

Drag-and-Drop-Events

Elemente ablegen

Stilregeln ändern

Dateien ziehen

Nicht alles ist gut

11.4 WebGL

11.5 Indexed Database API

11.6 Clientseitige Formularvalidierung

11.7 Vorwärts!

A. Kurzreferenz

A.1 Neue Elemente

A.2 Attribute

A.3 Formulare

A.4 Attribute für Formularfelder

A.5 Barrierefreiheit

A.6 Multimedia

A.7 CSS3

A.8 Clientseitige Speicherung

A.9 Zusätzliche APIs

B. jQuery-Einführung

B.1 jQuery laden

B.2 jQuery-Grundlagen

B.3 Methoden zum Verändern von Inhalten

Ein- und Ausblenden

html, val und attr

append, prepend und wrap

CSS und Klassen

Verkettungen

B.4 Elemente erstellen

B.5 Events

Bind

Ursprüngliches Event

B.6 Die Funktion document.ready

C. Audio und Video kodieren

C.1 Audio kodieren

C.2 Video für das Web kodieren

D. Ressourcen

D.1 Ressourcen im Web

Apple – HTML5

CSS3.Info

Font Squirrel

HTML5

HTML5 – Mozilla Developer Center

Web Socket-Server mit Node.js implementieren

Probefahrt mit Microsoft IE9

Ruby und Web Sockets – TCP für den Browser

Flash-Richtliniendatei einrichten

Typekit

Unit Interactive: „Better CSS Font Stacks“...

Video für Alle!

Video.js

Wo kann ich ... verwenden?

E. Literaturverzeichnis

Stichwortverzeichnis

Danksagungen

Ich habe mich förmlich auf die Arbeit an diesem Buch gestürzt, noch bevor ich mit dem vorherigen fertig war. Die meisten Freunde, meine Familie und auch mein Verleger haben mich wahrscheinlich für verrückt erklärt, weil ich mir keine Pause gegönnt habe, aber sie haben mich dennoch unterstützt. Dieses Buch ist also das Ergebnis vieler wundervoller und hilfsbereiter Menschen.

Dave Thomas und Andy Hunt kann ich gar nicht genug dafür danken, dass sie mir die Möglichkeit gegeben haben, ein zweites Mal mit ihnen zusammenzuarbeiten. Ihre Anmerkungen haben mir sehr dabei geholfen, diesem Buch die richtige Form zu geben. Ich bin stolz darauf, ein Pragmatic Bookshelf-Autor zu sein.

Daniel Steinberg hat mir dabei geholfen, dieses Buch anzuschieben, unter Vertrag zu kommen und von Anfang an die richtigen Weichen zu stellen. Ich bin sehr dankbar für all die Unterstützung, die ich von ihm erhalten habe – und dafür, dass er mir beigebracht hat, meine Texte klarer zu formulieren. Auch jetzt habe ich beim Schreiben seine Stimme im Ohr.

Daniel konnte seine Arbeit an diesem Buch nicht fortsetzen, gab mich aber in wirklich gute Hände. Susannah Pfalzer hat mir während des ganzen Projekts unglaublich viel geholfen, mich bei der Stange gehalten und mich angetrieben, noch besser zu werden. Sie verstand es, immer genau zur richtigen Zeit die richtigen Fragen zu stellen. Ohne Susannah wäre dieses Buch nicht annähernd so gut geworden.

Meine technischen Gutachter haben mir in beiden Feedback-Runden extrem viel dabei geholfen, Inhalte deutlicher herauszuarbeiten und verständlicher zu präsentieren. Vielen Dank an Aaron Godin, Ali Raza, Charles Leffingwell, Daniel Steinberg, David Kulberg, Don Henton, Doug Rhoten, Edi Schlechtinger, Jon Mischo, Jon Oebser, Kevin Gisi, Marc Harter, Mark Nichols, Noel Rappin, Paul Neibarger, Sam Elliott, Sean Canton, Srdjan Pejic, Stephen Wolff, Todd Dahl und Erik Watson.

Besonderer Dank gilt auch den tollen Leuten bei ZenCoder für ihre Hilfe bei der Videokodierung der Beispieldateien und dafür, dass sie es vielen Webautoren durch ihre Arbeit so viel leichter machen, Videos für HTML5 vorzubereiten.

Ein herzlicher Dank geht auch an meine Geschäftspartner Chris Johnson, Chris Warren, Mike Weber, Jon Kinney, Adam Ludwig, Gary Crabtree, Carl Hoover, Josh Anderson, Austen Ott und Nick Lamuro für die Unterstützung bei diesem und vielen anderen Projekten. Besonderer Dank gilt auch Erich Tesky dafür, dass er mich gelegentlich auf den Boden der Tatsachen zurückholte, und dafür, dass er für mich auch dann als Freund da war, wenn ich mal frustriert war.

Außerdem möchte ich meinem Vater dafür danken, dass er von mir immer nur das Beste erwartet und mich unermüdlich zum Durchhalten angetrieben hat. Erst dadurch wurde das Unmögliche möglich.

Mein ewiger Dank und meine Liebe gelten meiner wundervollen Frau Carissa und unseren Töchtern Ana und Lisa. Sie haben auf eine Menge Wochenenden und Abende verzichtet, damit ich im Büro weiterhacken und schreiben konnte. Jedes Mal, wenn ich nicht weiter wusste, hat mir Carissas unerschütterlicher Glaube, dass „ich es schon schaffe“, weitergeholfen. Ich habe großes Glück, dass die drei ein Teil meines Lebens sind.

Vorwort

Drei Monate im Web sind wie ein ganzes Jahr in Echtzeit.

Wir Webentwickler denken meistens so, weil wir ständig von irgendetwas Neuem hören. Vor einem Jahr schienen HTML5 und CSS3 noch in weiter Ferne zu sein. Aber schon heute setzen Unternehmen diese Technologien ein, weil in Browsern wie Google Chrome, Safari, Firefox und Opera bereits Teile der Spezifikation implementiert wurden.

HTML5 und CSS3 helfen dabei, das Fundament für die nächste Generation von Webanwendungen zu legen. Sie geben uns die Möglichkeit, Websites zu erstellen, die leichter zu entwickeln, zu pflegen und die benutzerfreundlicher sind. HTML5 bietet neue Elemente für die Definition der Struktur einer Website und die Einbettung von Inhalten. Daher müssen wir nicht mehr auf zusätzliches Markup oder extra Plugins zurückgreifen. CSS3 bietet fortschrittliche Selektoren, grafische Erweiterungen und bessere Unterstützung für Schriften. Dadurch werden Websites visuell ansprechender, auch ohne die Ersetzung von Schriften durch Grafiken, komplexe JavaScripts oder grafische Tools. Die erweiterte Unterstützung für Barrierefreiheit ermöglicht bessere Ajax-Anwendungen für behinderte Menschen, und dank der Offline-Möglichkeiten können wir mit der Entwicklung von Anwendungen beginnen, die auch ohne Internetverbindung funktionieren.

In diesem Buch erfahren Sie alles darüber, was Sie bereits jetzt mit HTML5 und CSS3 machen können, selbst wenn Ihre Benutzer Browser verwenden, die noch nicht alle Funktionen unterstützen. Bevor wir damit anfangen, nehmen wir uns ein paar Sekunden Zeit und sprechen über HTML5 und andere Buzzwords.

HTML5: Plattform oder Spezikation?

HTML5 ist eine Spezifikation, die einige neue Tags und neues Markup sowie wundervolle JavaScript-APIs beschreibt, aber gleichzeitig ist es in einen Sog aus Hypes und Versprechungen geraten. Leider hat sich der HTML5-Standard zu einer HTML5-Plattform entwickelt, was zu einer schrecklichen Verwirrung bei Entwicklern, Kunden und sogar bei Autoren führt. In manchen Fällen werden Teile der CSS3-Spezifikation wie etwa Schatten, Verläufe und Transformationen plötzlich „HTML“ genannt. Browserhersteller versuchen, sich gegenseitig darin zu übertrumpfen, wie viel „HTML5“ sie unterstützen. Und Kunden machen plötzlich komische Anfragen wie zum Beispiel: „Meine Website wird doch in HTML5 gemacht, oder?“

Für den größten Teil dieses Buches konzentrieren wir uns auf die Spezifikationen von HTML5 und CSS3 sowie darauf, wie Sie die damit beschriebenen Techniken nutzen können. Im letzten Teil des Buches sehen wir uns eine Reihe verwandter Spezifikationen an, die einmal Teil von HTML5 waren, aber bereits jetzt auf verschiedenen Plattformen im Einsatz sind. Dazu gehören Web SQL Databases, Geolocation und Web Sockets. Zwar gehören diese Dinge technisch gesehen nicht zu HTML5, können Ihnen aber in Kombination mit HTML5 und CSS3 dabei helfen, tolle Anwendungen zu erstellen.

Wie die Inhalte organisiert sind

Jedes Kapitel in diesem Buch konzentriert sich auf eine bestimmte Gruppe von Problemen, die wir mit HTML5 und CSS3 lösen können. Für jedes Kapitel gibt es einen Überblick sowie eine Tabelle mit den im Buch behandelten Tags, Funktionen und Konzepten. Der Hauptinhalt jedes Kapitels ist in „Tipps“ unterteilt, die Ihnen jeweils ein bestimmtes Konzept vorstellen und Sie durch die Erstellung eines einfachen Beispiels führen. Die Kapitel dieses Buchs wurden themenweise zusammengestellt. Anstatt die Themen in einen HTML5- und einen CSS3-Teil zu gliedern, ist es sinnvoller, die Kapitel anhand der gelösten Probleme zusammenzufassen.

Jeder Tipp enthält einen Abschnitt mit der Überschrift „Ausweichlösung“, in dem Lösungen für diejenigen Benutzer gezeigt werden, deren Browser noch keine Unterstützung für HTML5 und CSS3 bieten. Wir werden eine Vielzahl von Techniken verwenden, damit diese Ausweichlösungen funktionieren: von Bibliotheken von Drittherstellern bis hin zu unseren eigenen jQuery-Plugins. Die Tipps können Sie in beliebiger Reihenfolge lesen.

Jedes Kapitel schließt mit einem Abschnitt mit der Überschrift „Die Zukunft“, in dem wir diskutieren, wie das jeweilige Konzept angewendet werden kann, wenn es weitere Verbreitung findet.

Dieses Buch konzentriert sich auf das, was Sie heute schon verwenden können. Es gibt mehr HTML5- und CSS3-Funktionen, deren Verwendung noch nicht weit verbreitet ist. Darüber erfahren Sie mehr in Kapitel 11.

Über dieses Buch

Wir beginnen mit einem kurzen Überblick über HTML5 und CSS3 und sehen uns einige der neuen strukturellen Tags an, mit denen Sie den Inhalt Ihrer Seiten beschreiben können. Anschließend arbeiten wir mit Formularen, und Sie erhalten die Gelegenheit, einige Formularfelder und -funktionen wie zum Beispiel Autofokus und Platzhalter zu verwenden. Danach können Sie mit den neuen Selektoren von CSS3 spielen und lernen, wie Sie Stilregeln auf Elemente anwenden, ohne Ihrem Inhalt zusätzliches Markup hinzuzufügen.

Anschließend erkunden wir die Audio- und Videounterstützung in HTML5. Dabei lernen Sie, wie Sie mit dem canvas-Element Formen zeichnen. Außerdem werfen Sie einen Blick auf Schatten, Verläufe und Transformationen in CSS3 und lernen, wie Sie mit Schriften arbeiten.

Im letzten Abschnitt verwenden wir die clientseitigen Funktionen von HTML5, wie zum Beispiel Web Storage und Web SQL Databases, und behandeln die Erstellung von clientseitigen Offline-Anwendungen. Wir setzen Web Sockets ein, um uns mit einem einfachen Chat-Dienst zu unterhalten. Außerdem erfahren Sie, wie es mit HTML5 möglich ist, Nachrichten und Daten über Domains hinweg zu versenden. Sie spielen mit der Geolocation-API und manipulieren den Browserverlauf. Zum Abschluss werfen wir einen Blick auf einige Dinge, die zwar nicht jetzt gleich nützlich sind, aber in naher Zukunft wichtig sein werden.

In Anhang A finden Sie eine Auflistung aller in diesem Buch behandelten Funktionen mit Querverweisen auf die entsprechenden Kapitel. Wir arbeiten in diesem Buch häufig mit jQuery, deshalb gibt Ihnen Anhang B einen kurzen Überblick. Außerdem finden Sie hier Informationen zur Kodierung von Audio- und Videodateien für HTML5.

Vorkenntnisse

Dieses Buch richtet sich in erster Linie an Webentwickler, die ein solides Verständnis von HTML und CSS mitbringen. Wenn Sie gerade erst anfangen, ist dieses Buch trotzdem nützlich für Sie. Ich würde Ihnen dann aber die Bücher Webdesign mit Webstandards [Zel08] und Web Design for Developers [Hog09] ans Herz legen.

Ich gehe außerdem davon aus, dass Sie über ein grundlegendes Verständnis von JavaScript und jQuery[1] verfügen, denn damit implementieren wir viele unserer Ausweichlösungen. Anhang B gibt eine kurze Einführung in jQuery und die grundlegenden Methoden, die wir verwenden werden.

Sie brauchen Firefox 3.6, Google Chrome 5, Opera 10.6 oder Safari 5, um den Code in diesem Buch zu testen. Wahrscheinlich brauchen Sie sogar jeden dieser Browser, um auch alles zu testen, was wir schreiben. Denn jeder Browser macht alles ein bisschen anders.

Außerdem brauchen Sie eine Möglichkeit, Ihre Websites mit dem Internet Explorer zu testen. Nur so können Sie sichergehen, dass unsere Ausweichlösungen auch wirklich funktionieren. Wenn Sie Ihre Beispiele in mehreren Versionen des Internet Explorer testen müssen, können Sie IETester für Windows herunterladen. Die Software unterstützt IE 6, 7 und 8 in einer einzigen Anwendung. Wenn Sie nicht Windows verwenden, sollten Sie darüber nachdenken, eine virtuelle Maschine wie z.B. Virtual Box oder VMware oder einen Service wie etwa CrossBrowserTesting[2] oder MogoTest[3] zu verwenden.



[1] http://www.jquery.com

[2] http://crossbrowsertesting.com/

[3] http://www.mogotest.com/

Online-Ressourcen

Auf der englischen Website zum Buch[4] finden Sie Links auf ein interaktives Diskussionsforum sowie zu den Errata dieses Buchs. Dort finden Sie auch einen Link zum Quellcode für alle Beispiele in diesem Buch. Außerdem können Leser des E-Books auf den grauen Kasten oberhalb der Codeausschnitte klicken, um die Snippets direkt herunterzuladen.

Sollten Sie einen Fehler finden, erstellen Sie bitte einen Eintrag auf der Seite mit den Errata, damit wir uns darum kümmern können. Wenn Sie eine elektronische Version dieses Buchs lesen, finden Sie in der Fußzeile jeder Seite Links, über die Sie ganz einfach Errata übermitteln können.

Außerdem sollten Sie unbedingt den Blog zu diesem Buch besuchen, „Beyond HTML5 and CSS3“.[5] Ich veröffentliche dort entsprechendes Material, Aktualisierungen und funktionierende Beispiele zu diesem Buch.

Sind Sie bereit? Super! Legen wir los mit HTML5 und CSS3.



[4] http://www.pragprog.com/titles/bhh5/

[5] http://www.beyondhtml5andcss3.com/

Kapitel 1. HTML5 und CSS3 im Überblick

HTML5[6] und CSS3[7] sind mehr als lediglich zwei neue Standards, die vom World Wide Web Consortium (W3C) und seinen Arbeitsgruppen vorgeschlagen wurden. Für die Technologien, die Sie jeden Tag verwenden, sind die beiden Standards der nächste Schritt und sollen Ihnen dabei helfen, bessere und modernere Webanwendungen zu entwickeln. Bevor wir tief in die Details von HTML5 und CSS3 einsteigen, sprechen wir zunächst über einige Vorteile von HTML5 und CSS3 sowie über einige Herausforderungen, die sich daraus ergeben.

1.1 Eine Plattform für die Webentwicklung

Eine Menge neuer Funktionen in HTML drehen sich darum, eine bessere Plattform für webbasierte Anwendungen zu entwickeln. Von aussagekräftigeren Tags, besserer Cross-site- und Cross-window-Kommunikation, bis hin zu Animationen und verbesserter Multimedia-Unterstützung – mit HTML5 stehen Entwicklern eine Menge neuer Tools zur Verfügung, die der Verbesserung der User Experience dienen.

Aussagekräftigeres Markup

In jeder HTML-Version wird neues Markup eingeführt. Aber nie zuvor gab es so viele Erweiterungen, die sich direkt auf die Beschreibung von Inhalten beziehen. Elemente für die Definition von Überschriften, Fußzeilen, Navigationsabschnitten, Seitenleisten und Artikeln lernen Sie in Kapitel 2 kennen. Dort behandeln wir auch Messwerte und Fortschrittsbalken und erklären, wie Ihnen benutzerdefinierte Datenattribute dabei helfen können, Daten in Markup abzubilden.

Multimedia mit weniger Plugins

Sie brauchen kein Flash und auch kein Silverlight mehr für Video, Audio und Vektorgrafiken. Flash-basierte Videoplayer sind zwar relativ einfach zu verwenden, funktionieren aber nicht auf den mobilen Geräten von Apple. Da diese Geräte einen wichtigen Markt ausmachen, lernen Sie, wie Sie Video ohne Flash verwenden können: In Kapitel 7, erfahren Sie, wie Sie Audio und Video in HTML5 mit entsprechenden Ausweichlösungen einsetzen können.

Bessere Anwendungen

Entwickler haben alles Mögliche versucht, um umfangreichere, interaktivere Webanwendungen zu erstellen – von ActiveX-Elementen bis hin zu Flash. HTML5 bietet erstaunliche Funktionen, die in einigen Fällen Technologien von Drittanbietern vollkommen überflüssig machen.

Kommunikation mit anderen Dokumenten

Webbrowser verhindern, dass wir Skripten einer Domain dazu nutzen, Skripten auf einer anderen Domain zu verändern oder damit zu kommunizieren. Durch diese Einschränkung werden Endbenutzer vor Cross-Site Scripting geschützt, mit dem nichts ahnenden Besuchern von Webseiten schon allerhand fiese Dinge angetan wurden.

Allerdings führt das dazu, dass überhaupt keine Skripten funktionieren, selbst dann, wenn wir sie selbst schreiben und wissen, dass wir dem Inhalt vertrauen können. HTML5 bietet einen Workaround, der sowohl sicher als auch einfach zu implementieren ist. Wie Sie das zum Laufen bekommen, erfahren Sie im Abschnitt „24 Über Domains hinweg kommunizieren“.

Web Sockets

HTML5 bietet Unterstützung für Web Sockets, mit denen Sie eine dauerhafte Verbindung zu einem Server herstellen können. Anstatt ständig vom Backend aus Fortschrittsaktualisierungen zu pollen, kann Ihre Webseite einen Socket abonnieren, und das Backend kann dann Benachrichtigungen an Ihre Benutzer pushen. Damit werden wir im Abschnitt „25 Chatten mit Web Sockets“ ein bisschen spielen.

Clientseitige Speicherung

Wir tendieren dazu, HTML5 als Webtechnologie zu verstehen. Aber in Verbindung mit der Web Storage- und der WebSQL Database-API können wir Browseranwendungen entwickeln, bei denen die Daten dauerhaft und vollständig auf dem Clientrechner verbleiben. Wie Sie diese APIs verwenden, erfahren Sie in Kapitel 9.

Bessere Benutzeroberflächen

Die Benutzeroberfläche ist ein sehr wichtiger Teil jeder Webanwendung. Und tagtäglich springen wir durch brennende Reifen, um die Browser das zu tun zu lassen, was wir möchten. Für die Gestaltung einer Tabelle oder runder Ecken verwenden wir entweder JavaScript-Bibliotheken oder tonnenweise zusätzliches Markup. Mit HTML5 und CSS3 gehören solche Praktiken der Vergangenheit an.

Bessere Formulare

HTML5 bietet auch verbesserte Steuerelemente für Benutzeroberflächen. Lange Zeit waren wir gezwungen, JavaScript und CSS zu verwenden, um Slider, Kalender-Datepicker und Farbwähler zu bauen. All das gibt es in HTML5 als eigenständige Elemente, ebenso wie Dropdown-Menüs, Kontrollkästchen und Optionsfelder. In Kapitel 3, lernen Sie, wie Sie diese Elemente verwenden können. Auch wenn das noch nicht in jedem Browser so ganz funktioniert, sollten Sie es im Auge behalten – insbesondere dann, wenn Sie webbasierte Anwendungen entwickeln. Neben der erhöhten Benutzerfreundlichkeit auch ohne JavaScript-Bibliotheken gibt es noch einen weiteren Vorteil: mehr Barrierefreiheit. Screenreader und Browser können diese Steuerelemente so implementieren, dass auch Behinderte sie einfach anwenden können.

Verbesserte Barrierefreiheit

Die Beschreibung unserer Inhalte mit den neuen HTML5-Elementen erleichtert es Programmen wie Screenreadern, unsere Inhalte zu verarbeiten. So ist die Navigation einer Website beispielsweise viel leichter zu finden, wenn Sie nur nach dem nav-Tag zu suchen brauchen statt nach einem bestimmten div oder einer ungeordneten Liste. Fußzeilen, Seitenleisten und andere Inhalte können einfach neu angeordnet oder ausgelassen werden. Das Einlesen von Seiten wird allgemein unproblematischer, und damit werden die Erfahrungen für Menschen angenehmer, die auf unterstützende Technologien angewiesen sind. Außerdem kann über die neuen Elementattribute die Funktion von Elementen angegeben werden, sodass Bildschirmlesegeräte diese leichter verarbeiten können. In Kapitel 5, lernen Sie, wie Sie diese neuen Attribute einsetzen, damit sie von aktuellen Bildschirmlesegeräten verwendet werden können.

Fortschrittliche Selektoren

CSS3 bietet Selektoren, mit denen Sie Tabellenzeilen abwechselnd auswählen, alle aktivierten Kontrollkästchen oder sogar den letzten Absatz in einer Gruppe auswählen können. Sie erreichen mehr mit weniger Code und weniger Markup. Dadurch wird es auch viel leichter, HTML zu gestalten, das Sie nicht verändern können. In Kapitel 4, lernen Sie, diese Selektoren effizient einzusetzen.

Visuelle Effekte

Schlagschatten für Texte und Bilder bringen Tiefe in eine Webseite. Verläufe sorgen für eine zusätzliche Dimension. Mit CSS3 können Sie Elementen Schatten und Verläufe hinzufügen, ohne auf Hintergrundbilder oder zusätzliches Markup zurückzugreifen. Sie können Transformationen anwenden, um Ecken abzurunden oder Elemente zu verzerren oder zu drehen. Wie das alles funktioniert, erfahren Sie in Kapitel 8.



[6] Die HTML5-Spezifikation finden Sie unter http://www.w3.org/TR/html5/.

[7] CSS3 ist auf mehrere Module verteilt. Den aktuellen Status können Sie unter http://www.w3.org/Style/CSS/current-work mitverfolgen.

1.2 Abwärtskompatibilität

Einer der entscheidenden Gründe für Sie, HTML5 bereits heute zu verwenden, ist, dass es in den meisten aktuellen Browsern funktioniert. Derzeit können Sie sogar in Internet Explorer 6 mit der Verwendung von HTML5 beginnen und Ihr Markup langsam migrieren. Es wird sogar beim Validierungsservice des W3C korrekt validiert (natürlich nur bedingt, da die Standards immer noch weiterentwickelt werden).

Wenn Sie schon mit HTML oder XML gearbeitet haben, haben Sie die Doctype-Deklaration bereits kennengelernt. Sie dient dazu, Validierern und Editoren mitzuteilen, welche Tags und Attribute verwendet werden können und wie das Dokument geformt sein soll. Und eine Menge Webbrowser stellen darüber fest, wie die Seite dargestellt werden soll. Ein gültiger Doctype lässt Browser oft Seiten im „Standards Mode“ darstellen.

Im Vergleich zu dem eher ausführlichen Doctype XHTML 1.0 Transitional, der für viele Websites verwendet wird

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

ist der HTML5-Doctype lächerlich einfach:

html5_why/index.html

<!DOCTYPE html>

Schreiben Sie das in den oberen Teil Ihres Dokuments, und schon verwenden Sie HTML5.

Natürlich können Sie keines der neuen HTML5-Elemente verwenden, wenn Ihr Zielbrowser diese nicht unterstützt. Aber Ihr Dokument wird bereits als HTML5 validiert.

1.3 Der Weg in die Zukunft ist steinig

Es gibt einige Hürden, die der weiteren Verbreitung von HTML5 und CSS3 im Wege stehen. Manche sind offensichtlich, andere nicht.

Internet Explorer

Der Internet Explorer verfügt derzeit über die größte Anwenderbasis, und die Versionen 8 und darunter bieten eine äußerst schwache Unterstützung für HTML5 und CSS3. Beim IE 9 sieht die Situation schon besser aus, aber er ist noch nicht weit verbreitet. Das bedeutet nicht, dass wir HTML5 und CSS3 nicht trotzdem für unsere Websites verwenden können. Wir bekommen es hin, dass unsere Websites im Internet Explorer funktionieren, sie müssen ja nicht genauso funktionieren wie die Versionen für Chrome und Firefox. Wir müssen lediglich Ausweichlösungen anbieten, sodass wir keine Benutzer verärgern oder Kunden verlieren.

Barrierefreiheit

Die Benutzer müssen mit unseren Websites interagieren können, ganz gleich ob sie seh- oder hörbehindert sind, ältere Browser, langsame Verbindungen oder mobile Geräte verwenden. In HTML5 werden einige neue Elemente eingeführt, zum Beispiel audio, video und canvas. Mit Audio und Video gab es immer schon Schwierigkeiten in puncto Barrierefreiheit, aber das canvas-Element stellt uns vor neue Herausforderungen. Mit diesem Element können wir Vektorbilder über JavaScript innerhalb des HTML-Dokuments erstellen. Hieraus ergeben sich Schwierigkeiten für Sehbehinderte, aber auch für die fünf Prozent der Webbenutzer, die JavaScript deaktiviert haben.[8]

Wir dürfen nicht mit den neuen Technologien davongallopieren und dabei die Barrierefreiheit aus den Augen verlieren. Wir müssen geeignete Ausweichlösungen für die neuen HTML5-Elemente bieten – ebenso wie für Menschen, die den Internet Explorer verwenden.

Veraltete Tags

In HTML5 wurden eine Menge neuer Elemente eingeführt, aber die Spezifikation schafft auch einige gebräuchliche Elemente ab, die Sie eventuell in Ihren Webseiten verwenden.[9] Diese sollten Sie beim Umstieg entfernen:

  • basefont

  • big

  • center

  • font

  • s

  • strike

  • tt

  • u

Einige dieser Tags sind ziemlich veraltet. Aber da draußen finden Sie viele Seiten, die mit visuellen Editoren wie zum Beispiel Dreamweaver bearbeitet werden und deshalb eine Menge font- und center-Tags enthalten.

Neben gestalterischen Elementen wurde auch die Unterstützung von Frames entfernt. Frames waren immer sehr beliebt in Enterprise-Webanwendungen wie zum Beispiel PeopleSoft, Microsoft Outlook Web Access und sogar in speziell entwickelten Portalen. Trotz der weit verbreiteten Verwendung haben Frames so viele Schwierigkeiten im Hinblick auf Benutzerfreundlichkeit und Barrierefreiheit mit sich gebracht, dass man sie loswerden musste. Dementsprechend sind die folgenden Elemente verschwunden:

  • frame

  • frameset

  • noframes

Sie sollten Möglichkeiten finden, das Layout Ihrer Benutzeroberflächen mit regulärem CSS und ein bisschen JavaScript auch ohne Frames zu gestalten. Falls Sie mit Frames dafür sorgen, dass Kopfzeile, Fußzeile und Navigation auf jeder Seite Ihrer Anwendung gleich angezeigt werden, können Sie das auch mit den Tools Ihres Webentwicklungs-Frameworks erreichen. Einige andere Elemente sind verschwunden, weil es bessere Optionen dafür gibt:

  • acronym wird durch abbr ersetzt.

  • applet wird durch object ersetzt.

  • dir wird durch ul ersetzt.

Zusätzlich zu den veralteten Elementen sind auch viele Attribute nicht mehr zulässig. Dazu gehören Darstellungsattribute wie zum Beispiel:

  • align

  • link, vlink, alink und text für das body-Tag

  • bgcolor

  • height und width

  • scrolling für das iframe-Element

  • valign

  • hspace und vspace

  • cellpadding, cellspacing und border für table

Falls Sie für Ihre Links target verwenden, wie z.B. in:

<a href="http://www.google.com" target="_blank">

sollten Sie stattdessen JavaScript verwenden, da auch target abgeschafft wurde.

Das Attribut profile des head-Tags wird auch nicht mehr unterstützt. Das ist etwas, was Sie tendenziell in einer Menge WordPress-Vorlagen finden.

Zu guter Letzt ist das Attribut longdesc für img- und iframe-Elemente verschwunden. Für Verfechter der Barrierefreiheit ist das ein bisschen enttäuschend, da longdesc die allgemein anerkannte Möglichkeit war, Benutzern mit Bildschirmlesegeräten zusätzliche beschreibende Informationen zu bieten.

Falls Sie vorhaben, HTML5 für Ihre vorhandenen Websites zu verwenden, sollten Sie diese Elemente ausfindig machen und entfernen oder durch semantischere Varianten ersetzen. Validieren Sie Ihre Seiten unbedingt mit dem Validierungsservice des W3C[10], der Ihnen dabei helfen wird, veraltete Tags und Attribute aufzuspüren.

Konkurrierende Unternehmensinteressen

Der Internet Explorer ist nicht der einzige Browser, dessen Entwickler die Einführung von HTML5 und CSS3 hinauszögern. Google, Apple und die Mozilla Foundation haben ebenfalls ihre eigenen Vorstellungen und kämpfen um die Vorherrschaft. Sie streiten über die Unterstützung von Video- und Audio-Codecs und bringen ihre Standpunkte in ihren Browser-Versionen klar zum Ausdruck. So spielt Safari beispielsweise MP3 über das audio-Element ab, aber keine ogg-Dateien. Firefox unterstützt dagegen ogg-Dateien, aber keine mp3-Dateien.

Irgendwann werden diese Unterschiede entfallen. Bis dahin können wir lediglich intelligente Entscheidungen darüber treffen, was wir selbst unterstützen – indem wir unsere Implementierungen auf die von unseren Zielgruppen verwendeten Browser beschränken oder alles mehrfach implementieren, für jeden Browser einmal – bis die Standards endgültig feststehen. Es ist aber alles nicht so schlimm, wie es sich anhört. Mehr darüber erfahren Sie in Kapitel 7.

HTML5 und CSS3 befinden sich noch in der Entwicklung

Die Spezifikationen sind noch nicht endgültig. Das bedeutet, dass sich alles innerhalb dieser Spezifikationen ändern kann. Firefox, Chrome und Safari bieten eine gute Unterstützung für HTML5. Aber wenn sich die Spezifikation ändert, werden sich die Browser mit ihr verändern, und dies kann wiederum zu veralteten und defekten Websites führen. Während dieses Buch geschrieben wurde, wurde die CSS3-Eigenschaft box-shadow aus der Spezifikation entfernt und wieder hinzugefügt. Das Protokoll Web Sockets wurde verändert, und die Client-Server-Kommunikation wurde dadurch zunichte gemacht.

Wenn Sie den Fortschritt von HTML5 und CSS3 mitverfolgen und immer auf dem Laufenden bleiben, ist alles gut. Eine ganze Menge der Dinge, die wir in diesem Buch diskutieren, wird lange funktionieren.

Wenn Sie über etwas stolpern, das in einem Ihrer Zielbrowser nicht funktioniert, verwenden Sie einfach JavaScript und Flash als Spachtelmasse, um diese Lücken zu füllen. Sie entwickeln Lösungen, die für alle Benutzer funktionieren. Und im Laufe der Zeit können Sie JavaScript und die anderen Ausweichlösungen nach und nach entfernen, ohne Ihre eigentlichen Implementierungen zu ändern.

Aber bevor Sie zu viel über die Zukunft nachdenken, fangen wir einfach an, mit HTML5 zu arbeiten. Eine ganze Menge neuer struktureller Tags warten darauf, Sie im nächsten Kapitel kennenzulernen. Und wir wollen sie doch nicht so lange warten lassen, oder?



[8] http://visualrevenue.com/blog/2007/08/eu-and-us-javascript-disabled-index.html

[9] http://www.w3.org/TR/html5-diff/

[10] http://validator.w3.org/

Teil I. Bessere Benutzeroberflächen