Eingabemethoden und Steuerungen für Benutzer

Webformulare erfordern Benutzereingaben. Bei der Gestaltung von Webformularen oder jeglichen Webinhalten ist es wichtig, zu berücksichtigen, wie Benutzer mit ihren Geräten und Browsern interagieren. Benutzerinteraktionen im Web gehen über einfache Maus- und Tastatureingaben hinaus: Denken Sie zum Beispiel an Touchscreens.

In diesem Artikel werfen wir einen Blick auf die verschiedenen Möglichkeiten, wie Benutzer mit Formularen und anderen Webinhalten interagieren. Wir geben Empfehlungen zur Verwaltung von Benutzereingaben, liefern praxisnahe Beispiele und Links zu weiterführenden Informationen.

Wenn Sie komplexere und interaktive Formulare oder andere Benutzeroberflächen-Features entwickeln, gibt es viele HTML-Elemente und JavaScript-APIs, die Sie in Betracht ziehen möchten. Sie könnten zum Beispiel benutzerdefinierte Formularelemente erstellen, die nicht-semantische Elemente erfordern, um Inhalte bearbeitbar zu machen. Sie könnten Touch-Ereignisse unterstützen, die Bildschirmorientierung bestimmen oder steuern, ein Formular im Vollbildmodus darstellen oder Drag-and-Drop-Funktionen aktivieren. Dieser Leitfaden stellt all diese Funktionen vor und verweist auf weiterführende Informationen zu jedem Thema.

Um eine gute Benutzererfahrung für die größtmögliche Anzahl von Benutzern zu bieten, müssen Sie mehrere Eingabemethoden unterstützen, einschließlich Maus, Tastatur, Fingerberührung und so weiter. Verfügbare Eingabemechanismen hängen von den Fähigkeiten des Geräts ab, auf dem die Anwendung läuft.

Sie sollten immer die Tastaturzugänglichkeit im Auge behalten – viele Webbenutzer navigieren nur mit der Tastatur durch Websites und Apps, und sie von Ihrer Funktionalität auszuschließen, ist keine gute Idee.

Behandelte Themen

  • Um Touchscreen-Displays zu unterstützen, interpretieren Touch-Ereignisse Fingeraktivitäten auf touchbasierten Benutzeroberflächen, von mobilen Geräten über Kühlschrankpanels bis hin zu Museumskioskanzeigen.
  • Die Fullscreen API ermöglicht es Ihnen, Ihre Inhalte im Vollbildmodus anzuzeigen, was notwendig ist, wenn Ihr Formular auf einem Kühlschrank oder Museumskiosk bereitgestellt wird.
  • Wenn Sie ein benutzerdefiniertes Formularelement erstellen müssen, wie einen Rich-Text-Editor, ermöglicht das contentEditable Attribut die Erstellung bearbeitbarer Steuerelemente aus normalerweise nicht bearbeitbaren HTML-Elementen.
  • Die Drag and Drop API erlaubt Benutzern, Elemente auf einer Seite zu ziehen und an verschiedenen Stellen abzulegen, was die Benutzererfahrung beim Auswählen von Dateien zum Hochladen oder beim Neuanordnen von Inhaltsmodulen innerhalb einer Seite verbessern kann.
  • Wenn die Bildschirmorientierung für Ihr Layout wichtig ist, können Sie CSS-Medienabfragen verwenden, um Ihre Formulare basierend auf der Orientierung des Browsers zu stylen. Sie können auch die Screen Orientation API verwenden, um den Bildschirmorientierungsstatus zu lesen und andere Aktionen durchzuführen.

Die folgenden Abschnitte bieten eine Reihe von Empfehlungen und Best Practices, um die größtmögliche Anzahl von Benutzern in die Lage zu versetzen, Ihre Websites und Anwendungen zu nutzen.

Unterstützung gängiger Eingabemechanismen

Tastatur

Die meisten Benutzer werden eine Tastatur verwenden, um Daten in Ihre Formularelemente einzugeben. Einige werden auch die Tastatur verwenden, um zu diesen Formularelementen zu navigieren. Zu beachten ist, dass alle Formularelemente ordnungsgemäß beschriftet sind, um zugänglich zu sein und eine bessere Benutzererfahrung zu bieten. Wenn jedes Formularelement korrekt mit einem <label> verknüpft ist, ist Ihr Formular für alle voll zugänglich, insbesondere für diejenigen, die mit einer Tastatur, einem Screenreader und möglicherweise ohne Bildschirm navigieren.

Wenn Sie zusätzliche Tastaturunterstützung hinzufügen möchten, wie zum Beispiel die Validierung eines Formularelements bei Drücken einer bestimmten Taste, können Sie Ereignislistener verwenden, um auf Tastaturereignisse zu reagieren. Zum Beispiel, wenn Sie Steuerelemente hinzufügen möchten, wenn eine beliebige Taste gedrückt wird, müssen Sie einen Ereignislistener für das Fenster-Objekt hinzufügen:

js
window.addEventListener("keydown", handleKeyDown, true);
window.addEventListener("keyup", handleKeyUp, true);

handleKeyDown und handleKeyUp sind Funktionen, die die Kontrolllogik definieren, die ausgeführt wird, wenn die keydown und keyup Ereignisse ausgelöst werden.

Hinweis: Schauen Sie sich die Ereignisreferenz und den KeyboardEvent Leitfaden an, um mehr über Tastaturereignisse zu erfahren.

Maus

Sie können auch Maus- und andere Zeigereignisse erfassen. Die Ereignisse, die auftreten, wenn der Benutzer mit einem Zeigegerät wie einer Maus interagiert, werden durch das MouseEvent DOM-Interface dargestellt. Häufige Mausereignisse sind click, dblclick, mouseup und mousedown. Eine Liste aller Ereignisse, die das Mausereignis-Interface verwenden, finden Sie in der Ereignisreferenz.

Wenn das Eingabegerät eine Maus ist, können Sie auch Benutzereingaben über die Pointer Lock API steuern und Drag & Drop implementieren (siehe unten). Sie können auch CSS verwenden, um die Unterstützung von Zeigegeräten zu testen.

Fingerberührung

Um zusätzliche Unterstützung für Touchscreen-Geräte bereitzustellen, ist es ratsam, die unterschiedlichen Fähigkeiten in Bezug auf Bildschirmauflösung und Benutzereingabe zu berücksichtigen. Touch-Ereignisse können Ihnen helfen, interaktive Elemente und gängige Interaktionsgesten auf Touchscreen-Geräten zu implementieren.

Wenn Sie Touch-Ereignisse verwenden möchten, müssen Sie Ereignislistener hinzufügen und Handlerfunktionen angeben, die aufgerufen werden sollen, wenn das Ereignis ausgelöst wird:

js
element.addEventListener("touchstart", handleStart, false);
element.addEventListener("touchcancel", handleCancel, false);
element.addEventListener("touchend", handleEnd, false);
element.addEventListener("touchmove", handleMove, false);

wobei element das DOM-Element ist, auf dem Sie die Touch-Ereignisse registrieren möchten.

Hinweis: Für weitere Informationen darüber, was Sie mit Touch-Ereignissen tun können, lesen Sie bitte unseren Touch-Ereignisse-Leitfaden.

Zeigereignisse

Mäuse sind nicht die einzigen Zeigegeräte. Die Geräte Ihrer Benutzer können mehrere Eingabeformen wie Maus, Fingerberührung und Stifteingabe enthalten. Jeder dieser Zeiger hat eine andere Größe. Die Pointer Events API kann nützlich sein, wenn Sie Ereignisse geräteübergreifend verwalten müssen, indem Sie die Handhabung jedes einzelnen normalisieren. Ein Zeiger kann jeder Kontaktpunkt auf dem Bildschirm sein, der von einem Mauszeiger, Stift, Berührung (einschließlich Multi-Touch) oder einem anderen Eingabegerät erzeugt wird.

Die Ereignisse zur Behandlung von generischer Zeigereingabe sehen ähnlich aus wie die für die Maus: pointerdown, pointermove, pointerup, pointerover, pointerout, etc. Das PointerEvent Interface bietet alle Details, die Sie möglicherweise über das Zeigegerät erfassen möchten, einschließlich seiner Größe, Druck und Winkel.

Steuerungen implementieren

Bildschirmorientierung

Wenn Sie leicht unterschiedliche Layouts benötigen, je nachdem, ob der Benutzer den Hoch- oder Querformatmodus verwendet, können Sie CSS-Medienabfragen verwenden, um CSS für verschiedene Layouts oder Formularelementbreiten basierend auf der Größe oder Ausrichtung des Bildschirms beim Styling von Webformularen zu definieren.

Wenn die Bildschirmorientierung für Ihr Formular wichtig ist, können Sie den Bildschirmorientierungsstatus lesen, benachrichtigt werden, wenn sich dieser Zustand ändert, und in der Lage sein, die Bildschirmorientierung auf einen bestimmten Zustand (normalerweise Hochformat oder Querformat) zu sperren, durch die Screen Orientation API.

Hinweis: Weitere Informationen zur Screen Orientation API finden Sie unter Verwaltung der Bildschirmorientierung.

Vollbild

Wenn Sie Ihr Formular im Vollbildmodus präsentieren müssen, wie zum Beispiel, wenn Ihr Formular auf einem Museumskiosk, einer Mautstation oder wirklich jeder öffentlich angezeigten Benutzeroberfläche angezeigt wird, ist es möglich, dies zu tun, indem Sie Element.requestFullscreen() auf diesem Element aufrufen:

js
const elem = document.getElementById("myForm");
if (elem.requestFullscreen) {
  elem.requestFullscreen();
}

Hinweis: Um mehr darüber zu erfahren, wie Sie Ihrer Anwendung die Vollbildfunktionalität hinzufügen, lesen Sie unsere Dokumentation über Verwendung des Vollbildmodus.

Drag & Drop

Eine häufige Benutzerinteraktion ist das physische Ziehen von Elementen, um sie an anderer Stelle auf dem Bildschirm fallen zu lassen. Drag and Drop kann die Benutzererfahrung verbessern, wenn es darum geht, Dateien zum Hochladen auszuwählen oder Inhaltsmodule innerhalb einer Seite neu anzuordnen. Es gibt eine API dafür!

Die Drag & Drop API ermöglicht es Benutzern, die Maustaste über einem Element gedrückt zu halten, es an einen anderen Ort zu ziehen und die Maustaste loszulassen, um das Element dort abzulegen.

Hier ist ein Beispiel, das ermöglicht, einen Abschnitt von Inhalten zu ziehen.

html
<div draggable="true">This text <strong>may</strong> be dragged.</div>
js
document.querySelector("div").addEventListener("dragstart", (event) => {
  event.dataTransfer.setData("text/plain", "This text may be dragged.");
});

in dem wir:

  • Die draggable Eigenschaft auf true setzen, um das Element, das Sie ziehbar machen möchten.
  • Einen Listener für das dragstart Ereignis hinzufügen und die Ziehdaten innerhalb dieses Listeners setzen.

Hinweis: Weitere Informationen finden Sie in der MDN Drag & Drop Dokumentation.

contentEditable

Im Allgemeinen sollten Sie ein <textarea> oder einen geeigneten <input>-Typ innerhalb eines <form> verwenden, um Daten von Benutzern zu sammeln, zusammen mit einem beschreibenden <label>. Aber diese Elemente entsprechen möglicherweise nicht Ihren Anforderungen. Zum Beispiel erfassen Rich-Text-Editoren kursiv, fett und normalen Text, jedoch kein natives Formularelement erfasst Rich-Text. Dieser Anwendungsfall erfordert, dass Sie ein benutzerdefiniertes Steuerelement erstellen, das sowohl stilisierbar als auch bearbeitbar ist. Dafür gibt es ein Attribut!

Jedes DOM-Element kann direkt bearbeitbar gemacht werden, indem das contenteditable Attribut verwendet wird.

html
<div contenteditable="true">This text can be edited by the user.</div>

Das contenteditable Attribut fügt das Element automatisch in die Standardreihenfolge der Tabulatoren des Dokuments ein, was bedeutet, dass das tabindex Attribut nicht hinzugefügt werden muss. Wenn Sie jedoch nicht-semantische Elemente zur Dateneingabe verwenden, wenn Sie Ihre eigenen Formularelemente erstellen, müssen Sie JavaScript und ARIA hinzufügen, um das Element mit der Formularelementfunktionalität für alles andere nachzurüsten.

Um eine gute Benutzererfahrung zu bieten, muss jedes benutzerdefinierte Formularelement, das Sie erstellen, zugänglich sein und wie native Formularelemente funktionieren:

Hinweis: Beispiele und andere Ressourcen finden Sie im Content Editable Leitfaden.

Tutorials

Referenz