Menu

HTML Attribute: class, id, data-* und boolesche Attribute

Attribute geben einem HTML-Element zusätzliche Informationen: wohin ein Link führt, was ein Bild zeigt, welche CSS-Klasse gilt. Hier lernst du die Syntax, die globalen Attribute, die jedes Element akzeptiert, class und id, boolesche Attribute und data-* Attribute.

Diese Seite enthält ausführbare Editoren - bearbeiten, ausführen und Ausgabe sofort sehen.

Was HTML-Attribute sind

Ein Attribut gibt einem Element zusätzliche Informationen. Es steht im öffnenden Tag und besteht aus einem Namen, einem Gleichheitszeichen und einem Wert in Anführungszeichen: name="value". Ein Element kann beliebig viele Attribute haben, getrennt durch Leerzeichen.

href sagt dem Link, wohin er führt, src und alt beschreiben das Bild, type, placeholder und required konfigurieren das Eingabefeld. Jedes Element hat seine eigenen Attribute, und ein paar (die globalen Attribute weiter unten) funktionieren an jedem Element.

Syntaxregeln

<input type="text" name="city" value="Paris" disabled>
  • Name, Gleichheitszeichen, Wert in Anführungszeichen. Doppelte Anführungszeichen sind die Konvention; einfache funktionieren auch (title='Say "hi"' ist der Weg, ein doppeltes Anführungszeichen in einen Wert zu bekommen).
  • Bei Namen ist Groß- und Kleinschreibung egal. CLASS und class sind dasselbe Attribut. Bei Werten nicht: class="Box" und class="box" sind verschiedene Klassen.
  • Ohne Leerzeichen sind Anführungszeichen optional, setz sie trotzdem. class=big box gibt dem Element die Klasse big und ein zweites, bedeutungsloses Attribut namens box.
  • Die Reihenfolge spielt keine Rolle. <img alt="" src="a.png"> ist dasselbe wie <img src="a.png" alt="">.
  • Jeder Name nur einmal pro Element. Kommt ein Attribut zweimal vor, behält der Browser das erste und verwirft das zweite ohne Meldung.

Boolesche Attribute

Manche Attribute sind entweder an oder aus. Bei ihnen gilt: Anwesenheit bedeutet true, der Wert wird ignoriert. disabled, checked, required, readonly, hidden, multiple, autofocus und open funktionieren alle so.

Der dritte Button ist deaktiviert, obwohl der Wert false lautet, weil der Browser nur prüft, ob das Attribut vorhanden ist. Um ein boolesches Attribut auszuschalten, entfernst du es. In JavaScript macht button.disabled = false genau das.

Das class-Attribut

class gibt einem Element einen oder mehrere Namen, über die CSS und JavaScript es finden. Mehrere Elemente können eine Klasse teilen, und ein Element kann mehrere Klassen haben, getrennt durch Leerzeichen:

Jede zusätzliche Klasse legt ihre Regeln obendrauf. In CSS wählst du eine Klasse mit einem Punkt aus (.card); in JavaScript ändern element.classList.add('featured') und classList.remove sie. Klassen sind der normale Weg zu stylen: Der Großteil deines CSS wird auf Klassen zielen.

Das id-Attribut

id gibt einem Element einen Namen, der auf der Seite eindeutig sein muss. Verwende es, wenn du genau ein Element brauchst: ein Linkziel, ein <label for> oder document.getElementById.

Ein Klick auf das Label fokussiert das Eingabefeld, weil for="email" auf id="email" zeigt. Der Link scrollt zu #pricing, weil das Fragment im href zur id passt.

classid
Wie viele Elemente sie teilen könnenBeliebig vieleEines (eindeutig)
Werte pro ElementMehrere, durch Leerzeichen getrenntEiner
CSS-Selektor.name#name
Typische VerwendungGruppen von Elementen stylenLinkziele, Labels, ein bestimmtes Element in JavaScript

Eine id darf keine Leerzeichen enthalten. Lass sie mit einem Buchstaben beginnen, damit sie in CSS leicht nutzbar bleibt: #2col ist ohne Escaping kein gültiger CSS-Selektor.

Globale Attribute

Diese Attribute funktionieren an jedem Element:

AttributWas es macht
idEindeutiger Name für das Element
classListe von Klassennamen, durch Leerzeichen getrennt
styleInline-CSS, zum Beispiel style="color: red"
titleTooltip-Text, der beim Überfahren mit der Maus erscheint
langSprache des Inhalts, zum Beispiel lang="fr"
dirTextrichtung: ltr, rtl oder auto
hiddenBlendet das Element aus (boolesch)
tabindexMacht ein Element mit Tab fokussierbar oder legt seine Reihenfolge fest
contenteditableLässt den Nutzer den Text des Elements bearbeiten
data-*Deine eigenen Daten, mit JavaScript lesbar

Das lang-Attribut hat eine eigene Seite, weil es Screenreader, Übersetzung und Suche beeinflusst.

data-* Attribute

Wenn du einen eigenen Wert an einem Element speichern willst, stell dem Namen data- voran. Nach dem Präfix ist jeder Name erlaubt, und JavaScript liest die Werte über element.dataset, wobei Bindestriche in camelCase umgewandelt werden:

Aus data-product-id wird dataset.productId. Werte kommen immer als Strings zurück, wandle sie also mit Number() um, bevor du damit rechnest. Auch CSS kann danach auswählen: [data-price="4.50"].

Häufige Fehler

  • class zweimal schreiben. <div class="a" class="b"> behält nur a. Schreib beide in ein Attribut: class="a b".
  • Eine id mehrfach verwenden. Zwei Elemente mit derselben id machen #links, Labels und getElementById kaputt, das nur das erste zurückgibt. Für alles, was sich wiederholt, nimm eine Klasse.
  • disabled="false" oder checked="false". Das Attribut ist immer noch da, also ist es immer noch an. Entferne es stattdessen.
  • Werte mit Leerzeichen ohne Anführungszeichen. alt=My photo setzt alt auf My. Setz jeden Wert in Anführungszeichen.
  • Attribute ohne data- erfinden. <div price="4"> ist ungültiges HTML und kann mit einem künftigen Standardattribut kollidieren. Nimm data-price.

Häufig gestellte Fragen

Was ist ein HTML-Attribut?

Ein Attribut ist eine zusätzliche Information, die im öffnenden Tag als name="value" steht. Es konfiguriert das Element: href legt fest, wohin ein Link führt, src und alt beschreiben ein Bild, über class und id finden CSS und JavaScript das Element.

Was ist der Unterschied zwischen class und id in HTML?

Eine id muss auf der Seite eindeutig sein und kennzeichnet genau ein Element, etwa für #fragment-Links, <label for> und getElementById. Eine class können viele Elemente teilen, und ein Element kann mehrere Klassen haben, getrennt durch Leerzeichen. Zum Stylen nimmst du Klassen.

Wie gebe ich einem HTML-Element mehrere Klassen?

Schreib sie in ein einziges class-Attribut, getrennt durch Leerzeichen: <div class="card featured dark">. class zweimal zu schreiben funktioniert nicht: Der Browser behält nur das erste.

Brauchen HTML-Attribute Anführungszeichen?

Anführungszeichen sind optional, wenn der Wert keine Leerzeichen oder Sonderzeichen enthält, aber immer zu quoten ist die sichere Gewohnheit. class=big box gibt dem Element die Klasse big plus ein separates Attribut namens box.

Warum ist mein Button mit disabled="false" immer noch deaktiviert?

disabled ist ein boolesches Attribut: Seine bloße Anwesenheit bedeutet true, egal was im Wert steht. Um das Element zu aktivieren, entferne das Attribut oder setz in JavaScript button.disabled = false, was es entfernt.

Kann ich eigene HTML-Attribute erfinden?

Nimm das Präfix data-: data-price="12" oder data-user-id="7" sind an jedem Element gültig und in JavaScript über element.dataset lesbar. Erfundene Namen ohne Präfix sind ungültiges HTML.

Coddy programming languages illustration

Lerne mit Coddy zu programmieren

LOS GEHT'S