Normalerweise füge ich eine deaktivierte Option mit Leerzeichen als Bezeichnung hinzu.
Abhi Beckert
Antworten:
330
Der Ansatz mit deaktivierten Optionen scheint am besten auszusehen und am besten unterstützt zu werden. Ich habe auch ein Beispiel für die Verwendung der optgroup beigefügt.
Der Unicode hat in jsfiddle für mich hervorragend funktioniert, aber als ich versuchte, ihn in meinen Code zu kopieren / einzufügen, wurde er nicht richtig übersetzt. Für diejenigen mit diesem Problem lautet die HTML-Codierung für das Zeichen zum Zeichnen einer horizontalen Unicode-Box & # 9472; fileformat.info/info/unicode/char/2500/index.htm und es gibt auch eine schwerere Option unter & # 9473; fileformat.info/info/unicode/char/2501/index.htm
JeffG
1
Auf Mobile Firefox (und möglicherweise anderen mobilen Browsern) wird die disabledOption mit einem deaktivierten Optionsfeld rechts angezeigt ...
GoTo
Optgroups werden jedoch auf PC und Handy unterschiedlich gerendert, sodass die deaktivierte Option immer noch die beste Lösung ist.
GoTo
1
Die Codierung der HTML-Datei ist auch wichtig, damit die "─" -Zeichen anstelle von Kauderwelsch als Zeile angezeigt werden. UFT8 mit Stückliste könnte eine gute Wahl sein.
Andreas Jansson
1
@ db0 Das Erscheinungsbild ist inkonsistent. grab.by/EzEi vs grab.by/EzEk (siehe den Link jsfiddle).
Anstatt die Optgruppen mit einer Beschriftung zu versehen, fügen Sie diese Ihrem Stylesheet hinzu: optgroup + optgroup {Rand oben: 1 Pixel festes Schwarz} Sieht viel weniger kitschig aus als ein paar Striche.
Laurence Gonsalves
2
Optgroup-Labels sollten die Gruppe beschreiben. Wenn ein Browser gemäß dem Screenshot in der HTML 4.01-Spezifikation implementiert wäre, würde der Benutzer mit Strichreihen konfrontiert und müsste jeden einzelnen untersuchen, um herauszufinden, was dahinter steckt.
Quentin
2
@Laurence: IE7 unterstützt keine CSS-Stile für Optgroup- oder Optionselemente. Zumindest nicht grenzt
Eine leere Optgruppe wie diese ist kein legaler HTML-Code. Sie erhalten Validierungsfehler, wenn Sie es verwenden. Ich bevorzuge die Antwort von james.garriss.
Ariel
22
Dies ist ein alter Thread, aber da niemand eine ähnliche Antwort gepostet hat, werde ich dies hinzufügen, da dies meine bevorzugte Art der Trennung ist.
Ich finde die Verwendung von Bindestrichen und dergleichen etwas ärgerlich, da sie die Breite des Auswahlfelds unterschreiten könnten. Daher bevorzuge ich die Verwendung von CSS, um meine Trennzeichen zu erstellen. Eine einfache Hintergrundfarbe.
<select><optionstyle="background-color:#cccccc;"disabledselected>Select An Option</option><option>First Option</option><option>Second</option><optionstyle="font-size:1pt;background-color:#000000;"disabled> </option><option>Third</option><option>Fourth</option><optionstyle="font-size:1pt;background-color:#000000;"disabled> </option><option>Fifth</option><option>Sixth</option></select>
großartig ! Ich habe min-height verwendet: 1px; maximale Höhe: 1px; Polsterung: 0; anstelle der Schriftgröße: 1pt; für eine 1px Linie
Kofifus
15
Wenn Sie das optgroup-Element nicht verwenden möchten, fügen Sie die Bindestriche stattdessen in ein Optionselement ein und geben Sie ihm das Attribut disabled. Es wird sichtbar, aber ausgegraut sein.
Hallo James, ich mag diese Lösung auch, aber Bildschirmleser lesen "Option Dash Dash Dash Dash deaktivieren ...", was für behinderte Benutzer sehr verwirrend sein kann. Haben Sie eine Idee, wie wir dies vermeiden können? Danke!
Julio
1
Ist es möglich, visuellen Elementen, die nicht gesprochen werden sollen, eine Klasse hinzuzufügen und dann einen ARIA-Befehl hinzuzufügen, der die Klasse verbirgt / deaktiviert? Vielleicht so etwas wie eine der hier verwendeten Techniken? asurkov.blogspot.com/2012/02/…
james.garriss
Eigentlich, @Julio, solltest du dies als neue Frage posten. Ich bin neugierig zu wissen, aber ich habe noch nie für Screenreader programmiert.
James.garriss
9
Anstelle des normalen Hyphons, das ich durch ein horizontales Balkensymbol aus dem erweiterten Zeichensatz ersetzt habe, sieht es nicht besonders gut aus, wenn sich der Benutzer in einem anderen Land befindet, das dieses Zeichen ersetzt, aber für mich gut funktioniert. Es gibt eine Reihe verschiedener Charaktere, die Sie für einige großartige Effekte verwenden können, und es ist kein CSS beteiligt.
Die Antwort könnte mit einem jsfiddle-Beispiel verbessert werden. Dies scheint die am besten integrierte Lösung zu sein, die sich nicht auf Nebenwirkungen oder Hacks stützt, aber es wäre schön, die Bilder anderer Antworten zu vergleichen.
Raider33
Funktioniert nicht in vielen Browsern. (wie üblich, Eingaben sind ein Schmerz im Hintern)
Vierzig
5
Ich mache aus dem Kommentar von @Laurence Gonsalves eine Antwort, weil es die einzige ist, die semantisch funktioniert und nicht wie ein Hack aussieht.
Versuchen Sie, dies Ihrem Stylesheet hinzuzufügen:
optgroup + optgroup { border-top:1px solid black }
Dies ist tatsächlich der richtige Weg (wichtig, es werden keine bedeutungslosen Inhalte hinzugefügt). Ich mag es so zu gestalten (zusätzlichen vertikalen Raum um das Trennzeichen hinzufügen):optgroup { padding-bottom: 8px; } optgroup:not(:first-child) { padding-top: 8px; border-top: solid 1px #666; }
Nicolas Le Thierry d'Ennequin
3
Eine andere Möglichkeit besteht darin, ein CSS 1x1-Hintergrundbild für die Option zu verwenden, das nur mit Firefox zu funktionieren scheint und einen "----" - Fallback aufweist
Der Abstand zwischen den Zeichen wird von der Schriftart und der Rendering-Engine bestimmt. ZB sehe ich Leerzeichen zwischen Ihren Bindestrichen in Chrome (Windows), aber nicht in Safari (Mac).
Ich entschied mich dafür, Farbe und Hintergrund bedingt zu wechseln. Beim Festlegen einer Sortierreihenfolge und mit vue.js habe ich Folgendes gemacht:
Antworten:
Der Ansatz mit deaktivierten Optionen scheint am besten auszusehen und am besten unterstützt zu werden. Ich habe auch ein Beispiel für die Verwendung der optgroup beigefügt.
optgroup (auf diese Weise saugt irgendwie):
deaktivierte Option (etwas besser):
Und wenn Sie wirklich ausgefallen sein möchten, verwenden Sie das horizontale Unicode-Box-Zeichen.
(BESTE OPTION!)
http://jsfiddle.net/JFDgH/2/
quelle
disabled
Option mit einem deaktivierten Optionsfeld rechts angezeigt ...Versuchen:
quelle
Dies ist ein alter Thread, aber da niemand eine ähnliche Antwort gepostet hat, werde ich dies hinzufügen, da dies meine bevorzugte Art der Trennung ist.
Ich finde die Verwendung von Bindestrichen und dergleichen etwas ärgerlich, da sie die Breite des Auswahlfelds unterschreiten könnten. Daher bevorzuge ich die Verwendung von CSS, um meine Trennzeichen zu erstellen. Eine einfache Hintergrundfarbe.
quelle
Wenn Sie das optgroup-Element nicht verwenden möchten, fügen Sie die Bindestriche stattdessen in ein Optionselement ein und geben Sie ihm das Attribut disabled. Es wird sichtbar, aber ausgegraut sein.
quelle
Anstelle des normalen Hyphons, das ich durch ein horizontales Balkensymbol aus dem erweiterten Zeichensatz ersetzt habe, sieht es nicht besonders gut aus, wenn sich der Benutzer in einem anderen Land befindet, das dieses Zeichen ersetzt, aber für mich gut funktioniert. Es gibt eine Reihe verschiedener Charaktere, die Sie für einige großartige Effekte verwenden können, und es ist kein CSS beteiligt.
quelle
Definieren Sie eine Klasse in CSS:
Schreiben Sie in HTML:
quelle
Ich mache aus dem Kommentar von @Laurence Gonsalves eine Antwort, weil es die einzige ist, die semantisch funktioniert und nicht wie ein Hack aussieht.
Versuchen Sie, dies Ihrem Stylesheet hinzuzufügen:
Viel weniger kitschig als ein paar Striche.
quelle
optgroup { padding-bottom: 8px; } optgroup:not(:first-child) { padding-top: 8px; border-top: solid 1px #666; }
Eine andere Möglichkeit besteht darin, ein CSS 1x1-Hintergrundbild für die Option zu verwenden, das nur mit Firefox zu funktionieren scheint und einen "----" - Fallback aufweist
http://jsfiddle.net/yNecQ/6/
oder um Javascript (jquery) zu verwenden, um:
http://tutorialzine.com/2010/11/better-select-jquery-css3/
Siehe auch Wie füge ich eine horizontale Linie in ein HTML-Auswahlsteuerelement ein?
quelle
Wenn es sich nur um WebKit handelt, können Sie
<hr>
ein echtes Trennzeichen erstellen.http://code.google.com/p/chromium/issues/detail?id=99534
quelle
Sie können den Bindestrich "-" verwenden. Es gibt keine sichtbaren Leerzeichen zwischen den einzelnen Zeichen.
(In einigen Schriftarten!)
In HTML:
Oder in XHTML:
quelle
Dieser ist immer am besten.
quelle
Sie können dies auch tun. Es ist einfach und lässt den Teiler die Dropdown-Liste auswählen.
quelle
Ich entschied mich dafür, Farbe und Hintergrund bedingt zu wechseln. Beim Festlegen einer Sortierreihenfolge und mit vue.js habe ich Folgendes gemacht:
quelle