Heim > Web-Frontend > CSS-Tutorial > Leichte automatische Steuerelemente mit dem HTML5 -Datalisten

Leichte automatische Steuerelemente mit dem HTML5 -Datalisten

Jennifer Aniston
Freigeben: 2025-02-10 15:18:08
Original
874 Leute haben es durchsucht

Leichte automatische Steuerelemente mit dem HTML5 -Datalisten

In diesem Tutorial werden wir ein tiefes Tauchgang in das wenig verwendete HTML5 -Element einnehmen. Es kann eine leichte, zugängliche Cross-Browser-Autokontrolle implementieren, für die kein JavaScript erforderlich ist.

Key Takeaways

  • Das HTML5 `` -Element bietet eine leichte, zugängliche und Kreuzbrowser-Lösung für Autokontrollensteuerelemente, ohne sich auf JavaScript zu verlassen.
  • Im Gegensatz zu `
  • Browserunterstützung für `` ist in modernen Browsern, einschließlich Internet Explorer 10 und 11, robust. Für ältere Browser werden für ältere Browser eine Kombination aus `
  • Das Element `` kann nicht direkt mit CSS gestylt werden, was die Anpassung einschränkt, sondern die Konsistenz über verschiedene Browser und Plattformen sorgt.
  • Verbesserungen wie AJAX können in "" integriert werden, um Optionen basierend auf der Benutzereingabe dynamisch zu füllen, die Funktionalität und die Benutzererfahrung in Anwendungen zu verbessern, die Echtzeitdaten-Feedback erfordern.

Was ist los mit

html5

  • Es gibt viele Optionen, wie Länder oder Jobtitel
  • Der Benutzer möchte seine eigene Option eingeben, die nicht in der Liste steht

Die offensichtliche Lösung ist eine automatische Kontrolle. Auf diese Weise kann der Benutzer einige Zeichen eingeben, was die für eine schnellere Auswahl verfügbaren Optionen einschränkt.

Entwickler wenden sich häufig an eine der vielen JavaScript-Lösungen, aber eine benutzerdefinierte automatische Kontrolle ist nicht immer erforderlich. Das HTML5 -Element ist leicht, zugänglich und hat keine JavaScript -Abhängigkeiten. Möglicherweise haben Sie gehört, dass es fehlerhaft ist oder es fehlt. Das stimmt 2021 nicht, aber es gibt Browser -Inkonsistenzen und Vorbehalte.

Schnellstart

Ihr Land aus einer Liste mit mehr als 200 Optionen auswählen, ist ein idealer Kandidat für eine automatische Kontrolle. Definieren Sie a mit Child

<span><span><span><datalist</span> id<span>="countrydata"</span>></span>
</span>  <span><span><span><option</span>></span>Afghanistan<span><span></option</span>></span>
</span>  <span><span><span><option</span>></span>Åland Islands<span><span></option</span>></span>
</span>  <span><span><span><option</span>></span>Albania<span><span></option</span>></span>
</span>  <span><span><span><option</span>></span>Algeria<span><span></option</span>></span>
</span>  <span><span><span><option</span>></span>American Samoa<span><span></option</span>></span>
</span>  <span><span><span><option</span>></span>Andorra<span><span></option</span>></span>
</span>  <span><span><span><option</span>></span>Angola<span><span></option</span>></span>
</span>  <span><span><span><option</span>></span>Anguilla<span><span></option</span>></span>
</span>  <span><span><span><option</span>></span>Antarctica<span><span></option</span>></span>
</span>  ...etc...
<span><span><span></datalist</span>></span>
</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Die ID des Datalists kann dann durch ein Listenattribut in jedem Feld verwiesen werden:

<span><span><span><label</span> for<span>="country"</span>></span>country<span><span></label</span>></span>
</span>
<span><span><span><input</span> type<span>="text"</span>
</span></span><span>  <span>list<span>="countrydata"</span>
</span></span><span>  <span>id<span>="country"</span> name<span>="country"</span>
</span></span><span>  <span>size<span>="50"</span>
</span></span><span>  <span>autocomplete<span>="off"</span> /></span>
</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

verwirrend ist es am besten, autocomplete = "off" festzulegen. Dies stellt sicher

Das Ergebnis:

Leichte automatische Steuerelemente mit dem HTML5 -Datalisten

Dies ist das Standard -Rendering in Microsoft Edge. Andere Anwendungen implementieren ähnliche Funktionen, aber das Aussehen unterscheidet sich über Plattformen und Browser hinweg.

Verwenden des Etiketts als Textkind einer

<span><span><span><datalist</span> id<span>="countrydata"</span>></span>
</span>  <span><span><span><option</span>></span>Afghanistan<span><span></option</span>></span>
</span>  <span><span><span><option</span>></span>Åland Islands<span><span></option</span>></span>
</span>  <span><span><span><option</span>></span>Albania<span><span></option</span>></span>
</span>  <span><span><span><option</span>></span>Algeria<span><span></option</span>></span>
</span>  <span><span><span><option</span>></span>American Samoa<span><span></option</span>></span>
</span>  <span><span><span><option</span>></span>Andorra<span><span></option</span>></span>
</span>  <span><span><span><option</span>></span>Angola<span><span></option</span>></span>
</span>  <span><span><span><option</span>></span>Anguilla<span><span></option</span>></span>
</span>  <span><span><span><option</span>></span>Antarctica<span><span></option</span>></span>
</span>  ...etc...
<span><span><span></datalist</span>></span>
</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Die Verwendung eines Wertattributs erzeugt identische Ergebnisse:

<span><span><span><label</span> for<span>="country"</span>></span>country<span><span></label</span>></span>
</span>
<span><span><span><input</span> type<span>="text"</span>
</span></span><span>  <span>list<span>="countrydata"</span>
</span></span><span>  <span>id<span>="country"</span> name<span>="country"</span>
</span></span><span>  <span>size<span>="50"</span>
</span></span><span>  <span>autocomplete<span>="off"</span> /></span>
</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Hinweis: Der Schließ /> Schrägstrich ist in HTML5 optional, obwohl er dazu beitragen könnte, Codierungsfehler zu verhindern.

Sie können auch einen Wert gemäß einer ausgewählten Etikett mit einem der folgenden Formate festlegen.

Option 1:

<span><span><span><datalist</span> id<span>="mylist"</span>></span>
</span>  <span><span><span><option</span>></span>label one<span><span></option</span>></span>
</span>  <span><span><span><option</span>></span>label two<span><span></option</span>></span>
</span>  <span><span><span><option</span>></span>label three<span><span></option</span>></span>
</span><span><span><span></datalist</span>></span>
</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Option 2:

<span><span><span><datalist</span> id<span>="mylist"</span>></span>
</span>  <span><span><span><option</span> value<span>="label one"</span> /></span>
</span>  <span><span><span><option</span> value<span>="label two"</span> /></span>
</span>  <span><span><span><option</span> value<span>="label three"</span> /></span>
</span><span><span><span></datalist</span>></span>
</span>
Nach dem Login kopieren
Nach dem Login kopieren

In beiden Fällen ist das Eingangsfeld auf 1, 2 oder 3 eingestellt, wenn eine gültige Option ausgewählt wird, die Benutzeroberfläche variiert jedoch über Browser:

  • Chrome zeigt eine Liste mit dem Wert und dem Etikett. Nur der Wert bleibt, sobald eine Option ausgewählt ist.
  • Firefox zeigt nur eine Liste mit dem Etikett. Es wechselt auf den Wert, sobald eine Option ausgewählt ist.
  • Kante zeigt nur den Wert.

Das folgende CodePen -Beispiel zeigt alle Variationen:

Siehe den Stift
html5 automatische Beispiele von SitePoint (@sinepoint)
auf CodePen.

Implementierungen werden sich entwickeln, aber ich würde vorerst empfehlen, keinen Wert und Kennzeichnung zu verwenden, da es wahrscheinlich die Benutzer verwirren. (Eine Problemumgehung wird unten erörtert.)

Browser -Unterstützung und Fallbacks

Das Element wird sowohl in modernen Browsern als auch in Internet Explorer 10 und 11:

gut unterstützt.

Leichte automatische Steuerelemente mit dem HTML5 -Datalisten

Es gibt mehrere Implementierungsnotizen, aber sie beeinflussen keinen Einfluss auf die meisten Nutzungen. Das Schlimmste, was passieren könnte, ist, dass ein Feld zu einer Standardtexteingabe zurückkehrt.

Wenn Sie IE9 und unten unbedingt unterstützen müssen, gibt es ein Fallback -Muster, das in Verbindung mit einer Texteingabe einen Standard verwendet, wenn der fehlschlägt. Anpassung des Landes Beispiel:

<span><span><span><datalist</span> id<span>="countrydata"</span>></span>
</span>  <span><span><span><option</span>></span>Afghanistan<span><span></option</span>></span>
</span>  <span><span><span><option</span>></span>Åland Islands<span><span></option</span>></span>
</span>  <span><span><span><option</span>></span>Albania<span><span></option</span>></span>
</span>  <span><span><span><option</span>></span>Algeria<span><span></option</span>></span>
</span>  <span><span><span><option</span>></span>American Samoa<span><span></option</span>></span>
</span>  <span><span><span><option</span>></span>Andorra<span><span></option</span>></span>
</span>  <span><span><span><option</span>></span>Angola<span><span></option</span>></span>
</span>  <span><span><span><option</span>></span>Anguilla<span><span></option</span>></span>
</span>  <span><span><span><option</span>></span>Antarctica<span><span></option</span>></span>
</span>  ...etc...
<span><span><span></datalist</span>></span>
</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Siehe den Stift
html5 Autoperete Fallback von SitePoint (@sinepoint)
auf CodePen.

In modernen Browsern werden die

In IE9 und unten sind sowohl die (sehr langen)

Leichte automatische Steuerelemente mit dem HTML5 -Datalisten

Beide Werte können in alten IES eingegeben werden. Ihre Bewerbung muss entweder:

  • entscheiden Sie, welches am gültigsten ist oder
  • Verwenden Sie eine kleine JavaScript -Funktion, um eine zurückzusetzen, wenn das andere geändert wird

Verwenden von für Nicht-Text-Steuerelemente

Chrome-basierte Browser können auch -Werte anwenden auf:

  1. Eine Eingabe mit dem Typ "Datum". Der Benutzer kann aus einer Reihe von Optionen wählen, die als YJJJ-MM-DD-Werte definiert sind, aber in seinem Gebietsschemasformat dargestellt werden.

  2. Ein Eingang mit der Art der "Farbe". Der Benutzer kann aus einer Auswahl von Farboptionen wählen, die als sechsstellige Hex-Werte definiert sind (dreistellige Werte funktionieren nicht).

  3. Ein Eingang mit einer Art "Bereich". Der Schieberegler zeigt Zeckenspuren an, obwohl dies nicht eingeschränkt ist, welcher Wert eingegeben werden kann.

Siehe den Stift
html5 auf anderen Eingabetypen nach SitePoint (@sinepoint)
auf CodePen.

CSS -Styling

Wenn Sie jemals Probleme mit einem -Box ausgewählt haben, hatten Sie es einfach!

An kann als normal gestaltet werden, aber ein verknüpfter und seine Kinder

Ich hoffe, diese Situation verbessert sich, aber im Moment wird eine Lösung bei MDN vorgeschlagen, die:

  1. überschreibt das Standard -Browser -Verhalten
  2. behandelt die wie eine
    effektiv, sodass es in CSS gestylt werden kann
  3. repliziert alle automatischen Funktionen in JavaScript
  4. Ich habe es weiter erweitert und der Code ist auf GitHub verfügbar. Laden Sie das Skript überall in Ihrer HTML -Seite als ES6 -Modul. Die JSDelivr CDN -URL kann verwendet werden:

    <span><span><span><datalist</span> id<span>="countrydata"</span>></span>
    </span>  <span><span><span><option</span>></span>Afghanistan<span><span></option</span>></span>
    </span>  <span><span><span><option</span>></span>Åland Islands<span><span></option</span>></span>
    </span>  <span><span><span><option</span>></span>Albania<span><span></option</span>></span>
    </span>  <span><span><span><option</span>></span>Algeria<span><span></option</span>></span>
    </span>  <span><span><span><option</span>></span>American Samoa<span><span></option</span>></span>
    </span>  <span><span><span><option</span>></span>Andorra<span><span></option</span>></span>
    </span>  <span><span><span><option</span>></span>Angola<span><span></option</span>></span>
    </span>  <span><span><span><option</span>></span>Anguilla<span><span></option</span>></span>
    </span>  <span><span><span><option</span>></span>Antarctica<span><span></option</span>></span>
    </span>  ...etc...
    <span><span><span></datalist</span>></span>
    </span>
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren

    oder Sie können es mit NPM installieren, wenn Sie einen Bundler verwenden:

    <span><span><span><label</span> for<span>="country"</span>></span>country<span><span></label</span>></span>
    </span>
    <span><span><span><input</span> type<span>="text"</span>
    </span></span><span>  <span>list<span>="countrydata"</span>
    </span></span><span>  <span>id<span>="country"</span> name<span>="country"</span>
    </span></span><span>  <span>size<span>="50"</span>
    </span></span><span>  <span>autocomplete<span>="off"</span> /></span>
    </span>
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren

    Ihr Elemente muss das Format verwenden. Zum Beispiel:

    <span><span><span><datalist</span> id<span>="mylist"</span>></span>
    </span>  <span><span><span><option</span>></span>label one<span><span></option</span>></span>
    </span>  <span><span><span><option</span>></span>label two<span><span></option</span>></span>
    </span>  <span><span><span><option</span>></span>label three<span><span></option</span>></span>
    </span><span><span><span></datalist</span>></span>
    </span>
    Nach dem Login kopieren
    Nach dem Login kopieren
    Nach dem Login kopieren

    Hinweis: kann nicht verwendet werden, da es zu einem leeren Element führt, das nicht gestylt werden kann!

    cs Zum Beispiel:

    <span><span><span><datalist</span> id<span>="mylist"</span>></span>
    </span>  <span><span><span><option</span> value<span>="label one"</span> /></span>
    </span>  <span><span><span><option</span> value<span>="label two"</span> /></span>
    </span>  <span><span><span><option</span> value<span>="label three"</span> /></span>
    </span><span><span><span></datalist</span>></span>
    </span>
    Nach dem Login kopieren
    Nach dem Login kopieren

    Beispiel:

    Siehe das Stift
    html5 automatischer CSS -Styling von SitePoint (@sitepoint)
    auf CodePen.

    Styling funktioniert, aber ist es die Mühe wert? Ich vermute nicht…

    • Implementieren Sie die Standardtastatur, Maus und Berührungssteuerungen des Browsers mit angemessener Zugänglichkeit ist schwierig. Das MDN -Beispiel unterstützt keine Tastaturereignisse, und obwohl ich versucht habe, es zu verbessern, wird es zwangsläufig Probleme auf einigen Geräten geben.
    • Sie verlassen sich auf 200 Zeilen von JavaScript, um ein CSS -Problem zu lösen. Es wird auf 1,5 KB abgebaut, könnte jedoch Leistungsprobleme einführen, wenn Sie auf derselben Seite viele lange Elemente benötigen.
    • Wenn JavaScript eine Anforderung ist
    Die Steuerung fällt auf einen Standard -HTML5 ohne Styling zurück, wenn JavaScript fehlschlägt, aber das ist ein kleiner Vorteil.

    Erstellen eines AJAX-verbesserten

    Vorausgesetzt, Ihr Designer akzeptiert gerne die Unterschiede im Browser -Styling. Es ist möglich, die Standard -Funktionalität mithilfe von JavaScript zu verbessern. Zum Beispiel:

      optionale Validierung implementieren, die nur einen bekannten Wert im
    1. akzeptiert
    2. set
    Der Code muss in erster Linie

Das obige ist der detaillierte Inhalt vonLeichte automatische Steuerelemente mit dem HTML5 -Datalisten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage