Attribute

Die Attribute wurden in der Übersicht über HTML kurz erläutert. wird es Zeit für einen tieferen Einblick.

Attribute machen HTML so leistungsstark. Attribute sind durch Leerzeichen getrennte Namen und Name/Wert-Paare, die im öffnenden Tag angezeigt werden. mit Informationen über das Element und seine Funktionalität.

Das öffnende Tag, die Attribute und das schließende Tag, gekennzeichnet durch ein HTML-Element

Attribute definieren das Verhalten, die Verknüpfungen und die Funktionalität von Elementen. Einige Attribute sind global, d. h., sie können im öffnenden Tag eines Elements platziert werden. Andere Attribute gelten für mehrere Elemente, aber nicht für alle, während andere Attribute elementspezifisch sind. die nur für ein einzelnes Element relevant sind. In HTML ist für alle Attribute außer booleschen und zum Teil auch Aufzählungsattributen ein Wert erforderlich.

Wenn ein Attributwert ein Leerzeichen oder Sonderzeichen enthält, muss der Wert in Anführungszeichen gesetzt werden. Aus diesem Grund Und für eine bessere Lesbarkeit Zitate werden immer empfohlen.

Bei HTML wird zwar nicht zwischen Groß- und Kleinschreibung unterschieden, einige Attributwerte jedoch schon. Bei Werten, die Teil der HTML-Spezifikation sind, wird die Groß-/Kleinschreibung nicht berücksichtigt. Bei definierten Stringwerten wie Klassen- und ID-Namen wird zwischen Groß- und Kleinschreibung unterschieden. Wenn bei einem Attributwert in HTML zwischen Groß- und Kleinschreibung unterschieden wird, Bei Verwendung als Teil eines Attributselektors in CSS und in JavaScript wird zwischen Groß- und Kleinschreibung unterschieden. sonst nicht.

<!-- the type attribute is case insensitive: these are equivalent -->
<input type="text">
<input type="TeXt">

<!-- the id attribute is case sensitive: they are not equivalent -->
<div id="myId">
<div id="MyID">

Boolesche Attribute

Wenn ein boolesches Attribut vorhanden ist, ist es immer "true". Zu den booleschen Attributen gehören autofocus, inert, checked, disabled, required, reversed, allowfullscreen, default, loop, autoplay, controls, muted, readonly, multiple, und selected. Wenn eines oder mehrere dieser Attribute vorhanden sind, ist das Element z. B. deaktiviert, erforderlich oder schreibgeschützt. Wenn es nicht vorhanden ist, ist es nicht vorhanden.

Boolesche Werte können entweder weggelassen werden, auf eine leere Zeichenfolge festgelegt oder der Name des Attributs sein. aber der Wert muss nicht unbedingt auf den String true festgelegt werden. Alle Werte, einschließlich true, false und 😀, werden als „wahr“ aufgelöst, wenn sie ungültig sind.

Diese drei Tags sind äquivalent:

<input required>
<input required="">
<input required="required">

Wenn der Attributwert „false“ ist, lassen Sie das Attribut weg. Wenn das Attribut auf „true“ gesetzt ist, geben Sie das Attribut an, aber keinen Wert. Zum Beispiel ist required="required" kein gültiger Wert in HTML. Da required jedoch boolesch ist, werden ungültige Werte als wahr aufgelöst. Da ungültige Aufzählungsattribute jedoch nicht unbedingt zu demselben Wert aufgelöst werden wie fehlende Werte, ist es einfacher, in die Gewohnheit, Werte auszulassen, als sich zu merken, welche Attribute boolesche oder Aufzählungszeichen sind und möglicherweise einen ungültigen Wert liefern.

Wenn Sie zwischen „true“ und „false“ wechseln, fügen Sie das Attribut mit JavaScript vollständig hinzu oder entfernen Sie es, anstatt den Wert zu wechseln.

const myMedia = document.getElementById("mediaFile");
myMedia.removeAttribute("muted");
myMedia.setAttribute("muted");

Beachten Sie, dass bei XML-Sprachen wie SVG alle Attribute einen Wert enthalten müssen. Dies gilt auch für boolesche Attribute.

Aufgezählte Attribute

Attribute der Aufzählung werden manchmal mit booleschen Attributen verwechselt. Es handelt sich um HTML-Attribute mit einer begrenzten Anzahl vordefinierter gültiger Werte. Wie boolesche Attribute haben sie einen Standardwert, wenn das Attribut vorhanden ist, aber der Wert fehlt. Wenn Sie beispielsweise <style contenteditable>, Der Standardwert ist <style contenteditable="true">.

Anders als bei booleschen Attributen bedeutet das Weglassen des Attributs jedoch nicht, dass es falsch ist. ein vorhandenes Attribut mit einem fehlenden Wert nicht unbedingt wahr ist; und der Standardwert für ungültige Werte ist nicht unbedingt mit einem Null-String identisch. In Fortsetzung des Beispiels Wenn contenteditable fehlt oder ungültig ist, wird standardmäßig inherit verwendet und kann explizit auf false festgelegt werden.

Der Standardwert hängt vom Attribut ab. Im Gegensatz zu booleschen Werten werden Attribute nicht automatisch als „wahr“ festgelegt. falls vorhanden. Wenn Sie <style contenteditable="false"> enthalten, kann das Element nicht bearbeitet werden. Wenn der Wert ungültig ist, z. B. <style contenteditable="😀">, oder, überraschend, <style contenteditable="contenteditable">, der Wert ist ungültig und wird standardmäßig auf inherit gesetzt.

In den meisten Fällen sind fehlende und ungültige Werte bei Aufzählungsattributen identisch. Wenn beispielsweise das Attribut type auf einer <input> fehlt, jedoch ohne Wert vorhanden ist oder einen ungültigen Wert hat, wird standardmäßig text verwendet. Dies ist zwar üblich, aber keine Regel. Aus diesem Grund ist es wichtig zu wissen, welche Attribute boolesch oder enumeriert sind. lassen Sie Werte weg, damit Sie sie nicht falsch machen, und suchen Sie den Wert nach Bedarf.

Globale Attribute

Globale Attribute sind Attribute, die für jedes HTML-Element festgelegt werden können, auch für Elemente im <head>. Es gibt mehr als 30 globale Attribute. Obwohl all diese Attribute theoretisch jedem HTML-Element hinzugefügt werden können, haben einige globale Attribute keine Auswirkungen. wenn sie für einige Elemente festgelegt ist; Beispielsweise wird die Einstellung von hidden für <meta> als Meta-Inhalt nicht angezeigt.

id

Das globale Attribut id wird verwendet, um eine eindeutige Kennung für ein Element zu definieren. Sie dient vielen Zwecken, darunter: – Ziel des Fragmentbezeichners eines Links – Ein Element für die Skripterstellung identifizieren. – Formularelement mit seinem Label verknüpfen - Bereitstellung eines Labels oder einer Beschreibung für Hilfstechnologien - Ausrichtung auf Designs mit (hoher Spezifität oder als Attributselektoren) im CSS

Der Wert id ist ein String ohne Leerzeichen. Wenn es ein Leerzeichen enthält, wird das Dokument nicht beschädigt, Sie müssen es jedoch auf das id durch Escape-Zeichen im HTML-, CSS- und JS-Code. Alle anderen Zeichen sind gültig. Ein id-Wert kann 😀 oder .class sein. ist aber keine gute Idee. Um das Programmieren für Ihr aktuelles und zukünftiges Ich zu vereinfachen, wandeln Sie das erste Zeichen des id in einen Buchstaben um, Verwenden Sie nur ASCII-Buchstaben und Ziffern sowie _ und -. Es empfiehlt sich, eine Namenskonvention für id zu erstellen und diese dann beizubehalten. da bei id-Werten zwischen Groß- und Kleinschreibung unterschieden wird.

Die id muss für das Dokument eindeutig sein. Das Layout deiner Seite funktioniert wahrscheinlich auch genauso, wenn id mehrmals verwendet wird. Ihre Interaktionen mit JavaScript, Links und Elementen funktionieren jedoch möglicherweise nicht wie erwartet.

Die Navigationsleiste enthält vier Links. Auf das Link-Element kommen wir später noch näher, aber für den Moment sind Links nicht eingeschränkt. auf HTTP-basierte URLs. Sie können Fragmentbezeichner für Abschnitte der Seite im aktuellen Dokument (oder in anderen Dokumenten) sein.

Auf der Website des Workshops zum maschinellen Lernen enthält die Navigationsleiste in der Kopfzeile der Seite vier Links:

Das href-Attribut enthält den Hyperlink, zu dem der Nutzer beim Aktivieren des Links weitergeleitet wird. Wenn eine URL ein Rautezeichen (#) enthält gefolgt von einer Zeichenfolge, ist diese Zeichenfolge eine Fragmentkennung. Wenn dieser String mit einem id eines Elements in der Webseite, ist das Fragment ein Anker oder ein Lesezeichen für dieses Element. Der Browser scrollt zu dem Punkt, an dem der Anker definiert ist.

Diese vier Links verweisen auf vier Bereiche unserer Seite, die durch ihr id-Attribut gekennzeichnet sind. Wenn der Nutzer auf eine der vier Links in der Navigationsleiste, das über die Fragment-ID verlinkte Element, das Element mit der übereinstimmenden ID Scrollt in die Ansicht mit Minus #.

Der Inhalt des <main>-Workshops zum maschinellen Lernen ist in vier Abschnitte mit IDs unterteilt. Wenn der Websitebesucher auf eine der Links im <nav> enthält, wird der Abschnitt mit dieser Fragment-ID sichtbar. Das Markup sieht in etwa so aus:

<section id="reg">
  <h2>Machine Learning Workshop Tickets</h2>
</section>

<section id="about">
  <h2>What you'll learn</h2>
</section>

<section id="teachers">
  <h2>Your Instructors</h2>
  <h3>Hal 9000 <span>&amp;</span> EVE</h3>
</section>

<section id="feedback">
  <h2>What it's like to learn good and do other stuff good too</h2>
</section>

Beim Vergleich der Fragmentkennungen in den <nav>-Links stellen Sie fest, dass jeder mit dem id eines <section> in <main> übereinstimmt. Der Browser gibt uns einen kostenlosen Top-of-Page- . Wenn du href="#top" (Groß-/Kleinschreibung nicht berücksichtigend oder einfach href="#") festlegst, scrollt die Nutzenden ganz oben auf der Seite.

Das Rautezeichen in href ist nicht Teil der Fragment-ID. Die Fragmentkennung ist immer die letzte Teil der URL und wird nicht an den Server gesendet.

CSS-Selektoren

In CSS können Sie ein Targeting auf jeden Bereich mit einem ID-Selektor wie #feedback vornehmen. Wenn die Spezifität geringer ist, können Sie die Groß- und Kleinschreibung berücksichtigen. Attributselektor [id="feedback"].

Skripting

Auf MLW.com gibt es nur ein Easter Egg für Mausnutzer. Mit einem Klick auf den Lichtschalter können Sie die Seite ein- und ausschalten.

Das Markup für das Bild des Lichtschalters lautet: html <img src="svg/switch2.svg" id="switch" alt="light switch" class="light" /> Das Attribut id kann als Parameter für die Methode getElementById() und mit dem Präfix # als Teil eines -Parameter für die Methoden querySelector() und querySelectorAll().

const switchViaID = document.getElementById("switch");
const switchViaSelector = document.querySelector("#switch");

Unsere einzige JavaScript-Funktion nutzt diese Fähigkeit, um Elemente nach ihrem id-Attribut auszurichten:

<script>
  /* switch is a reserved word in js, so we us onoff instead */
  const onoff = document.getElementById('switch');
  onoff.addEventListener('click', function(){
    document.body.classList.toggle('black');
  });
</script>

<label>

Das HTML-<label>-Element hat ein for-Attribut, das als Wert den id des Formularsteuerelements annimmt, mit dem es verknüpft ist. Wenn Sie ein explizites Label erstellen, indem Sie ein id in jedes Formularsteuerelement einfügen und jedes mit dem for-Attribut des Labels verknüpfen, dass jedes Formularsteuerelement ein Label hat.

Jedes Label kann genau einem Formularsteuerelement zugeordnet werden, einem Formularsteuerelement kann jedoch mehr als ein Label zugeordnet sein.

Wenn das Formularsteuerelement zwischen dem öffnenden und dem schließenden <label>-Tag verschachtelt ist, werden die Attribute for und id sind nicht erforderlich: Dies wird als „implizit“ bezeichnet. . Labels informieren alle Nutzer darüber, wofür die einzelnen Formularsteuerelemente gedacht sind.

<label>
  Send me a reminder <input type="number" name="min"> before the workshop resumes
</label>.

Durch die Verknüpfung von for und id werden die Informationen für Nutzer von Hilfstechnologien verfügbar gemacht. Außerdem Wenn Sie auf eine beliebige Stelle auf einem Label klicken, wird das zugehörige Element hervorgehoben und der Klickbereich des Steuerelements vergrößert. Das ist nicht nur hilfreich, für Menschen mit Feinmotorik, sodass die Maus weniger genau ist; Außerdem können Nutzende von Mobilgeräten ihre Finger breiter bedienen als die Funkschnittstelle. Schaltfläche.

In diesem Codebeispiel ist die gefälschte fünfte Frage eines gefälschten Quiz eine Multiple-Choice-Frage mit Einzelauswahl. Jedes Formularsteuerelement hat eine explizite Label mit einer eindeutigen id für jedes Label. Um sicherzustellen, dass wir nicht versehentlich eine ID duplizieren, ist der ID-Wert eine Kombination aus Fragenummer und -wert.

Beim Einbinden von Optionsfeldern sind alle gleichnamigen Schaltflächen in einem <fieldset> eingeschlossen, da die Labels den Wert der Optionsfelder beschreiben. Dabei ist <legend> das Label bzw. die Frage für den gesamten Satz.

Andere Verwendungsmöglichkeiten der Bedienungshilfen

Die Verwendung von id im Hinblick auf Barrierefreiheit und Nutzerfreundlichkeit ist nicht auf Labels beschränkt. In der Einführung in den Text wird <section> wurde in eine regionale Sehenswürdigkeit umgewandelt, indem der id eines <h2> als Wert des aria-labelledby der <section> angegeben wurde, der bereitgestellt werden soll. den barrierefreien Namen:

<section id="about" aria-labelledby="about_heading">
<h2 id="about_heading">What you'll learn</h2>

Es gibt über 50 aria-*-Zustände und -Eigenschaften, die zur Gewährleistung der Barrierefreiheit verwendet werden können. aria-labelledby, aria-describedby aria-details und aria-owns verwenden als Wert eine durch Leerzeichen getrennte id-Referenzliste. aria-activedescendant, die bezeichnet das aktuell fokussierte untergeordnete Element und verwendet als Wert einen einzelnen id-Verweis: den Wert des einzelnen Elements mit Fokus (es kann jeweils nur ein Element fokussiert werden).

class

Das Attribut class bietet eine zusätzliche Möglichkeit, Elemente mit CSS (und JavaScript) auszurichten, dient aber keinem anderen Zweck in HTML, wobei diese auch von Frameworks und Komponentenbibliotheken verwendet werden können. Das Klassenattribut verwendet als Wert eine durch Leerzeichen getrennte Liste der Klassen für das Element, bei der die Groß- und Kleinschreibung berücksichtigt wird.

Wenn Sie eine Soundsemantik erstellen, können Elemente auf der Grundlage ihrer Position und Funktion für das Targeting ausgewählt werden. Klangstruktur ermöglicht die Verwendung von untergeordneten Elementenselektoren, relationalen Selektoren und Attributselektoren. Wenn Sie mehr über Attribute erfahren, in diesem Abschnitt überlegen, wie Elemente mit denselben Attributen oder Attributwerten formatiert werden können. Nicht, dass Sie das Attribut class nicht verwenden, ist es nur so, dass den meisten Entwicklern nicht bewusst ist, dass dies häufig nicht erforderlich ist.

Bisher hat MLW noch keine Klassen verwendet. Kann eine Website ohne einen einzelnen Klassennamen gestartet werden? Mal sehen.

style

Das Attribut style ermöglicht die Anwendung von Inline-Stilen. Das sind Stile, die auf das einzelne Element angewendet werden, für das das Attribut festgelegt ist. Das Attribut style verwendet als Wert CSS-Eigenschaftswertpaare, wobei die Syntax des Werts der des Inhalts eines CSS-Stilblock: Auf Eigenschaften folgt wie in CSS ein Doppelpunkt. Semikolons schließen jede Deklaration nach dem Wert ab.

Die Stile werden nur auf das Element angewendet, für das das Attribut festgelegt ist, wobei untergeordnete Elemente übernommene Eigenschaftswerte übernehmen, wenn dies nicht der Fall ist. von anderen Stildeklarationen für verschachtelte Elemente oder in <style>-Blöcken oder Style Sheets überschrieben werden. Da der Wert das Äquivalent des Inhalts enthält, eines einzelnen Stilblocks, der nur auf dieses Element angewendet wurde, kann er nicht für generierten Inhalt, nicht zum Erstellen von Keyframe-Animationen oder zum Anwenden von anderen At-Regeln.

style ist zwar tatsächlich ein globales Attribut, aber seine Verwendung wird nicht empfohlen. Definieren Sie Stile stattdessen in einer oder mehreren separaten Dateien. Das Attribut style kann sich jedoch bei der Entwicklung als nützlich erweisen, um eine schnelle Gestaltung zu ermöglichen, z. B. zu Testzwecken. Nehmen Sie dann „Lösung“ und fügen Sie ihn in die verknüpfte CSS-Datei ein.

tabindex

Sie können jedem Element das Attribut tabindex hinzufügen, damit es in den Fokus rückt. Der Wert tabindex definiert, ob er wird zur TAB-Reihenfolge hinzugefügt und optional in eine nicht standardmäßige TAB-Reihenfolge.

Das Attribut tabindex verwendet als Wert eine Ganzzahl. Ein negativer Wert (die Konvention ist die Verwendung von -1) macht ein Element kompatibel. z. B. über JavaScript, aber das Element wird nicht in die Tabulatortaste eingefügt. Ein tabindex-Wert von 0 macht Das Element ist über die Tabulatortaste erreichbar und fokussierbar. Dadurch wird es zur standardmäßigen TAB-Reihenfolge der Seite in Quellcodereihenfolge hinzugefügt. Ein Wert von 1 oder mehr setzt das Element in eine priorisierte Fokussequenz und wird nicht empfohlen.

Diese Seite enthält eine Funktion zum Teilen über ein benutzerdefiniertes <share-action>-Element, das als <button> fungiert. Der tabindex von null ist enthalten, um das benutzerdefinierte Element in die standardmäßige Tastaturreihenfolge der Tabulatortaste einzufügen:

<share-action authors="@estellevw" data-action="click" data-category="web.dev" data-icon="share" data-label="share, twitter" role="button" tabindex="0">
  <svg aria-label="share" role="img" xmlns="http://www.w3.org/2000/svg">
    <use href="#shareIcon" />
  </svg>
  <span>Share</span>
</share-action>

Das role von button informiert Screenreader-Nutzer darüber, dass sich dieses Element wie eine Schaltfläche verhalten soll. wird mithilfe von JavaScript sichergestellt, die versprochene Funktionalität der Schaltfläche eingehalten wird; einschließlich der Verarbeitung von click- und keydown-Ereignissen sowie der Eingabetaste und Leertaste.

Formularsteuerelemente, Links, Schaltflächen und Inhalte, die bearbeitet werden können, können hervorgehoben werden. wenn ein Nutzer die Tabulatortaste drückt, Der Fokus wird so zum nächsten fokussierbaren Element bewegt, als wäre tabindex="0" festgelegt worden. Andere Elemente sind standardmäßig nicht fokussierbar. tabindex hinzufügen fokussiert werden können, wenn dies nicht der Fall wäre.

Wenn ein Dokument Elemente mit einem tabindex von 1 oder mehr enthält, sind sie in einer separaten Tabsequenz enthalten. Wie Sie im Codepen sehen, Die Tabulatortaste beginnt in einer separaten Reihenfolge, in der Reihenfolge vom niedrigsten zum höchsten Wert, bevor sie in der Reihenfolge der Quelle in der regulären Sequenz durchlaufen werden.

Eine Änderung der TAB-Reihenfolge kann eine wirklich schlechte User Experience nach sich ziehen. Es ist schwierig, sich bei der Navigation auf Hilfstechnologien wie Tastaturen und Screenreader zu verlassen. für Ihre Inhalte. Außerdem ist die Verwaltung und Wartung für Entwickler schwierig. Konzentration ist wichtig. gibt es ein ganzes Modul, in dem es um Fokus und Reihenfolge geht.

role

Das Attribut role ist Teil der ARIA-Spezifikation. und nicht der WHATWG HMTL-Spezifikation. Das Attribut role kann werden verwendet, um Inhalten eine semantische Bedeutung zu verleihen. So können Screenreader Website-Nutzer über die erwartete Nutzerinteraktion eines Objekts informieren.

Es gibt einige gängige UI-Widgets, wie Kombinationsfelder, Menüleisten, Tablisten, und Treesgrids, die kein natives HTML-Äquivalent haben. Wenn Sie beispielsweise ein Designmuster mit Tabs erstellen, werden tab, tablist und tabpanel-Rollen können verwendet werden. Jemand, der physisch sehen kann Die Benutzeroberfläche hat Erfahrung darin, im Widget zu navigieren und verschiedene Bereiche durch Klicken auf die zugehörigen Tabs sichtbar zu machen. Wenn du die Rolle tab in <button role="tab"> einfügst, wenn eine Gruppe von Schaltflächen verwendet wird, um verschiedene Bereiche anzuzeigen, weiß der Screenreader-Nutzer, dass der aktuell hervorgehobene <button> ein zugehöriges Steuerfeld einblenden kann, anstatt eine typische schaltflächenähnliche Funktion zu implementieren.

Das Attribut role wirkt sich nicht auf das Browserverhalten aus und verändert auch nicht die Interaktionen mit Tastatur oder Zeigegerät, sodass role="button" zu einem <span> hinzugefügt wird. nicht in <button>. Aus diesem Grund wird empfohlen, semantische HTML-Elemente für den vorgesehenen Zweck zu verwenden. Wenn Sie jedoch das richtige Element nicht möglich ist, ermöglicht das Attribut role, Screenreader-Nutzer darüber zu informieren, wenn ein nicht semantisches Element nachgerüstet wurde. die Rolle eines semantischen Elements.

contenteditable

Ein Element, bei dem das Attribut contenteditable auf true gesetzt ist, ist bearbeitbar, fokussierbar und wird der TAB-Reihenfolge wie folgt hinzugefügt: tabindex="0" wurden festgelegt. Contenteditable ist ein Aufzählungsattribut, das die Werte true und false mit dem Standardwert inherit unterstützt Das Attribut ist nicht vorhanden oder hat einen ungültigen Wert.

Die folgenden drei öffnenden Tags sind äquivalent:

<style contenteditable>
<style contenteditable="">
<style contenteditable="true">

Wenn Sie <style contenteditable="false"> einfügen, ist das Element nicht bearbeitbar, es sei denn, es ist standardmäßig bearbeitbar, z. B. ein <textarea>. Wenn der Wert ungültig ist, z. B. <style contenteditable="😀"> oder <style contenteditable="contenteditable">, wird standardmäßig inherit verwendet.

Wenn Sie zwischen den Status wechseln möchten, fragen Sie den Wert der schreibgeschützten Eigenschaft HTMLElement.isContentEditable ab.

const editor = document.getElementById("myElement");
if(editor.contentEditable) {
  editor.setAttribute("contenteditable", "false");
} else {
  editor.setAttribute("contenteditable", "");
}

Alternativ kann diese Eigenschaft angegeben werden, indem editor.contentEditable auf true, false oder inherit gesetzt wird.

Globale Attribute können auf alle Elemente angewendet werden, auch auf <style>-Elemente. Sie können Attribute und ein wenig CSS verwenden, um einen Live-CSS-Editor zu erstellen.

<style contenteditable>
style {
  color: inherit;
  display:block;
  border: 1px solid;
  font: inherit;
  font-family: monospace;
  padding:1em;
  border-radius: 1em;
  white-space: pre;
}
</style>

Versuchen Sie, den color von style in einen anderen Wert als inherit zu ändern. Versuchen Sie dann, den style in einen p-Selektor zu ändern. Entfernen Sie die Anzeigeeigenschaft nicht, sonst verschwindet der Stilblock.

Benutzerdefinierte Attribute

Wir haben uns bisher nur an der Oberfläche der globalen HTML-Attribute beschäftigt. Es gibt noch mehr Attribute, die nur für ein oder eine begrenzte Gruppe von Elementen gelten. Auch bei Hunderten definierten Attributen kann es notwendig sein, ein Attribut zu benötigen, das nicht in der Spezifikation enthalten ist. HTML kann Ihnen dabei helfen.

Sie können ein beliebiges benutzerdefiniertes Attribut erstellen, indem Sie das Präfix data- hinzufügen. Sie können Ihrem Attribut einen beliebigen Namen geben, der mit data- beginnt gefolgt von einer Reihe von Kleinbuchstaben, die nicht mit xml beginnen und keinen Doppelpunkt (:) enthalten.

HTML ist fehlertolerant und funktioniert nicht, wenn Sie nicht unterstützte Attribute erstellen, die nicht mit data beginnen, oder selbst wenn Sie Ihr benutzerdefiniertes Attribut mit xml oder : einfügen, hat das Erstellen gültiger benutzerdefinierter Attribute, die mit data- beginnen, Vorteile. Bei benutzerdefinierten Datenattributen wissen Sie, dass Sie nicht versehentlich einen vorhandenen Attributnamen verwenden. Benutzerdefinierte Datenattribute sind zukunftssicher.

Zwar implementieren Browser kein Standardverhalten für bestimmte Attribute mit dem Präfix data-, aber es gibt eine integrierte Dataset API. um Ihre benutzerdefinierten Attribute zu durchlaufen. Benutzerdefinierte Eigenschaften sind eine hervorragende Möglichkeit, anwendungsspezifische Informationen zu vermitteln. über JavaScript senden. Benutzerdefinierte Attribute zu Elementen im Format data-name hinzufügen und über das DOM mit dataset[name] darauf zugreifen für das betreffende Element.

<blockquote data-machine-learning="workshop"
  data-first-name="Blendan" data-last-name="Smooth"
  data-formerly="Margarita Maker" data-aspiring="Load Balancer"
  data-year-graduated="2022">
  HAL and EVE could teach a fan to blow hot air.
</blockquote>

Sie können getAttribute() mit dem vollständigen Attributnamen oder die einfachere dataset-Property verwenden.

el.dataset["machineLearning"]; // workshop
e.dataset.machineLearning; // workshop

Das Attribut dataset gibt ein DOMStringMap-Objekt der data--Attribute jedes Elements zurück. Es gibt mehrere benutzerdefinierte Attribute, am <blockquote>. Das Dataset-Attribut bedeutet, dass Sie diese benutzerdefinierten Attribute nicht kennen müssen, um auf ihre Namen und Werte:

for (let key in el.dataset) {
  customObject[key] = el.dataset[key];
}

Die Attribute in diesem Artikel sind global, d. h. sie können auf jedes HTML-Element angewendet werden (obwohl sie nicht alle Auswirkungen auf dieser Elemente). Als Nächstes werfen wir einen Blick auf die beiden Attribute aus dem Einführungsbild, die wir nicht behandelt haben – target und href – und einige weitere elementspezifische Attribute.

Wissen testen

Testen Sie Ihr Wissen über Attribute.

Ein id muss im Dokument eindeutig sein.

Falsch
Bitte versuchen Sie es noch einmal.
Richtig
Richtig!

Wählen Sie das korrekt formatierte benutzerdefinierte Attribut aus.

data-birthday
Richtig
birthday
Bitte versuchen Sie es noch einmal.
data:birthday
Erneut versuchen