Formulare

Beispiele und Verwendungsrichtlinien für Formularsteuerungsstile, Layoutoptionen und benutzerdefinierte Komponenten zum Erstellen einer Vielzahl von Formularen.

Übersicht

Die Formularsteuerelemente von Bootstrap erweitern unsere neu gestarteten Formularstile mit Klassen. Verwenden Sie diese Klassen, um ihre benutzerdefinierten Anzeigen für ein konsistenteres Rendering über Browser und Geräte hinweg zu aktivieren.

Verwenden Sie für alle Eingaben ein geeignetes type -Attribut (z , email für E-Mail-Adresse oder number für numerische Informationen), um neuere Eingabesteuerelemente wie E-Mail-Überprüfung, Nummernauswahl und mehr zu nutzen.

Hier ist ein kurzes Beispiel, um die Formstile von Bootstrap zu demonstrieren. Lesen Sie weiter, um Dokumentation zu den erforderlichen Klassen, dem Formularlayout und vielem mehr zu erhalten.

Formularsteuerelemente

Lesen Sie unbedingt unsere benutzerdefinierten Formulare, um <select> s.

Tauschen Sie für Dateieingaben die .form-control gegen .

Größe

Stellen Sie Höhen mithilfe von Klassen wie .form-control-lg und .form-control-sm.

Nur Lesen

Fügen Sie die readonly boolesches Attribut für eine Eingabe, um eine Änderung des Eingabewerts zu verhindern. Schreibgeschützte Eingaben erscheinen heller (genau wie deaktivierte Eingaben), behalten jedoch den Standardcursor bei.

Nur schreibgeschützter Text

Wenn Sie <input readonly> Elemente in Ihrem Formular haben möchten, die als einfacher Text gestaltet sind, verwenden Sie die .form-control-plaintext -Klasse, um das Standardformular für Formularfelder zu entfernen und den korrekten Rand und die Auffüllung beizubehalten.

Kontrollkästchen und Funkgeräte

Standard Kontrollkästchen und Radios werden mithilfe von .form-check verbessert, einer einzelnen Klasse für beide Eingabetypen, die das Layout und Verhalten ihrer HTML-Elemente verbessert. Kontrollkästchen dienen zum Auswählen einer oder mehrerer Optionen in einer Liste, während Funkgeräte zum Auswählen einer Option aus mehreren Optionen dienen.

Deaktivierte Kontrollkästchen und Funkgeräte werden unterstützt, bieten jedoch eine not-allowed Cursor beim Hover des übergeordneten <label> müssen Sie das Attribut disabled zum . Das Attribut deaktiviert wird eine hellere Farbe anwenden, um den Status der Eingabe anzuzeigen.

Kontrollkästchen und Radios werden verwendet, um die HTML-basierte Formularvalidierung zu unterstützen und präzise, zugängliche Beschriftungen bereitzustellen. Daher sind unsere <input> s und <label> Geschwisterelemente im Gegensatz zu einer <input> innerhalb einer <label>. Dies ist etwas ausführlicher, da Sie die Attribute id und for angeben müssen, um die <input> in Beziehung zu setzen und <label>.

Standard (gestapelt)

Standardmäßig werden beliebig viele Kontrollkästchen und Funkgeräte, die unmittelbare Geschwister sind, vertikal gestapelt und angemessen beabstandet mit .form-check.

Standard-Kontrollkästchen
Deaktiviertes Kontrollkästchen

Standardradio
Zweites Standardradio
Deaktiviertes Radio

Inline

Gruppieren Sie Kontrollkästchen oder Radios in derselben horizontalen Zeile durch Hinzufügen von .form-check-inline zu .form-check.

1
2
3 (deaktiviert)

1
2
3 (deaktiviert)

Ohne Beschriftungen

Fügen Sie .position-static zu Eingaben in .form-check hinzu, die keinen Beschriftungstext enthalten. Denken Sie daran, weiterhin eine Art Beschriftung für unterstützende Technologien bereitzustellen (z. B. mit aria-label).

Layout

Da Bootstrap display: block und width: 100% auf fast alle unsere Formularsteuerelemente anwendet Formulare werden standardmäßig vertikal gestapelt. Zusätzliche Klassen können verwendet werden, um dieses Layout auf Formularbasis zu variieren.

Formulargruppen

Die Klasse .form-group ist der einfachste Weg Formulare strukturieren. Es bietet eine flexible Klasse, die die ordnungsgemäße Gruppierung von Beschriftungen, Steuerelementen, optionalem Hilfetext und Formularüberprüfungsnachrichten fördert. Standardmäßig wird nur margin-bottom angewendet, es werden jedoch bei Bedarf zusätzliche Stile in .form-inline übernommen. Verwenden Sie es mit <fieldset> s, <div> s oder fast jedem anderen Element.

Formularraster

Mit unseren Rasterklassen können komplexere Formulare erstellt werden. Verwenden Sie diese für Formularlayouts, die mehrere Spalten, unterschiedliche Breiten und zusätzliche Ausrichtungsoptionen erfordern.

Formularzeile

Sie können auch .row gegen .form-row, eine Variation unserer Standardrasterzeile, die die Standardspaltenrinnen für engere und kompaktere Layouts überschreibt.

Mit dem Rastersystem können auch komplexere Layouts erstellt werden.

Horizontales Formular

Erstellen Sie horizontale Formulare mit dem Raster, indem Sie die Klasse .row hinzufügen, um Gruppen zu bilden, und die verwenden .col-*-* -Klassen, um die Breite Ihrer Beschriftungen und Steuerelemente anzugeben. Stellen Sie sicher, dass Sie .col-form-label auch zu Ihren <label> hinzufügen, damit sie vertikal mit den zugehörigen Formularsteuerelementen zentriert sind.

Manchmal müssen Sie möglicherweise Dienstprogramme für Ränder oder Auffüllungen verwenden, um die perfekte Ausrichtung zu erzielen, die Sie benötigen. Zum Beispiel haben wir die padding-top auf unserer gestapelten Funkeingangsbeschriftung entfernt, um die Textgrundlinie besser auszurichten.

Horizontale Formularbeschriftung Größe

Spaltengröße

Wie in den vorherigen Beispielen gezeigt, können Sie in unserem Rastersystem eine beliebige Anzahl von .col s innerhalb eines .row oder .form-row. Sie teilen die verfügbare Breite gleichmäßig auf. Sie können auch eine Teilmenge Ihrer Spalten auswählen, um mehr oder weniger Platz zu beanspruchen, während die verbleibenden .col den Rest mit bestimmten Spaltenklassen wie .

Automatische Größenanpassung

Im folgenden Beispiel wird ein Flexbox-Dienstprogramm verwendet, um den Inhalt vertikal zu zentrieren und bis .col-auto, sodass Ihre Spalten nur so viel Speicherplatz wie nötig beanspruchen. Anders ausgedrückt, die Spaltengrößen selbst basieren auf dem Inhalt.

Sie können diese dann erneut mit größenspezifischen Spaltenklassen neu mischen.

Und natürlich werden benutzerdefinierte Formularsteuerelemente unterstützt.

Inline-Formulare

Verwenden Sie die .form-inline Klasse, um eine Reihe von Beschriftungen, Formularsteuerelementen und Schaltflächen in einer einzelnen horizontalen Zeile anzuzeigen. Formularsteuerelemente in Inline-Formularen weichen geringfügig von ihren Standardzuständen ab.

  • Steuerelemente sind display: flex, wodurch alle HTML-Leerzeichen reduziert werden und Sie die Ausrichtung steuern können Dienstprogramme für Abstand und Flexbox.
  • Steuerelemente und Eingabegruppen erhalten width: auto, um den Bootstrap-Standard width: 100% zu überschreiben.
  • Steuerelemente werden nur in Ansichtsfenstern mit einer Breite von mindestens 576 Pixel inline angezeigt, um enge Ansichtsfenster auf Mobilgeräten zu berücksichtigen.

Möglicherweise müssen Sie die Breite und Ausrichtung einzelner Formularsteuerelemente manuell festlegen mit Abstandsdienstprogrammen (wie unten gezeigt). Stellen Sie schließlich sicher, dass jedem Formularsteuerelement immer ein <label> hinzugefügt wird, auch wenn Sie es mit .sr-only vor Besuchern verbergen müssen, die keine Bildschirmleser sind

Steuerelemente und Auswahlen für benutzerdefinierte Formulare werden ebenfalls unterstützt.

Alternativen zu versteckten Beschriftungen

Unterstützende Technologien wie Bildschirmleseprogramme haben Probleme mit Ihren Formularen, wenn Sie nicht für jede Eingabe eine Beschriftung hinzufügen. Für diese Inline-Formulare können Sie die Beschriftungen mit der Klasse .sr-only ausblenden. Es gibt weitere alternative Methoden zum Bereitstellen eines Etiketts für unterstützende Technologien, z. B. aria-label, aria-labelledby oder title Attribut. Wenn keines davon vorhanden ist, verwenden unterstützende Technologien möglicherweise das Attribut placeholder, falls vorhanden. Beachten Sie jedoch, dass die Verwendung von placeholder als Ein Ersatz für andere Beschriftungsmethoden wird nicht empfohlen.

Hilfetext

Hilfetext auf Blockebene in Formularen kann mit .form-text (früher bekannt als .help-block in v3). Inline-Hilfetext kann mithilfe beliebiger Inline-HTML-Element- und Dienstprogrammklassen wie .text-muted flexibel implementiert werden.

Verknüpfen von Hilfetext mit Formularsteuerelementen

Der Hilfetext sollte explizit dem Formularsteuerelement zugeordnet werden, auf das er sich bezieht, indem das Attribut aria-describedby verwendet wird. Dadurch wird sichergestellt, dass unterstützende Technologien – wie z. B. Bildschirmleseprogramme – diesen Hilfetext ankündigen, wenn der Benutzer sich auf das Steuerelement konzentriert oder es betritt.

Der Hilfetext unter den Eingaben kann mit . Diese Klasse enthält display: block und fügt einen oberen Rand für einen einfachen Abstand zu den obigen Eingaben hinzu.

Passwort Ihr Passwort muss 8-20 Zeichen lang sein und Buchstaben und Zahlen enthalten und dürfen keine Leerzeichen, Sonderzeichen oder Emoji enthalten.

Inline-Text kann jedes typische Inline-HTML-Element verwenden (sei es ein <small>, <span> oder etwas anderes) mit nichts mehr als einer Utility-Klasse.

Deaktivierte Formulare

Fügen Sie das boolesche Attribut disabled zu einer Eingabe hinzu, um Benutzerinteraktionen zu verhindern und anzuzeigen leichter.

Fügen Sie die disabled Attribut für ein <fieldset>, um alle darin enthaltenen Steuerelemente zu deaktivieren.

Vorsichtsmaßnahme mit Anker

Standardmäßig behandeln Browser alle nativen Formularsteuerelemente (<input>, <select> und <button> -Elemente) in einem <fieldset disabled> als deaktiviert, wodurch sowohl Tastatur- als auch Mausinteraktionen auf ihnen verhindert werden. Wenn Ihr Formular jedoch auch <a ... class="btn btn-*"> -Elemente enthält, wird diesen nur der Stil pointer-events: none zugewiesen. Wie im Abschnitt über den deaktivierten Status für Schaltflächen (und speziell im Unterabschnitt für Ankerelemente) erwähnt, ist diese CSS-Eigenschaft noch nicht standardisiert und wird in Opera 18 und darunter oder in Internet Explorer 10 nicht vollständig unterstützt und gewonnen verhindern nicht, dass Tastaturbenutzer diese Links fokussieren oder aktivieren können. Verwenden Sie aus Sicherheitsgründen benutzerdefiniertes JavaScript, um solche Links zu deaktivieren.

Browserübergreifende Kompatibilität

Bootstrap wendet diese Stile in allen Browsern an, Internet Explorer 11 und darunter unterstützen das Attribut disabled für ein <fieldset> nicht vollständig. Verwenden Sie benutzerdefiniertes JavaScript, um das Feldset in diesen Browsern zu deaktivieren.

Validierung

Geben Sie Ihren Benutzern mit der HTML5-Formularvalidierung wertvolles, umsetzbares Feedback – verfügbar in allen unterstützten Browsern. Wählen Sie aus dem Standard-Validierungs-Feedback des Browsers oder implementieren Sie benutzerdefinierte Nachrichten mit unseren integrierten Klassen und dem Starter-JavaScript.

Wir empfehlen dringend benutzerdefinierte Validierungsstile, da native Browser-Standardeinstellungen für Screenreader nicht angekündigt werden.

Funktionsweise

So funktioniert die Formularüberprüfung mit Bootstrap:

  • Die HTML-Formularüberprüfung wird über die beiden Pseudoklassen von CSS angewendet. :invalid und :valid. Dies gilt für die Elemente <input>, <select> und <textarea>.
  • Bootstrap umfasst die Stile :invalid und :valid für die übergeordnete Klasse .was-validated, die normalerweise auf die Klassen angewendet wird <form>. Andernfalls wird jedes erforderliche Feld ohne Wert beim Laden der Seite als ungültig angezeigt. Auf diese Weise können Sie auswählen, wann sie aktiviert werden sollen (normalerweise nach dem Versuch, ein Formular zu senden).
  • Als Fallback können Sie .is-invalid und -Klassen können anstelle der Pseudoklassen für die serverseitige Validierung verwendet werden. Sie erfordern keine .was-validated übergeordnete Klasse.
  • Aufgrund von Einschränkungen in der Funktionsweise von CSS können wir (derzeit) keine Stile auf eine , das ohne Hilfe von benutzerdefiniertem JavaScript vor einem Formularsteuerelement im DOM steht.
  • Alle modernen Browser unterstützen die Constraint Validation API, eine Reihe von JavaScript-Methoden zum Überprüfen von Formularsteuerelementen.
  • Feedbacknachrichten verwenden möglicherweise die Standardeinstellungen des Browsers (für jeden Browser unterschiedlich und über CSS nicht stylbar) oder unsere benutzerdefinierten Feedbackstile mit zusätzlichem HTML und CSS.
  • Sie können benutzerdefinierte Gültigkeitsnachrichten mit setCustomValidity in JavaScript.

Berücksichtigen Sie in diesem Zusammenhang die folgenden Demos für unsere benutzerdefinierten Formularüberprüfungsstile, optionalen serverseitigen Klassen und Browser-Standardeinstellungen.

Benutzerdefinierte Stile

Für benutzerdefinierte Bootstrap-Formularüberprüfungsnachrichten müssen Sie das novalidate -Boolesche Attribut zu Ihrer <form>. Dadurch werden die Standard-Feedback-Tooltips des Browsers deaktiviert, es wird jedoch weiterhin Zugriff auf die APIs zur Formularüberprüfung in JavaScript bereitgestellt. Versuchen Sie, das folgende Formular einzureichen. Unser JavaScript fängt die Schaltfläche „Senden“ ab und leitet Feedback an Sie weiter.

Wenn Sie versuchen zu senden, sehen Sie die :invalid und Stile, die auf Ihre Formularsteuerelemente angewendet werden.

Standardeinstellungen des Browsers

Sie sind nicht an benutzerdefinierten Validierungs-Feedbacknachrichten interessiert oder schreiben JavaScript, um das Formularverhalten zu ändern? Alles gut, Sie können die Standardeinstellungen des Browsers verwenden. Senden Sie das folgende Formular. Abhängig von Ihrem Browser und Betriebssystem wird ein etwas anderer Feedback-Stil angezeigt.

Obwohl diese Feedback-Stile nicht mit CSS gestaltet werden können, können Sie den Feedback-Text dennoch über JavaScript anpassen.

Serverseite

Wir empfehlen die clientseitige Validierung. Wenn Sie jedoch eine Serverseite benötigen, können Sie mit .is-invalid und .is-valid. Beachten Sie, dass .invalid-feedback auch von diesen Klassen unterstützt wird.

Unterstützte Elemente

Unsere Beispielformulare zeigen native <input> oben, aber Formularvalidierungsstile sind verfügbar Auch für unsere benutzerdefinierten Formularsteuerelemente.

QuickInfos

Wenn Ihr Formularlayout dies zulässt, können Sie die .{valid|invalid}-feedback -Klassen für .{valid|invalid}-tooltip -Klassen, um Validierungsfeedback in einem gestalteten Tooltip anzuzeigen. Stellen Sie sicher, dass ein übergeordnetes Element mit position: relative für die Positionierung in QuickInfos vorhanden ist. Im folgenden Beispiel haben unsere Spaltenklassen dies bereits, aber für Ihr Projekt ist möglicherweise eine alternative Einrichtung erforderlich.

Benutzerdefinierte Formulare

Für noch mehr Anpassung und Kreuz Verwenden Sie unsere vollständig benutzerdefinierten Formularelemente, um die Standardeinstellungen des Browsers zu ersetzen. Sie basieren auf semantischem und zugänglichem Markup und sind daher ein solider Ersatz für jede Standard-Formularsteuerung.

Kontrollkästchen und Radios

Jedes Kontrollkästchen und Radio ist in ein <div> mit einem Geschwister <span> zum Erstellen unseres benutzerdefinierten Steuerelements und einer <label> für den Begleittext. Strukturell ist dies der gleiche Ansatz wie bei unserem Standard .form-check.

Wir verwenden den Geschwister-Selektor (~) für Alle unsere <input> -Zustände – wie :checked -, um unseren benutzerdefinierten Formularindikator richtig zu formatieren. In Kombination mit der Klasse .custom-control-label können wir den Text für jedes Element auch basierend auf dem Status von <input> formatieren.

Wir verbergen die Standardeinstellung <input> mit opacity und verwenden die .custom-control-label, um eine zu erstellen neuer benutzerdefinierter Formularindikator an seiner Stelle mit ::before und ::after. Leider können wir keine benutzerdefinierte Version nur aus <input> erstellen, da die content von CSS für dieses Element nicht funktioniert.

In den aktivierten Zuständen verwenden wir Base64-eingebettete SVG-Symbole von Open Iconic. Dies bietet uns die beste Kontrolle für das Styling und die Positionierung zwischen Browsern und Geräten.

Kontrollkästchen

Aktivieren Sie dieses benutzerdefinierte Kontrollkästchen

Benutzerdefinierte Kontrollkästchen kann auch die Pseudoklasse :indeterminate verwenden, wenn sie manuell über JavaScript festgelegt wird (es ist kein HTML-Attribut für die Angabe verfügbar).

Aktivieren Sie dieses benutzerdefinierte Kontrollkästchen

Wenn Sie jQuery verwenden, sollte so etwas ausreichen:

Radios

Schalten Sie dieses benutzerdefinierte Radio um
oder schalten Sie dieses andere benutzerdefinierte Radio um

Inline

Schalten Sie dieses benutzerdefinierte Radio um
oder schalten Sie dieses andere benutzerdefinierte Radio um

Deaktiviert

Benutzerdefinierte Kontrollkästchen und Radios können ebenfalls deaktiviert werden. Fügen Sie das boolesche Attribut disabled zum <input> hinzu, und die Beschreibung des benutzerdefinierten Indikators und der Bezeichnung wird automatisch formatiert.

Aktivieren Sie dieses benutzerdefinierte Kontrollkästchen
Schalten Sie dieses benutzerdefinierte Radio um

Menü auswählen

Benutzerdefiniert <select> Menüs benötigen nur eine benutzerdefinierte Klasse, .custom-select, um die benutzerdefinierten Stile auszulösen.

Sie können auch zwischen kleinen und großen benutzerdefinierten Auswahlen wählen stimmen mit unseren ähnlich großen Texteingaben überein.

Das Attribut multiple wird ebenfalls unterstützt:

Wie das Attribut size:

Dateibrowser

Die Dateieingabe ist am knorrigsten und erfordert zusätzliches JavaScript, wenn Sie sie mit der Funktion „Datei auswählen“ und dem ausgewählten Dateinamen-Text verbinden möchten.

Datei auswählen

Wir verstecken die Standarddatei <input> über und formatieren Sie stattdessen die <label>. Die Schaltfläche wird mit ::after generiert und positioniert. Zuletzt deklarieren wir ein width und height auf dem <input> für den richtigen Abstand für den umgebenden Inhalt .

Übersetzen oder Anpassen der Zeichenfolgen

Die Pseudoklasse :lang() wird verwendet, um die Übersetzung des Textes „Durchsuchen“ in einen anderen zu ermöglichen Sprachen. Überschreiben oder fügen Sie Einträge zur Variablen $custom-file-text Sass mit dem entsprechenden Sprach-Tag und lokalisierten Zeichenfolgen hinzu. Die englischen Zeichenfolgen können auf die gleiche Weise angepasst werden.So könnte man beispielsweise eine spanische Übersetzung hinzufügen (der spanische Sprachcode lautet es):

Hier ist lang(es) in Aktion für die benutzerdefinierte Dateieingabe für eine spanische Übersetzung:

Seleccionar Archivo

Sie müssen die Sprache Ihres Dokuments (oder eines Teilbaums davon) korrekt einstellen, damit der richtige Text angezeigt wird. Dies kann mithilfe des Attributs lang für das Element <html> oder des HTTP-Headers Content-Language erfolgen unter anderem.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.