Wie sicher den Wenigsten entgangen ist, wird fleißig an einem neuen Element für HTML5 gearbeitet. Das <main>-Element soll for the identification of the main content area of a document genutzt werden und damit die bekannten HTML5-Elemente <section>, <header> und Konsorten ergänzen. Stand heute ist das Ganze eigentlich noch nichts weiter, als ein Vorschlag zur Erweiterung des bestehenden Standards, doch da weitgehend Konsens über die Einführung des neuen Elements besteht, kann man sich <main> durchaus schon genauer anschauen.

Wozu <main>?

Das neue Element bietet genau wie alle anderen neuen HTML5-Elemente zwei Dinge: zum einen ist es ein zusätzliches Sprachmittel für die Auszeichnung von Website-Teilbereichen, zum anderen hat es eingebaute ARIA-Funktionen, die wenn das neue Element korrekt benutzt wird, automatisch der Barrierefreiheit der Seite guttun. In Sachen Optik und Verhalten entspricht es genau wie <section> und Konsorten dem, was man vom guten alten <div> kennt.

Gedacht ist <main> für die Auszeichnung des jeweiligen Hauptinhalts einer Seite; im Falle eines Blogs wäre das zum Beispiel die Spalte mit allen Artikeln:

<!doctype html>
<meta charset="utf-8">
<title>Katzenbilder24.com</title>

<header>
  <h1>Katzenbilder-Blog</h1>
  <nav>
    <ul>
      <li><a href="/">Start</a></li>
      <li><a href="/about">Über</a></li>
    </ul>
  </nav>
</header>

<main>
  <article>
    <h2>Flauschiges Kätzchen</h2>
    <p>Text, Bild...</p>
  </article>
  <article>
    <h2>Pelziges Kätzchen</h2>
    <p>Text, Bild...</p>
  </article>
</main>

<aside>
  <section>
    <h2>Tagcloud</h2>
    <p>Tags, Tags, Tags</p>
  </section>
  <section>
    <h2>Blogroll</h2>
    <p>Links, Links, Links</p>
  </section>
</aside>

Anders als <section> hat <main> keinen Einfluss auf die Überschriftenstruktur (Outline) einer Webseite und es darf auch nicht in anderen Abschnitts-Elementen vorkommen – es soll den Hauptinhalt einer Seite markieren, nicht den Hauptinhalt eines Abschnitts der Seite. Ein korrekt verwendetes <main>-Element hat demnach keine <article>, <aside>, <footer>, <header> oder <nav>-Elemente als Vorfahren und ist das einzige Element seiner Art auf der Seite.

Als Bonus hat <main>, wie alle anderen neuen HTML5-Elemente auch, fest eingebaute ARIA-Eigenschaften. Das bedeutet im Endeffekt, dass man bei der korrekten Verwendung von <main> ohne zusätzlichen Aufwand eine zugänglichere Webseite erstellt, da das neue Element automatisch ein role="main" trägt. Dank <main> wird es in Zukunft ziemlich schwierig, diese Annotation zu vergessen.

Braucht man <main> überhaupt?

Einige haben argumentiert, dass man das neue Element gar nicht bräuchte, denn es wäre ja möglich, den Hauptinhalt einer Webseite einfach dadurch zu kennzeichnen, dass man ihn „den Rest“ sein lässt. Beispiel:

<!doctype html>
<meta charset="utf-8">
<title>Katzenbilder24.com</title>

<header>
  <h1>Katzenbilder-Blog</h1>
  <nav>
    <ul>
      <li><a href="/">Start</a></li>
      <li><a href="/about">Über</a></li>
    </ul>
  </nav>
</header>

<article>
  <h2>Flauschiges Kätzchen</h2>
  <p>Text, Bild...</p>
</article>
<article>
  <h2>Pelziges Kätzchen</h2>
  <p>Text, Bild...</p>
</article>

<aside>
  <section>
    <h2>Tagcloud</h2>
    <p>Tags, Tags, Tags</p>
  </section>
  <section>
    <h2>Blogroll</h2>
    <p>Links, Links, Links</p>
  </section>
</aside>

Auch ohne <main> ist klar, was hier der Hauptinhalt ist; alles, was nicht in <header> und <aside> steht, also die Ansammlung der Article-Elemente. Dank role-Attribut ist auch der Barrierefreiheit so viel Genüge getan, wie es mit dem neuen Element der Fall wäre. Es gibt aber vier gute Argumente, die für die Einführung des neuen Elements sprechen:

  • Ein Bereich, der der Hauptinhalt einer Webseite ist, kommt auf vergleichsweise vielen Webseiten vor. Vermutlich auf den meisten. Insofern ist es naheliegend, hierfür ein eigenes Element einzuführen, denn schließlich haben andere häufig auftretende Konstruktionen wie z.B. Navigationen ja auch ihre eigenen Elemente.
  • Aus eigener Erklärbär-Erfahrung kann ich berichten, dass HTML5-Neulinge, wenn man sie Markup schreiben lässt, fast immer den Hauptinhalt in ein Extra-Element Marke <section id="main"> kapseln. Es scheint so zu sein, dass es autorenfreundlich wäre, dafür ein passendes Werkzeug d.h. das neue Element bereitzustellen.
  • Es wäre zwar möglich, manuell role="main"-Attribute zu vergeben, aber es ist zu bezweifeln, dass das wirklich auf breiter Front passiert. Mit dem neuen Element kann das nicht mehr vergessen werden, was (korrekte Verwendung des Elements vorausgesetzt) ohne zusätzlichen Aufwand der Zugänglichkeit der Webseite guttäte – weniger Arbeit für den Autoren, mehr Spaß beim Benutzer.
  • Die HTML Design Principles sagen ganz klar: In case of conflict, consider users over authors over implementors over specifiers over theoretical purity

Bis auf die theorietreue Sparsamkeitsfraktion würden also alle Beteiligten von der Einführung des <main>-Elements profitieren. Bleibt also nur die Frage: wann kommt die Einführung?

Welche Browser unterstützen <main>?

Zur Zeit gibt es das neue (wirklich sehr neue) Element nur als Experimental-Implementierung in Preview-Versionen von Firefox und Chrome. Das ist allerdings nicht zwingend ein Problem, da die Funktionalität von <main> händisch nachgerüstet werden kann. Vorausgesetzt der Browser verarbeitet das Element prinzipiell richtig (was alle Browser außer IE 6, 7 und 8 machen sollten), so muss es nur richtig formatiert und mit den passenden ARIA-Attributen versehen werden. Heißt also: display:block im CSS vergeben und bei der Benutzung in HTML nicht das Attribut role="main" vergessen. Dies wird zwar, sobald alle Browser das neue Element nativ unterstützen, doppelt gemoppelt sein, aber das ist, wenn überhaupt, ein Problem, dessen Lösung man sicher guten Gewissens auf diesen fernen Zeitpunkt vertagen kann.

Wie immer gilt aber, dass in Sachen HTML5-Markup keine übermäßige Eile geboten ist. Alle „alten“ Webseiten werden auch in Zukunft ohne <main> ganz wunderbar funktionieren – nur wenn ein Redesign ansteht, lohnt es sich, über den Einsatz des neuen Elements nachzudenken.