<button>: Das Button-Element

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

* Some parts of this feature may have varying levels of support.

Das <button>-HTML-Element ist ein interaktives Element, das von einem Benutzer durch Maus, Tastatur, Finger, Sprachbefehl oder andere unterstützende Technologien aktiviert wird. Sobald es aktiviert ist, führt es eine Aktion aus, wie das Abschicken eines Formulars oder das Öffnen eines Dialogs.

Standardmäßig werden HTML-Buttons in einem Stil präsentiert, der der Plattform ähnelt, auf der der User-Agent läuft, jedoch können Sie das Erscheinungsbild von Buttons mit CSS ändern.

Probieren Sie es aus

<button class="favorite styled" type="button">Add to favorites</button>
.styled {
  border: 0;
  line-height: 2.5;
  padding: 0 20px;
  font-size: 1rem;
  text-align: center;
  color: #fff;
  text-shadow: 1px 1px 1px #000;
  border-radius: 10px;
  background-color: rgb(220 0 0);
  background-image: linear-gradient(
    to top left,
    rgb(0 0 0 / 0.2),
    rgb(0 0 0 / 0.2) 30%,
    rgb(0 0 0 / 0)
  );
  box-shadow:
    inset 2px 2px 3px rgb(255 255 255 / 0.6),
    inset -2px -2px 3px rgb(0 0 0 / 0.6);
}

.styled:hover {
  background-color: red;
}

.styled:active {
  box-shadow:
    inset -2px -2px 3px rgb(255 255 255 / 0.6),
    inset 2px 2px 3px rgb(0 0 0 / 0.6);
}

Attribute

Diese Elementattribute beinhalten die globalen Attribute.

autofocus

Dieses Boolean-Attribut gibt an, dass der Button den Eingabefokus haben sollte, wenn die Seite geladen wird. Nur ein Element in einem Dokument kann dieses Attribut haben.

command

Gibt die Aktion an, die auf einem von einem Steuer-<button> kontrollierten Element ausgeführt werden soll, angegeben durch das commandfor-Attribut. Die möglichen Werte sind:

"show-modal"

Der Button zeigt einen <dialog> als Modal an. Wenn der Dialog bereits modal ist, wird keine Aktion ausgeführt. Dies ist ein deklaratives Äquivalent zum Aufruf der Methode .showModal() auf dem Dialog-Element.

"close"

Der Button schließt ein <dialog>-Element. Wenn der Dialog bereits geschlossen ist, wird keine Aktion ausgeführt. Dies ist ein deklaratives Äquivalent zum Aufruf der Methode .close() auf dem Dialog-Element.

"request-close"

Der Button fordert das Schließen eines <dialog>-Elements an. Wenn der Dialog bereits geschlossen ist, wird keine Aktion ausgeführt. Dies ist ein deklaratives Äquivalent zum Aufruf der Methode .requestClose() auf dem Dialog-Element.

"show-popover"

Der Button zeigt ein verstecktes Popover an. Wenn Sie versuchen, ein bereits angezeigtes Popover anzuzeigen, wird keine Aktion ausgeführt. Siehe Popover API für weitere Details. Dies entspricht popovertargetaction mit dem Wert "show". Dies ist ein deklaratives Äquivalent zum Aufruf der Methode .showPopover() auf dem Popover-Element.

"hide-popover"

Der Button verbirgt ein angezeigtes Popover. Wenn Sie versuchen, ein bereits verstecktes Popover zu verbergen, wird keine Aktion ausgeführt. Siehe Popover API für weitere Details. Dies entspricht popovertargetaction mit dem Wert "hide". Dies ist ein deklaratives Äquivalent zum Aufruf der Methode .hidePopover() auf dem Popover-Element.

"toggle-popover"

Der Button schaltet ein Popover zwischen sichtbar und verborgen um. Wenn das Popover verborgen ist, wird es angezeigt; wenn das Popover angezeigt wird, wird es verborgen. Siehe Popover API für weitere Details. Dies entspricht popovertargetaction mit dem Wert "toggle". Dies ist ein deklaratives Äquivalent zum Aufruf der Methode .togglePopover() auf dem Popover-Element.

Benutzerdefinierte Werte

Dieses Attribut kann benutzerdefinierte Werte darstellen, die mit zwei Bindestrichen (--) gekennzeichnet sind. Buttons mit einem benutzerdefinierten Wert lösen das CommandEvent auf dem gesteuerten Element aus.

commandfor

Verwandelt ein <button>-Element in einen Befehlsbutton, das das angegebene interaktive Element steuert; nimmt die ID des zu steuernden Elements als Wert. Dies ist eine allgemeinere Version von popovertarget.

disabled

Dieses Boolean-Attribut verhindert, dass Benutzer mit dem Button interagieren: er kann nicht gedrückt oder fokussiert werden.

form

Das <form>-Element, das mit dem Button assoziiert werden soll (sein Form Owner). Der Wert dieses Attributs muss die id eines <form> im selben Dokument sein. (Wenn dieses Attribut nicht gesetzt ist, ist das <button> mit seinem Vorfahren <form>-Element assoziiert, falls vorhanden.)

Dieses Attribut ermöglicht das Verknüpfen von <button>-Elementen mit <form>-Elementen überall im Dokument, nicht nur innerhalb eines <form>. Es kann auch ein Vorfahren-<form>-Element überschreiben.

formaction

Die URL, die die vom Button übermittelten Informationen verarbeitet. Überschreibt das action-Attribut des Form-Owners des Buttons. Tut nichts, wenn kein Form-Owner vorhanden ist.

formenctype

Wenn der Button ein Submit-Button ist (innerhalb/verknüpft mit einem <form> und nicht type="button" hat), wird angegeben, wie die abgeschickten Formulardaten codiert werden sollen. Mögliche Werte:

  • application/x-www-form-urlencoded: Der Standard, wenn das Attribut nicht verwendet wird.
  • multipart/form-data: Wird verwendet, um <input>-Elemente mit ihren type-Attributen auf file zu setzen.
  • text/plain: Als Debugging-Hilfe angegeben; sollte nicht für echte Formularübermittlungen verwendet werden.

Wenn dieses Attribut angegeben ist, überschreibt es das enctype-Attribut des Form-Owners des Buttons.

formmethod

Wenn der Button ein Submit-Button ist (innerhalb/verknüpft mit einem <form> und nicht type="button" hat), gibt dieses Attribut die verwendete HTTP-Methode zur Übermittlung des Formulars an. Mögliche Werte:

  • post: Die Daten des Formulars werden im Body der HTTP-Anfrage zur Übermittlung an den Server eingefügt. Verwenden Sie dies, wenn das Formular Informationen enthält, die nicht öffentlich sein sollten, wie Anmeldeinformationen.
  • get: Die Formulardaten werden an die action-URL des Formulars angehängt, mit einem ? als Trennzeichen, und die resultierende URL wird an den Server gesendet. Verwenden Sie diese Methode, wenn das Formular keine Seiteneffekte hat, wie Suchformulare.
  • dialog: Diese Methode wird verwendet, um anzuzeigen, dass der Button den Dialog schließt, mit dem er verbunden ist, und die Formulardaten überhaupt nicht übermittelt.

Wenn dieses Attribut angegeben ist, überschreibt es das method-Attribut des Form-Owners des Buttons.

formnovalidate

Wenn der Button ein Submit-Button ist, gibt dieses Boolean-Attribut an, dass das Formular nicht validiert werden soll, wenn es übermittelt wird. Wenn dieses Attribut gesetzt ist, überschreibt es das novalidate-Attribut des Form-Owners des Buttons.

Dieses Attribut ist auch auf <input type="image"> und <input type="submit"> verfügbar.

formtarget

Wenn der Button ein Submit-Button ist, ist dieses Attribut ein vom Autor definierter Name oder ein standardisierter, unterstrichpräfigierter Schlüsselwort, der angibt, wo die Antwort auf das Übermitteln des Formulars angezeigt werden soll. Dies ist der name von oder das Schlüsselwort für einen Browsing-Kontext (einen Tab, ein Fenster oder <iframe>). Wenn dieses Attribut angegeben ist, überschreibt es das target-Attribut des Form-Owners des Buttons. Die folgenden Schlüsselwörter haben besondere Bedeutungen:

  • _self: Die Antwort wird im selben Browsing-Kontext wie der aktuelle geladen. Dies ist der Standard, wenn das Attribut nicht angegeben ist.
  • _blank: Die Antwort wird in einem neuen, unbenannten Browsing-Kontext geladen – normalerweise ein neuer Tab oder ein Fenster, je nach den Einstellungen des Browsers des Benutzers.
  • _parent: Die Antwort wird im übergeordneten Browsing-Kontext des aktuellen geladen. Wenn es keinen Eltern gibt, verhält sich diese Option genauso wie _self.
  • _top: Die Antwort wird im obersten Browsing-Kontext geladen (das heißt, der Browsing-Kontext, der ein Vorfahr des aktuellen ist und keinen Eltern hat). Wenn es keinen Eltern gibt, verhält sich diese Option genauso wie _self.
name

Der Name des Buttons, übermittelt als ein Paar mit dem value des Buttons als Teil der Formulardaten, wenn dieser Button verwendet wird, um das Formular zu übermitteln.

popovertarget

Verwandelt ein <button>-Element in einen Popover-Steuerbutton; nimmt die ID des zu steuernden Popover-Elements als Wert. Das Etablieren einer Beziehung zwischen einem Popover und seinem auslösenden Button mithilfe des popovertarget-Attributs hat zwei weitere nützliche Effekte:

  • Der Browser erstellt eine implizite aria-details- und aria-expanded-Beziehung zwischen Popover und Auslöser und platziert das Popover in einer logischen Position in der Tastaturfokus-Navigationsreihenfolge, wenn es angezeigt wird. Dadurch wird das Popover für Tastatur- und unterstützende Technologie-Benutzer (AT) zugänglicher (siehe auch Popover-Zugänglichkeitsfunktionen).
  • Der Browser erstellt eine implizite Ankerbeziehung zwischen den beiden, was es sehr bequem macht, Popover relativ zu ihren Steuerungselementen mit CSS-Ankerpositionierung zu positionieren. Siehe Popover-Ankerpositionierung für weitere Details.
popovertargetaction

Gibt die Aktion an, die auf einem von einem Steuer-<button> kontrollierten Popover-Element ausgeführt werden soll. Mögliche Werte sind:

"hide"

Der Button verbirgt ein angezeigt Popover. Wenn Sie versuchen, ein bereits verstecktes Popover zu verbergen, wird keine Aktion ausgeführt.

"show"

Der Button zeigt ein verstecktes Popover an. Wenn Sie versuchen, ein bereits angezeigtes Popover anzuzeigen, wird keine Aktion ausgeführt.

"toggle"

Der Button schaltet ein Popover zwischen sichtbar und verborgen um. Wenn das Popover verborgen ist, wird es angezeigt; wenn das Popover angezeigt wird, wird es verborgen. Wenn popovertargetaction weggelassen wird, ist "toggle" die Standardaktion, die vom Steuerbutton ausgeführt wird.

type

Das Standardverhalten des Buttons. Mögliche Werte sind:

  • submit: Der Button übermittelt die Formulardaten an den Server. Dies ist der Standard, wenn das Attribut für Buttons, die mit einem <form> verknüpft sind, nicht angegeben ist oder das Attribut einen leeren oder ungültigen Wert hat.
  • reset: Der Button setzt alle Steuerungen auf ihre ursprünglichen Werte zurück, wie <input type="reset">. (Dieses Verhalten neigt dazu, Benutzer zu verärgern.)
  • button: Der Button hat kein Standardverhalten und tut beim Drücken standardmäßig nichts. Client-seitige Skripts können auf die Ereignisse des Elements lauschen, die ausgelöst werden, wenn die Ereignisse eintreten.
value

Definiert den mit dem name des Buttons assoziierten Wert, wenn er mit den Formulardaten übermittelt wird. Dieser Wert wird beim Übermitteln des Formulars unter Verwendung dieses Buttons als Parameter an den Server gesendet.

Anmerkungen

Ein Submit-Button mit gesetztem Attribut formaction, aber ohne zugeordnetes Formular tut nichts. Sie müssen einen Form-Owner festlegen, entweder durch Einbetten in ein <form> oder durch Setzen des Attributs form auf die ID des Formulars.

<button>-Elemente sind viel einfacher zu stylen als <input>-Elemente. Sie können inneren HTML-Inhalt hinzufügen (denken Sie an <i>, <br> oder sogar <img>), und verwenden Sie ::after und ::before Pseudo-Elemente für komplexe Rendering.

Wenn Ihre Buttons nicht zum Übermitteln von Formulardaten an einen Server gedacht sind, stellen Sie sicher, dass ihr type-Attribut auf button gesetzt ist. Andernfalls werden sie versuchen, Formulardaten zu übermitteln und die (nicht vorhandene) Antwort zu laden, möglicherweise zerstören Sie dadurch den aktuellen Zustand des Dokuments.

Während <button type="button"> kein Standardverhalten hat, können Ereignis-Handler programmiert werden, um Verhaltensweisen auszulösen. Ein aktivierter Button kann programmierbare Aktionen mit JavaScript ausführen, wie etwa das Entfernen eines Elements aus einer Liste.

Standardmäßig stylen Benutzeragenten Buttons als display: flow-root, was einen neuen Blockformatierungskontext erzeugt und die Kinder des Buttons sowohl horizontal als auch vertikal zentriert, solange sie nicht überlaufen. Wenn der Button als Flex- oder Grid-Container definiert ist, verhalten sich die Kinder als Flex- oder Grid-Elemente. Ein Button, der auf display: inline gesetzt ist, wird gestylt, als wäre der Wert auf display: inline-block gesetzt.

Barrierefreiheit

Icon-Buttons

Buttons, die nur ein Icon anzeigen, haben keinen zugänglichen Namen. Zugängliche Namen bieten Informationen für unterstützende Technologien, wie Screenreadern, um darauf zuzugreifen, wenn sie das Dokument analysieren und einen Zugänglichkeitsbaum generieren. Assistive Technologien verwenden dann den Zugänglichkeitsbaum, um sich durch den Seiteninhalt zu bewegen und ihn zu manipulieren.

Um einem Icon-Button einen zugänglichen Namen zu geben, platzieren Sie Text im <button>-Element, der die Funktionalität des Buttons prägnant beschreibt.

Beispiele

html
<button name="favorite">
  <svg fill="#000000" viewBox="0 0 42 42">
    <path
      d="M21,1c1.081,0,5.141,12.315,6.201,13.126s13.461,1.053,13.791,2.137 c0.34,1.087-9.561,8.938-9.961,10.252c-0.409,1.307,
      3.202,13.769,2.331,14.442c-0.879,0.673-11.05-6.79-12.361-6.79 c-1.311,0-11.481,7.463-12.36,6.79c-0.871-0.674,2.739-13.136,
      2.329-14.442c-0.399-1.313-10.3-9.165-9.96-10.252 c0.33-1.084,12.731-1.326,13.791-2.137S19.91,1,21,1z"></path>
  </svg>
  Add to favorites
</button>
Ergebnis

Wenn Sie den Text des Buttons visuell ausblenden möchten, ist es eine zugängliche Möglichkeit, eine Kombination von CSS-Eigenschaften zu nutzen, um ihn visuell vom Bildschirm zu entfernen, aber ihn für unterstützende Technologien durchsuchbar zu lassen.

Es ist jedoch anzumerken, dass es hilfreich sein kann, den Text des Buttons sichtbar zu lassen, um Menschen zu helfen, die möglicherweise nicht mit der Bedeutung des Icons vertraut sind oder den Zweck des Buttons verstehen. Dies ist besonders wichtig für Menschen, die nicht technisch versiert sind oder unterschiedliche kulturelle Interpretationen des Icons verwenden.

Größe und Nähe

Größe

Interaktive Elemente wie Buttons sollten eine ausreichend große Fläche haben, um leicht aktiviert zu werden. Dies hilft einer Vielzahl von Menschen, einschließlich Menschen mit motorischen Steuerungsproblemen und Menschen, die ungenaue Formen der Eingabe verwenden, wie einen Stift oder Finger. Eine Mindestmaß für interaktive Größe von 44×44 CSS-Pixel wird empfohlen.

Nähe

Große Mengen an interaktivem Inhalt – einschließlich Buttons – die in enger visueller Nähe zueinander platziert werden, sollten Abstand dazwischen haben. Dieser Abstand ist vorteilhaft für Menschen, die motorische Steuerungsprobleme erfahren, die möglicherweise versehentlich den falschen interaktiven Inhalt aktivieren.

Der Abstand kann mit CSS-Eigenschaften wie margin erstellt werden.

ARIA Zustandsinformationen

Um den Zustand eines Buttons zu beschreiben, ist das richtige ARIA-Attribut aria-pressed und nicht aria-checked oder aria-selected. Weitere Informationen finden Sie in den Informationen über die ARIA-Button-Rolle.

Button-Stile

Es ist am besten, den standardmäßigen Fokusring für Elemente, die den Fokus haben, nicht zu überschreiben. Wenn die Button-Stile überschrieben werden, ist es wichtig, sicherzustellen, dass der Fokuszustand genug Kontrast hat, sodass Menschen mit Sehbehinderungen ihn wahrnehmen können und Menschen mit kognitiven Unterschieden ihn verstehen.

Die :focus-visible Pseudoklasse kann verwendet werden, um Stile auf ein Element anzuwenden, das :focus nur hat, wenn die Heuristiken des Benutzeragenten bestimmen, dass der Fokus hervorgehoben werden soll, z. B. wenn ein <button> Tastaturfokus erhält. Siehe :focus vs :focus-visible für mehr Informationen.

Das Farbkontrastverhältnis wird durch den Vergleich der Helligkeit der Button-Text- und Hintergrundfarbwerte mit dem Hintergrund ermittelt, auf dem der Button platziert ist. Um die aktuellen Richtlinien für barrierefreie Webinhalte (WCAG) zu erfüllen, ist ein Verhältnis von 4,5:1 für Textinhalt und 3:1 für großen Text erforderlich. (Großer Text ist definiert als 18,66 px und bold oder größer oder 24 px oder größer.)

Klicken und Fokus

Ob das Klicken auf einen <button> oder auf <input>-Button-Typen dazu führt, dass er (standardmäßig) fokussiert wird, variiert je nach Browser und Betriebssystem. Die meisten Browser fokussieren den geklickten Button, aber Safari tut dies aus Designgründen nicht.

Beispiele

html
<button name="button">Press me</button>

Technische Zusammenfassung

Inhaltskategorien Flussinhalt, Phraseninhalt, Interaktive Inhalte, aufgeführt, beschriftbar, und einreichbar form-assoziiertes Element, spürbarer Inhalt.
Erlaubter Inhalt Phraseninhalt aber es darf keine interaktiven Inhalte geben. Wenn der <button>-Button das erste Kind eines anpassbaren Auswahlelements ist, dann kann er auch null oder ein <selectedcontent>-Element enthalten.
Tag-Auslassung Keine, sowohl das Start- als auch das End-Tag sind notwendig.
Erlaubte Eltern Jedes Element, das Phraseninhalt akzeptiert.
Implizite ARIA-Rolle Button
Erlaubte ARIA-Rollen Checkbox, Combobox, Link, Menuitem, Menuitemcheckbox, Menuitemradio, Option, Radio, Switch, Tab
DOM-Schnittstelle [`HTMLButtonElement`](/de/docs/Web/API/HTMLButtonElement)

Spezifikationen

Specification
HTML
# the-button-element

Browser-Kompatibilität