Andere Formularelemente
Wir betrachten nun die Funktionalität von nicht-<input>
-Formularelementen im Detail, angefangen bei anderen Steuerelementen wie Dropdown-Listen und mehrzeiligen Textfeldern, bis hin zu anderen nützlichen Formularfunktionen wie dem <output>
-Element (das wir im vorhergehenden Artikel in Aktion gesehen haben) und Fortschrittsbalken.
Voraussetzungen: | Ein grundlegendes Verständnis von HTML. |
---|---|
Ziel: | Das Verständnis der Funktionen von nicht-``-Formularen und deren Implementierung mit HTML. |
Mehrzeilige Textfelder
Ein mehrzeiliges Textfeld wird mit einem <textarea>
-Element angegeben, anstatt mit dem <input>
-Element.
<textarea cols="30" rows="8"></textarea>
Dies wird wie folgt gerendert:
Der Hauptunterschied zwischen einem <textarea>
und einem normalen einzeiligen Textfeld besteht darin, dass Benutzer harte Zeilenumbrüche (d. h. Betätigung der Eingabetaste) einfügen dürfen, die beim Absenden der Daten enthalten werden.
<textarea>
benötigt auch ein schließendes Tag; beliebiger Standardtext, den Sie enthalten möchten, sollte zwischen den öffnenden und schließenden Tags gesetzt werden. Im Gegensatz dazu ist <input>
ein leeres Element ohne Schlusstag – ein Standardwert wird innerhalb des value
-Attributes gesetzt.
Beachten Sie, dass Sie, obwohl Sie alles innerhalb eines <textarea>
-Elements platzieren können (einschließlich anderer HTML-Elemente, CSS und JavaScript), es alles so gerendert wird, als wäre es reiner Textinhalt. (Durch die Verwendung von contenteditable
auf Nicht-Formular-Steuerelementen wird eine API bereitgestellt, um HTML/"reichhaltige" Inhalte anstelle von reinem Text zu erfassen).
Visuell wird der eingegebene Text umbrochen, und das Formularelement ist standardmäßig größenveränderbar. Die meisten Browser bieten einen Ankerpunkt, der gezogen werden kann, um die Größe des Textbereichs zu vergrößern oder zu verkleinern.
Sie finden ein Beispiel für die Verwendung eines Textbereichs im Beispiel, das wir im ersten Artikel zusammengestellt haben.
Steuerung der mehrzeiligen Darstellung
<textarea>
akzeptiert drei Attribute zur Steuerung der Darstellung über mehrere Zeilen:
cols
-
Gibt die sichtbare Breite (Spalten) der Textsteuerung an, gemessen in durchschnittlichen Zeichenbreiten. Dies ist effektiv die Anfangsbreite, da es durch Ändern der Größe des
<textarea>
geändert und mit CSS überschrieben werden kann. Der Standardwert beträgt 20, wenn keiner angegeben ist. rows
-
Gibt die Anzahl der sichtbaren Textzeilen für das Steuerelement an. Dies ist effektiv die Anfangshöhe, da es durch Ändern der Größe des
<textarea>
geändert und mit CSS überschrieben werden kann. Der Standardwert beträgt 2, wenn keiner angegeben ist. wrap
-
Gibt an, wie die Steuerung Text umbricht. Die Werte sind
soft
(der Standardwert), was bedeutet, dass der übermittelte Text nicht umbrochen wird, aber der vom Browser gerenderte Text umbrochen wird;hard
(dascols
-Attribut muss bei Verwendung dieses Wertes angegeben werden), was bedeutet, dass sowohl die übermittelten als auch die gerenderten Texte umbrochen werden, undoff
, was das Umbruch unterbindet.
Steuerung der Größenänderbarkeit des Textbereichs
Die Möglichkeit, die Größe eines <textarea>
zu ändern, wird durch die CSS-Eigenschaft resize
gesteuert. Mögliche Werte sind:
both
: Der Standardwert – erlaubt das Ändern der Größe horizontal und vertikal.horizontal
: Erlaubt nur horizontales Ändern der Größe.vertical
: Erlaubt nur vertikales Ändern der Größe.none
: Erlaubt keine Größenänderung.block
undinline
: Experimentelle Werte, die das Ändern der Größe nur in der Richtungblock
oderinline
erlauben (dies variiert je nach Richtung Ihres Textes; lesen Sie Umgang mit verschiedenen Textrichtungen, wenn Sie mehr erfahren möchten).
Spielen Sie mit dem interaktiven Beispiel oben auf der resize
-Referenzseite, um eine Demonstration zu sehen, wie diese funktionieren.
Dropdown-Steuerelemente
Dropdown-Steuerelemente sind eine einfache Möglichkeit, Benutzern die Auswahl von vielen Optionen zu ermöglichen, ohne viel Platz in der Benutzeroberfläche einzunehmen. HTML hat zwei Arten von Dropdown-Steuerelementen: das Auswahlfeld und das Autovervollständigungsfeld. Die Interaktion ist bei beiden Arten von Dropdown-Steuerelementen dieselbe – nachdem das Steuerelement aktiviert wurde, zeigt der Browser eine Liste von Werten an, aus denen der Benutzer auswählen kann.
Hinweis: Beispiele für alle Arten von Dropdown-Boxen finden Sie auf GitHub unter drop-down-content.html (sehen Sie es sich auch live an).
Auswahlfeld
Ein einfaches Auswahlfeld wird mit einem <select>
-Element erstellt, das eines oder mehrere <option>
-Elemente als Kinder enthält, von denen jedes einen seiner möglichen Werte angibt.
Einfaches Beispiel
<select id="simple" name="simple">
<option>Banana</option>
<option selected>Cherry</option>
<option>Lemon</option>
</select>
Falls erforderlich, kann der Standardwert für das Auswahlfeld mit dem selected
-Attribut auf dem gewünschten <option>
-Element festgelegt werden – diese Option ist dann voreingestellt, wenn die Seite geladen wird.
Verwendung von optgroup
Die <option>
-Elemente können innerhalb der <optgroup>
-Elemente verschachtelt werden, um visuell verbundene Gruppen von Werten zu erstellen:
<select id="groups" name="groups">
<optgroup label="fruits">
<option>Banana</option>
<option selected>Cherry</option>
<option>Lemon</option>
</optgroup>
<optgroup label="vegetables">
<option>Carrot</option>
<option>Eggplant</option>
<option>Potato</option>
</optgroup>
</select>
Auf dem <optgroup>
-Element wird der Wert des label
-Attributes vor den Werten der verschachtelten Optionen angezeigt. Der Browser hebt sie normalerweise visuell von den Optionen ab (z. B. Fettgedruckt und auf einer anderen Verschachtelungsebene), damit sie weniger leicht mit tatsächlichen Optionen verwechselt werden.
Verwendung des value-Attributs
Wenn ein <option>
-Element ein explizit gesetztes value
-Attribut aufweist, wird dieser Wert gesendet, wenn das Formular mit dieser ausgewählten Option abgeschickt wird. Wenn das value
-Attribut weggelassen wird, wie in den obigen Beispielen, wird der Inhalt des <option>
-Elements als Wert verwendet. Value
-Attribute sind also nicht erforderlich, aber Sie könnten einen Grund haben, einen verkürzten oder anderen Wert an den Server zu senden, als den, der visuell im Auswahlfeld angezeigt wird.
Zum Beispiel:
<select id="simple" name="simple">
<option value="banana">Big, beautiful yellow banana</option>
<option value="cherry">Succulent, juicy cherry</option>
<option value="lemon">Sharp, powerful lemon</option>
</select>
Standardmäßig ist die Höhe des Auswahlfelds ausreichend, um einen einzigen Wert anzuzeigen. Das optionale size
-Attribut ermöglicht die Steuerung, wie viele Optionen sichtbar sind, wenn das Auswahlfeld nicht den Fokus hat.
Mehrfachauswahl-Auswahlfeld
Standardmäßig erlaubt ein Auswahlfeld nur das Auswählen eines einzigen Wertes. Durch Hinzufügen des multiple
-Attributes zum <select>
-Element können Sie Benutzern erlauben, mehrere Werte auszuwählen. Benutzer können mehrere Werte durch das Standardverfahren des Betriebssystems auswählen (z. B. können auf dem Desktop mehrere Werte durch Klicken bei gedrückter Cmd/Ctrl-Taste ausgewählt werden).
<select id="multi" name="multi" multiple size="2">
<optgroup label="fruits">
<option>Banana</option>
<option selected>Cherry</option>
<option>Lemon</option>
</optgroup>
<optgroup label="vegetables">
<option>Carrot</option>
<option>Eggplant</option>
<option>Potato</option>
</optgroup>
</select>
Hinweis:
Bei Mehrfachauswahl-Auswahlfeldern werden die Werte nicht mehr als Dropdown-Inhalte angezeigt – stattdessen alle Werte gleichzeitig in einer Liste, wobei das optionale size
-Attribut die Höhe des Widgets bestimmt.
Autovervollständigungsfeld
Sie können vorgeschlagene, automatisch vervollständigte Werte für Formular-Widgets bereitstellen, indem Sie das <datalist>
-Element mit Kinder-<option>
-Elementen verwenden, um die anzuzeigenden Werte anzugeben. Das <datalist>
muss eine id
erhalten.
Die Datenliste wird dann über das list
-Attribut, dessen Wert die id
der zu bindenden Datenliste ist, an ein <input>
-Element (z. B. ein text
oder email
Eingabetyp) gebunden.
Sobald eine Datenliste mit einem Formular-Widget verknüpft ist, werden ihre Optionen verwendet, um den Text zu vervollständigen, der vom Benutzer eingegeben wurde; typischerweise wird dies dem Benutzer als Dropdown-Feld präsentiert, das mögliche Übereinstimmungen für das anzeigt, was er in das Eingabefeld getippt hat.
Einfaches Beispiel
Sehen wir uns ein Beispiel an.
<label for="myFruit">What's your favorite fruit?</label>
<input type="text" name="myFruit" id="myFruit" list="mySuggestion" />
<datalist id="mySuggestion">
<option>Apple</option>
<option>Banana</option>
<option>Blackberry</option>
<option>Blueberry</option>
<option>Lemon</option>
<option>Lychee</option>
<option>Peach</option>
<option>Pear</option>
</datalist>
Weniger offensichtliche Verwendungen von datalist
Laut der HTML-Spezifikation können das list
-Attribut und das <datalist>
-Element mit jeder Art von Widget verwendet werden, das eine Benutzereingabe erfordert. Dies führt zu einigen Verwendungen, die etwas unklar erscheinen könnten.
Zum Beispiel wird in Browsern, die
-Elemente bei <datalist>
range
-Eingabetypen unterstützen, eine kleine Markierung über dem Bereich für jeden datalist
-Wert angezeigt. Sie können eine Implementierung dieses Beispiels auf der <option>
<input type="range">
Referenzseite sehen.
Und Browser, die <datalist>
und <input type="color">
unterstützen, sollten eine angepasste Farbauswahl als Standard darstellen, während dennoch die vollständige Farbpalette verfügbar bleibt.
In diesem Fall verhalten sich verschiedene Browser von Fall zu Fall unterschiedlich, daher betrachten Sie solche Verwendungen als progressive Verbesserung und stellen Sie sicher, dass sie sich anständig degradieren.
Weitere Formulareigenschaften
Es gibt ein paar andere Formulareigenschaften, die nicht so offensichtlich sind wie die, die wir bereits erwähnt haben, aber in einigen Situationen dennoch nützlich sind, sodass wir es für wertvoll hielten, sie kurz zu erwähnen.
Hinweis: Beispiele aus diesem Abschnitt finden Sie auf GitHub als other-examples.html (siehe es auch live).
Messgeräte und Fortschrittsbalken
Messgeräte und Fortschrittsbalken sind visuelle Darstellungen von numerischen Werten. Die Unterstützung für <progress>
und <meter>
ist in allen modernen Browsern verfügbar.
Meter
Ein Meter-Balken stellt einen festen Wert in einem Bereich dar, der durch die max
- und min
-Werte begrenzt wird. Dieser Wert wird visuell als Balken dargestellt, und um zu wissen, wie dieser Balken aussieht, vergleichen wir den Wert mit einigen anderen festgelegten Werten:
-
Die
low
- undhigh
-Werte teilen den Bereich in die folgenden drei Teile: -
Der
optimum
-Wert definiert den optimalen Wert für das<meter>
-Element. In Verbindung mit denlow
- undhigh
-Werten wird definiert, welcher Teil des Bereichs bevorzugt wird:- Liegt der
optimum
-Wert im unteren Teil des Bereichs, wird der untere Bereich als bevorzugter Teil angesehen, der mittlere Bereich als durchschnittlicher Teil und der obere Bereich als schlechtester Teil. - Liegt der
optimum
-Wert im mittleren Teil des Bereichs, wird der untere Bereich als durchschnittlicher Teil angesehen, der mittlere Bereich als bevorzugter Teil und der obere Bereich ebenfalls als durchschnittlich. - Liegt der
optimum
-Wert im oberen Teil des Bereichs, wird der untere Bereich als schlechtester Teil angesehen, der mittlere Bereich als durchschnittlicher und der obere Bereich als bevorzugt.
- Liegt der
Alle Browser, die das <meter>
-Element implementieren, verwenden diese Werte, um die Farbe des Meter-Balkens zu ändern:
- Wenn sich der aktuelle Wert im bevorzugten Teil des Bereichs befindet, ist der Balken grün.
- Wenn sich der aktuelle Wert im durchschnittlichen Teil des Bereichs befindet, ist der Balken gelb.
- Wenn sich der aktuelle Wert im schlechtesten Teil des Bereichs befindet, ist der Balken rot.
Ein solcher Balken wird durch das <meter>
-Element erstellt. Dies ist für die Implementierung jeder Art von Messgerät; zum Beispiel ein Balken, der den gesamten auf einer Festplatte genutzten Speicherplatz anzeigt, der rot wird, wenn er sich zu füllen beginnt.
<meter min="0" max="100" value="75" low="33" high="66" optimum="0">75</meter>
Der Inhalt innerhalb des <meter>
-Elements ist ein Rückfall für Browser, die das Element nicht unterstützen und für unterstützende Technologien, um es zu vokalisieren.
Fortschritt
Ein Fortschrittsbalken stellt einen Wert dar, der sich im Laufe der Zeit bis zu einem durch das max
-Attribut angegebenen Höchstwert ändert. Ein solcher Balken wird mit einem <progress>
-Element erstellt.
<progress max="100" value="75">75/100</progress>
Dies ist für die Implementierung von allem, was eine Fortschrittsberichterstattung erfordert, wie der Prozentsatz der heruntergeladenen Dateien oder die Anzahl der beantworteten Fragen in einem Fragebogen.
Der Inhalt innerhalb des <progress>
-Elements ist ein Rückfall für Browser, die das Element nicht unterstützen und für Screenreader, um es zu vokalisieren.
Testen Sie Ihr Wissen!
Sie haben das Ende dieses Artikels erreicht, aber können Sie sich an die wichtigsten Informationen erinnern? Sie können einige weitere Tests durchführen, um zu überprüfen, ob Sie diese Informationen behalten haben, bevor Sie fortfahren – siehe Test your skills: Other controls.
Zusammenfassung
Wie Sie in den letzten Artikeln gesehen haben, gibt es viele Arten von Formularelementen. Sie müssen sich nicht alle diese Details auf einmal merken und können so oft Sie möchten auf diese Artikel zurückgreifen, um Details nachzuschlagen.
Jetzt, da Sie einen Überblick über das HTML hinter den verschiedenen verfügbaren Formularelementen haben, schauen wir uns an, wie man sie gestaltet.