HTML 5 – Einblick, Überblick, Ausblick
Jens Meiert, 24. September 2009 / 1. Dezember 2009.
Vortrag anlässlich der Best of Accessibility 2009, Düsseldorf sowie der WebTech 2009, Darmstadt.
Vorträge werden inhaltlich nicht aktualisiert. Für den vorliegenden Vortrag gilt, dass HTML 5 derzeit noch Veränderungen unterliegt. Die hier aufgeführten Informationen basieren auf dem Stand von November 2009. Konsultieren Sie im Zweifelsfall und für den letzten Stand die HTML-5-Spezifikation.
Inhalt
Geschichte
- 2003: »XForms Basic«-Vorschlag von Ian Hickson
- 2004 (April-Juni): Gründung der WHATWG (»Web Hypertext Application Technology Working Group«, aus Browser-Herstellern wie Apple, Mozilla und Opera bestehend) als Antwort auf W3C-Prozesse
- 2004: Umbenennung von »XForms Basic« in »Web Forms«, Übernahme durch WHATWG
- 2005: Erste Arbeitsentwürfe für »Web Applications 1.0«
-
2006 (Oktober): Idee der Gründung einer W3C-HTML-Arbeitsgruppe
- Tim Berners-Lee: »Notwendigkeit, HTML inkrementell weiterzuentwickeln«
- WHATWG bleibt bestehen
- 2007 (April/Mai): Beiderseitiger (WHATWG/W3C) Entschluss, HTML 5 auf Web Applications 1.0 aufzubauen
- 2008 (Januar): Erster öffentlicher Arbeitsentwurf (seitens W3C)
- 2009 (Februar): Web Forms 2.0 wird offiziell Teil von HTML 5 (seitens W3C)
- 2009 (Oktober): Angestrebter »Last Call«-Status des Arbeitsentwurfs (seitens WHATWG)
- 2010 (Oktober): Angestrebter »Recommendation«-Status (seitens W3C)
Design
Prinzipien
-
Verbesserung und Erweiterung von HTML-Markup
-
Analyse des aktuellen Gebrauchs von HTML sowie Inhalten
- Beispiel: 2005er »Web Authoring Stats« von Ian Hickson
-
Analyse des aktuellen Gebrauchs von HTML sowie Inhalten
- Definition einer einzelnen Sprache (HTML 5), die in angepasster HTML- sowie XML-Syntax geschrieben werden kann
-
Abwärtskompatibilität durch
- Syntax, die entsprechend mit HTML 4 und XHTML 1 kompatibel ist
- Anforderung, dass User-Agents alte HTML-Bestandteile weiterhin unterstützen müssen (wichtig für bestehende Inhalte)
-
Definition detaillierter Verarbeitungsanweisungen, um interoperable Implementierungen zu erzielen
- Klartext: Vorherige HTML-Spezifikationen beinhalten einiges an »Wischi-Waschi«
- Fokus auf Barrierefreiheit als »eingebautes Konzept« anstelle von Ergänzungen (»Add-ons«) wie
@alt
HTML
- MIME-Typ:
text/html -
Minimales Dokument:
<!DOCTYPE html> <title></title>
XHTML
- MIME-Typ:
application/xhtml+xmloderapplication/xml - DOCTYPE nicht erforderlich, da einziger Zweck das Auslösen des »Standards Mode« ist
-
Minimales Dokument:
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> </head> <body></body> </html>
Baustellen
-
HTML 5 ist noch nicht fertig
- Aber: Selbst wenn formell abgeschlossen, hängt HTML 5 von Browser-Herstellern ab (ausdrückliches Ziel: zwei unabhängige Implementierungen)
- Ein paar Elemente und Attribute müssen noch genauer definiert werden
- Ein paar Funktionen müssen gerade im Hinblick auf Barrierefreiheit noch näher beleuchtet werden
Neuerungen
Entfernte Elemente
acronym(irritierend ‣abbr)applet(‣object)basefont(präsentationsbezogen)big(präsentationsbezogen)center(präsentationsbezogen)dir(‣ul)font(präsentationsbezogen)frame(problematisch für Bedienbarkeit und Barrierefreiheit)frameset(problematisch für Bedienbarkeit und Barrierefreiheit)isindex(‣ andere Formularelemente)noframes(problematisch für Bedienbarkeit und Barrierefreiheit)noscript(in XHTML, da von HTML-Parser abhängend)s(präsentationsbezogen)strike(präsentationsbezogen)tt(präsentationsbezogen)u(präsentationsbezogen)
Entfernte Attribute
abbrundaxisauftdundthalignaufcaption,col,colgroup,div,h1,h2,h3,h4,h5,h6,hr,iframe,img,input,legend,object,p,table,tbody,td,tfoot,th,theadundtralink,link,textundvlinkaufbodyarchive,classid,codebase,codetype,declareundstandbyaufobjectbackgroundaufbodybgcoloraufbody,table,td,th, undtrborderaufobjectundtablecellpaddingundcellspacingauftablecharundcharoffaufcol,colgroup,tbody,td,tfoot,th,theadundtrcharsetundrevaufaundlinkclearaufbrcompactaufdl,menu,olundulframeauftableframeborderaufiframeheightauftdundthhspaceundvspaceaufimgundobjectlongdescaufiframeundimgmarginheightundmarginwidthaufiframenameaufimgnohrefaufareanoshadeaufhrnowrapauftdundthprofileaufheadrulesauftablescrollingaufiframeschemeaufmetascopeauftdshapeundcoordsaufasizeaufhrtargetauflinktypeundvaluetypeaufparamtypeaufli,olundulvalignaufcol,colgroup,tbody,td,tfoot,th,theadundtrversionaufhtmlwidthaufcol,colgroup,hr,pre,table,tdundth
Geänderte Elemente
aohnehrefkann als Platzhalter verwendet werden und nun auch Block-Elemente beinhalten:<a><p>…</a>addresserfährt eine etwas andere Bedeutung im Zusammenhang mit Dokumentabschnitten (Sectioning):<section>…<footer><address>Kontakt: Max Mustermann</address></footer></section>bstellt Text dar, der lediglich »stylistisch abweichend« hinsichtlich der anderen Inhalte ist, ohne dabei besonders wichtig zu sein:Schlüsselwörter: <b>Webentwicklung</b>, <b>Webdesign</b>hrstellt einen Themenwechsel oder eine »Pause« auf Absatzebene dar:<p>…<hr><p>…istellt Text dar, der einer »anderen Stimme oder Stimmung« entspricht oder in anderer Form von den anderen Inhalten abweichend ist, wie technische Begriffe oder Idiome:Wenn <i>Webentwicklung</i> das Einzige ist, um das wir uns Sorgen machen …labellegt den Fokus nicht mehr auf das entsprechende Formularelement, sofern dies nicht Standard für das verwendete System/Plattform istmenuerfährt neuen Gebrauch im Zusammenhang mit Toolbars und Kontextmenüssmallentspricht »Kleingedrucktem«, wie Kommentaren oder rechtlichen Inhalten:<small>Haftungsausschluss: …</small>strongspiegelt Wichtigkeit wider, nicht Betonung
Geänderte Attribute
-
alterfährt spezifischere Regeln:<img src="foo" alt="bar">‣ Inhalt<img src="foo" alt="">‣ Dekoration<img src="foo">‣ möglicherweise Inhalt, aber kein Äquivalent verfügbar (Beispiel: Foto-Uploads) oder notwendig (Beispiel: private E-Mail)<img src="foo" title="baz">‣@titleals Ersatz-»Legende«<img>/<img alt="">‣ Nichts
borderaufimgsollte den Wert0haben (‣ CSS)languageaufscriptsollte den WertJavaScripthaben (»case-insensitive«) (‣ auslassen)nameaufa(‣id)summaryauftable(‣ einleitender Text odercaption)
Neue Elemente
articleals Container für Inhalte, wie Artikel oder Blog-Beiträgeasideals Element für Randbemerkungen, sowohl neben oder als Teil primärer Inhalteaudioundvideonebstsourcefür Multimedia-Inhalte (wobei einige Codec- und API-Fragen noch offen sind beziehungsweise nicht von HTML 5 beantwortet werden):<audio src="foo"></audio>-
canvasals generisches Element für dynamische Inhalte commandfür Nutzerbefehledatalist(zusammen mitinput@list) zur Darstellung vordefinierter Optionen (die unter anderem als Slider dargestellt werden können)detailsfür zusätzliche Informationen oder Bedienelemente im interaktiven Kontextembedals nun in die Familie aufgenommenes Element für Plugin-Inhaltefigurezur Verknüpfung von eingebundenen Inhalten wie Bildern oder Videos mit einer Beschreibung:<figure><dt><img src="foo" alt="bar"><dd>Beschreibung</figure>footerals generisches Fußelement – das nicht unbedingt erst am Ende erscheinen muss – für eine Webseite oder einen Abschnitt:<footer>Letzte Aktualisierung: 12. April 2144.</footer>headerals generisches Kopfelement, zur Verwendung für die gesamte Webseite, Inhaltsverzeichnisse, ähnliches:<header><img src="logo" alt="Firma"></header>hgroupzur Gruppierung von Überschriften:<hgroup><h1>…</h1><h2>…</h2></hgroup>keygenzur Generierung von Schlüssel-/Wert-Paarenmarkals Element zum Hervorheben für Referenzzweckemeterzur Maßangabe:<meter>10 %</meter>,<meter min="0" max="100" value="10"></meter>navals Container für Navigationsbereiche:<nav><ul><li>…</ul></nav>output(alsinput-Gegenstück) zur Ausgabe, beispielsweise skriptbasierter Werteberechnungprogressals Element zur Fortschrittsanzeigerp,rtundrubyfür Ruby-Annotationen (bereits Teil von XHTML 1.1)sectionals generischer Dokumentabschnitt, der zusammen mit Überschriften verwendet werden kann, um die Dokumentstruktur abzubilden:<section><h1>…</h1>…</section><section><h1>…</h1>…</section>timezur Darstellung von Zeit oder Datum:<time>15:00</time>
Neue globale Attribute
accesskeyaria-*für Zugänglichkeitclasscontenteditablecontextmenudata-*dirdraggablehiddeniditemidfür Microdataitempropfür Microdataitemreffür Microdataitemscopefür Microdataitemtypefür Microdatalangrolefür Zugänglichkeitspellcheckstyletabindextitle
Neue Attribute
asyncaufscript, um das Laden und Ausführen von Skripten zu steuernautocomplete,list,min,max,multiple,patternundstepaufinputautofocusaufbutton,input(sofern nichthidden),selectundtextarea, um Fokus auf Formularelemente zu legencharsetaufmeta, um Encoding anzugeben- (
color,date,datetime,datetime-local,email,month,number,range,search,tel,time,urlundweekals@type-Werte aufinput, um Nutzern und Autoren das Leben einfacher zu machen) disabledauffieldset, um einen ganzen Formularabschnitt zu deaktivierenformaufbutton,fieldset,input,output,selectundtextarea, um Formularelemente mit Formularen zu assoziieren (da diese außerhalb von Formularen plaziert werden können)formaction,formenctype,formmethod,formnovalidateundformtargetaufbuttonundinput, um entsprechendeform-Pendants zu überschreibenhreflangundrelaufareazwecks Konsistenz mitaundlinklabelundtypeaufmenu, um weitere UI-Varianten zu ermöglichenmanifestaufhtml, um auf ein »Cache-Manifest« zu verweisen (‣ Offline-Webanwendungen)mediaaufaundareazwecks Konsistenz mitlinknovalidateaufform, um etwaige Formulardatenvalidierung zu überspringenpingaufaundarea, das eine leerzeichenseparierte Liste von URLs akzeptiert, die gepingt werden, wenn Link gefolgt wirdplaceholderaufinputundtextarearequiredaufinput(sofern nichthiddenoder ein Button) undtextarea, um Pflichtfelder anzugebenreversedaufol, um die Listenreihenfolge zu invertierensandboxundseamlessaufiframe, um Inhalte (aus Sicherheitsgründen) zu »sandboxen«, wie beispielsweise Kommentarescopedaufstyle, um »spezifischere« Stylesheets zu ermöglichensizesauflink, um Icon-Größen anzugebenstartaufol(wieder gestattet)targetaufaundarea(wieder gestattet)targetaufbasezwecks Konsistenz mitavalueaufli(wieder gestattet)
HTML 5 und Performance
- Einfacher und kürzer: DTD (
<!DOCTYPE html>), Encoding (<meta charset="utf-8">), MIME-Typen (<style>,<script>, …) -
asyncunddeferzur kontrollierteren Skriptausführung- Ohne
asyncunddefer: Sofortiges Laden der Skripte, wobei restliches Laden verlangsamt werden kann defer(bereits Teil von HTML 4): »Skript verändert nicht das DOM, bitte weitermachen mit Parsen und Rendern«async: »Skript kann ausgeführt werden, sobald verfügbar«
- Ohne
- Auslassen optionaler Tags kann über 20 % Dateigröße einsparen
HTML 5, jetzt?
Ja:
<!DOCTYPE html>wird unterstützt (ruft in anderen Schreibweisen aber nicht unbedingt konsistent Standards Mode hervor)- Neue Elemente können eingesetzt und mittels
document.createElement('element');auch im Internet Explorer »stylebar« gemacht werden <meta charset="">funktioniert ebenso wie einige zuvor proprietäre Elemente oder Attribute (wieembedoder@autocomplete)- Validierer sind vorhanden: validator.nu, validator.w3.org
- Erfahrungen sammeln, Feedback geben: public-html-comments@w3.org, whatwg@whatwg.org