Es gab schon immer große Unterschiede darin, wie verschiedene Browser Formular-Elemente gestalten. Das wird wahrscheinlich auch immer so bleiben – da UI-Design-Entscheidungen nicht in den Spezifikationen festgelegt sind. Browserhersteller sehen dies vielleicht als eine Möglichkeit, das Benutzererlebnis etwas zu differenzieren. Select- (Dropdown-) Menüs sind da besonders seltsam.
Wenn ich Dropdown-Menü sage, meine ich
<select>
<option>Apples</option>
<option>Oranges</option>
<option>Banannas</option>
</select>
Wenn man CSS komplett weglässt, wird dies in allen Browsern konsistent dargestellt. Auf Macs 11px Lucida Grande.

Das Styling von Select-Elementen hat sich seit dem Schreiben dieses Artikels ein wenig geändert. Mitte 2020 haben wir immer noch keine erstaunliche Styling-Kontrolle, aber man kann mit dieser Technik das Äußere ziemlich gut stylen.
Was passiert, wenn Sie die Schriftart ändern?
select {
font-family: Cursive;
}
WebKit-Browser (Safari, Chrome) ignorieren Sie. Firefox, Opera und IE respektieren Ihre Änderung. Die font-family wird jedoch nicht in das Select-Element übernommen, Sie müssen sie explizit darauf deklarieren.
Was passiert, wenn Sie die Schriftgröße ändern?
select {
font-size: 32px;
}
Das ist ein interessanter Punkt. In WebKit wird bei einer Schriftgröße zwischen 0 und 10 Pixeln die Schriftgröße als 10 Pixel gerendert. Von 11px bis 15px wird sie als 11px gerendert, und ab 16px wird sie (warten Sie es ab) als 14px gerendert. Dieses Verhalten ähnelt der Art und Weise, wie Suchfelder behandelt werden.
Firefox, Opera und IE respektieren Ihre Änderung, aber wieder nur, wenn sie explizit auf dem Select-Element deklariert ist, sie wird nicht übernommen.

Kann man WebKit dazu bringen, Ihre Änderungen zu respektieren?
Irgendwie. Sie können border: 0; auf den Select-Elementen setzen, und es wird wie eine etwas schlechte Version eines Dropdowns aussehen, aber immer noch eine gewisse Benutzeroberfläche haben. Es wird auch Ihre Schriftgrößen- und Stilwahl durchlassen.

Sie können auch -webkit-appearance: none; setzen und Sie erhalten eine abgerundete Eingabebox, die aber immer noch die Interaktionen eines Select-Elements hat (Klick zum Anzeigen des Menüs, Tastaturbefehle usw.). Auf diese Weise werden auch Ihre Schriftwahlen respektiert.

Ich würde sagen, das Aussehen ist Ihre beste Wahl für vollständig benutzerdefinierte Dropdowns, aber es wäre nur für WebKit, da -moz-appearance: none; zwar funktioniert, aber nicht die gesamte Chrome entfernt, nur einen Teil. Opera unterstützt appearance überhaupt nicht.
Was ist mit dem Dropdown selbst?
Damit meine ich das Ding, das die Auswahlmöglichkeiten anzeigt, wenn es aktiviert wird. Soweit ich weiß, gibt es in keinem Browser die Möglichkeit, diese zu stylen. Nicht einmal fett oder kursiv. Das Nächstliegende, was Sie an Styling erhalten können, ist, sie durch die Verwendung von zu gruppieren. Dies ist wahrscheinlich hauptsächlich eine UI-Sache, aber es könnte auch ein Sicherheitsaspekt sein. Sie möchten nicht, dass Leute mit Schriftarten herumspielen, die es unklar machen, welche Option ausgewählt ist.
Was, wenn Sie vollständige Designkontrolle wünschen?
Versuchen Sie zuerst alles, um das unnötig zu machen. Standard-Formularelemente sind vertraut und funktionieren gut. Ein Dropdown-Menü an die Schriftart und Farben Ihrer Marke anzupassen, ist normalerweise nicht notwendig und im besten Fall aufdringlich und im schlimmsten Fall schlechte UX.
Wenn Sie entscheiden, dass es absolut eine gute Idee ist, ein Dropdown anzupassen, dann sollten Sie JavaScript verwenden, um
- Das ursprüngliche Select-Element zugänglich verstecken.
- Das Select-Element mit benutzerdefiniertem Markup (wahrscheinlich eine Definitionsliste) neu aufbauen, das Sie nach Belieben gestalten können.
- Alle Funktionalitäten der Standard-Select-Elemente nachzubilden, einschließlich: Tastaturereignisse wie Pfeiltasten nach oben und unten und Enter zum Auswählen, Scrollen langer Listen, Öffnen des Menüs nach oben, wenn das Select-Element am unteren Bildschirmrand liegt, um nur einige zu nennen.
- Für Mobilgeräte das Öffnen des nativen Select-Menüs auslösen, da diese Funktionalität kaum nachzubilden ist. Zum Beispiel das iOS-Flipwheel.
- Sie könnten auch einen "Click-Through"-Stil für Desktops in Betracht ziehen. Das Select-Element ist standardmäßig benutzerdefiniert gestaltet, aber wenn Sie darauf klicken, öffnet sich das native Dropdown-Menü (an Ort und Stelle). Wenn Sie eine Option auswählen, wird wieder das benutzerdefinierte Styling mit der angezeigten Wahl angezeigt.
Es ist viel Arbeit und leicht, etwas falsch zu machen, also seien Sie vorsichtig. Dieses Tutorial behandelt einige dieser Schwierigkeiten. Hier ist ein Pen mit einigen der Tests aus diesem Artikel.
Gute Arbeit. Schade, dass das Styling von Dropdowns selbst so spät kam. Ich verstehe immer noch nicht – warum waren Select-Boxen bisher nicht mit CSS editierbar? Alle Eingabeelemente konnten schon vor langer Zeit modifiziert werden, aber keine Selects :). Ich benutze immer noch JS, um diese für alle Browser gleich zu machen, wie Sie im letzten Absatz beschrieben haben, und ich vermute, dass diese Lösung noch mindestens ein paar Jahre erforderlich sein wird
Nicht nur Selects sind nicht editierbar – auch Checkboxen, Radios und Dateieingaben (die überhaupt nicht editierbar sind). Das Problem ist, dass diese Formularelemente nicht vom Browser, sondern vom Betriebssystem gesteuert werden. Die Standard-Select-, Checkbox-, Radio- oder Dateieingabe sieht selbst im Firefox unter Windows, Linux und Mac OS sehr unterschiedlich aus (dasselbe gilt für andere Browser auf verschiedenen Betriebssystemen).
Wenn Sie die Checkbox stylen oder ein anderes Dateieingabe-Erscheinungsbild wünschen, benötigen Sie immer noch eine JS-Bibliothek, um das Ziel zu erreichen.
Wow, tolle Zeit. Ich habe gerade dafür recherchiert, danke!
Für mich ist eines der Dinge, die mich an (Win) Chrome stören, die Schrift. Sie sehen immer zerhackt aus und dann muss ich alle möglichen Hacks anwenden, um sie besser aussehen zu lassen. Wie die Schrift auf dieser Seite sieht für mich jetzt zerhackt aus. Besonders die Menüschrift oben.
Die Community beschwert sich seit über einem Jahr bei Chrome darüber, aber sie haben nichts unternommen.
Das liegt hauptsächlich daran, dass Microsoft die Schrift-Kantenglättung dem Benutzer überlassen hat (warum? keine Ahnung, sie machen seltsame Dinge, aber sie hätten es zumindest standardmäßig gut aussehen lassen können). Gehen Sie unter Systemsteuerung -> Darstellung und Personalisierung -> Text von ClearType anpassen und stellen Sie sicher, dass es aktiviert ist. Schriftarten sollten im Allgemeinen viel schöner aussehen.
Meiner Meinung nach rendert OS X Schriftarten sogar mit aktiviertem ClearType schöner, aber es sollte Ihnen zumindest ein wenig helfen.
Smashing Magazine hatte einen großartigen Artikel dazu: http://www.smashingmagazine.com/2012/04/24/a-closer-look-at-font-rendering/
Chrome verwendet immer noch die alte Schrift-Rendering-Methode von Windows, während Firefox und IE9 die neue DirectWrite-Rendering-Methode verwenden. DirectWrite sieht meiner Meinung nach großartig aus, ich würde mir wünschen, dass Chrome es unterstützt.
ClearType macht keinen Unterschied, wie Chrome Text rendert. Aber ja, Chrome ist besonders schlecht im Rendern der meisten Schriftarten.
Oh, und ich habe gerade bemerkt, dass css-tricks unter Windows Safari Chris kaputt ist. Ich werde Ihnen einen Screenshot/Details zukommen lassen, damit Sie es überprüfen können.
Ich wollte nur darauf hinweisen, dass einige der Dropdown-Plugins nicht wirklich das tun, was sie sollen. Ich habe noch keines gefunden, das Ereignisse sowohl auf dem echten (versteckten) Dropdown als auch auf dem gestylten (DIV) Dropdown auslöst. Zustände werden normalerweise richtig aktualisiert, aber Ereignisse werden nicht wie erwartet weitergegeben.
Meine Lieblingstechnik bisher ist die jQuery Mobile-Methode, bei der ein unsichtbares natives Dropdown über einem gestylten Dropdown positioniert wird. Alle Ereignisse und Verhaltensweisen finden auf dem echten Dropdown statt, und Sie müssen nur das gestylte DIV mit dem ausgewählten Wert aktualisieren. Der einzige Nachteil ist, dass Sie die Optionen immer noch nicht stylen können (das ist jedoch kein Nachteil bei Mobilgeräten).
Schauen Sie sich das an, das ein Freund und ich gemacht haben, es scheint den Trick zu machen.
http://andrew-jones.me/blog/styling-select-items/
Ich würde normalerweise davon abraten, Elemente zu stylen, weil es leicht ist, es falsch zu machen.
Allerdings hatte ich in letzter Zeit guten Erfolg damit, zuerst Modernizr zu verwenden, um eine sehr neue Eigenschaft (z. B. Randbilder) zu erkennen, dann
-webkit-appearance: none;zu verwenden und das Dropdown mit :before und :after-Elementen neu zu stylen.Verwendung von
@moz-document-url-prefix, um einige Firefox-Probleme zu beheben (nämlich reagiert Firefox anders auf Zeilenhöhe und Abstände in Formularelementen)Das funktioniert ziemlich gut: IE9, IE10, Chrome und Firefox erhalten alle das schöne Select-Element. Wenn Sie darauf klicken, erhalten Sie die nativen Optionen (dies ist nicht stylbar).
Es ist jedoch auch nicht sehr zukunftssicher: Sobald Opera "obskure Eigenschaft" unterstützt, fällt der Plan auseinander.
Die Verwendung von JS, um ein benutzerdefiniertes Dropdown zu erstellen, wird nicht empfohlen, aber manchmal muss man es tun: Vielleicht möchten Sie ein Mega-Dropdown oder Inhalte anzeigen, die nicht nur Listen im Dropdown sind.
Es gibt eine Menge Dinge, die Leute vergessen, wenn sie benutzerdefinierte Dropdowns codieren, die im Artikel erwähnte Demo implementiert zum Beispiel nicht (1) ESC-Taste zum Schließen (2) Klicken außerhalb zum Schließen. Dann gibt es (3) mehrere Dropdowns auf 1 Seite (4) keine z-index-Konflikte mit Modals und anderen überlagerten Elementen. Die Liste geht weiter.
Ich hoffe, Browserhersteller leisten gute Arbeit beim "Shadow DOM", um jedes einzelne UI-Element stylbar zu machen. Das wird helfen, das Web als echte App-Plattform wachsen zu lassen (im Gegensatz zu nativen Apps).
Ich beschäftige mich schon seit einiger Zeit mit Dropboxen für ein Projekt. Da ich hauptsächlich auf Linux arbeite, habe ich bemerkt, dass (im Allgemeinen) neuere Browser CSS-Regeln besser befolgen.
Hier sind einige Screenshots für Chrome, Firefox & Opera, aufgenommen auf Ubuntu 12.10.
Ich stimme dem letzten Abschnitt entschieden nicht zu. "Ein Dropdown-Menü an die Schriftart und Farben Ihrer Marke anzupassen, ist normalerweise nicht notwendig und im besten Fall aufdringlich und im schlimmsten Fall schlechte UX."
Der einzige Grund, warum es heute "schlechte UX" ist, liegt an der begrenzten Technologie in der Vergangenheit. Viele "Standard"-Vorgehensweisen im Web wurden aufgrund dieser Einschränkungen zum Standard, und jetzt, wo die Einschränkungen aufgehoben sind, denke ich, ist es Zeit, uns auszubreiten. Nicht alle Select-Menüs müssen gleich aussehen. Es ist möglich, ein Select-Menü zu entwerfen, das immer noch wie ein Select-Menü aussieht, aber nicht wie das Standard-Betriebssystem.
Wenn wir die Dinge weiterhin genau so machen, wie die Benutzer es erwarten, wird das Design im Web niemals Fortschritte machen. Ich sage, wir sollten die Grenzen erweitern, wann immer wir können, solange es passt. Tun Sie Ihr Bestes, um sicherzustellen, dass es für Leute in älteren Browsern funktioniert, aber bedienen Sie die Leute, die auf dem neuesten Stand bleiben, solange sie nicht die riesige Minderheit sind. Die Zukunft ist nicht voller Standard-Styling von irgendetwas. Die Zukunft ist weit offen.
Das ist sicherlich nicht der einzige Grund, warum es schlechte UX ist. Jede Abweichung vom Standard-Betriebssystem-Stil für Formularsteuerelemente wird mit Sicherheit jemanden verwirren. In Anbetracht dessen, dass Sie absolut keine Ahnung haben, welches Betriebssystem ein Benutzer verwendet und damit auch nicht dessen Standard-Betriebssystem-Stil.
Sie können nicht sicher sein, dass der Benutzer Ihre Präferenzen als Seitenautor intuitiv genug findet, um zu verstehen, was Ihr außerirdisches Dropdown-Menü sein soll. Insbesondere wenn Benutzer ihre Formularsteuerelemente in ihrem Betriebssystem angepasst haben.
Der Schlüssel ist, robust um die Formularelemente herum zu entwerfen und nicht mit den Formularelementen selbst zu spielen. Ehrlich gesagt, wenn Ihnen die Art und Weise, wie ein bestimmtes Betriebssystem seine Formularsteuerelemente rendert, nicht gefällt, dann verwenden Sie dieses Betriebssystem nicht.
Formularelemente müssen nicht alle auf eine Weise sein, um intuitiv zu sein. Nicht alle Handys sehen gleich aus, aber Sie erkennen sie immer noch als Handy aufgrund des Kontexts. Immer wieder gibt es Ausnahmen, bei denen man ein Telefon sieht und denkt: "Wow, ich hätte nie gedacht, dass das ein Telefon ist." Aber insgesamt, solange die Leute nicht verrückt werden, erkennen sie ein Telefon, wenn sie es sehen. Auch wenn Form, Farbe, Knöpfe usw. unterschiedlich sind. Formularsteuerelemente werden genauso sein, wenn wir sie lassen. Formularsteuerelemente sind im Großen und Ganzen unglaublich neu. Sie wollen sie sperren und die Dinge so belassen, wie sie sind? Ich möchte sie offen halten und Raum für Innovationen lassen. Vielleicht haben wir es noch nicht richtig?
Ihr Kommentar, dass Sie Standard-OS-Formularsteuerelemente nicht mögen, könnte auch auf eine Website zutreffen. Sie mögen die Formularsteuerelemente der Website nicht? Verwenden Sie die Website nicht. :D
Im Allgemeinen werden benutzerdefinierte Formularelemente zu unzugänglichen Formularelementen, was unfair und geradezu schlechte Entwicklung ist. Jemand mit einer Behinderung muss nutzen können, was auch immer Sie ihm vorwerfen. Vergessen Sie das nicht.
Ich persönlich hasse Formulare, die es mir nicht erlauben, sie vollständig per Tastatur auszufüllen. Es ist sehr ablenkend und frustrierend, die Hand von der Tastatur nehmen zu müssen und auf ein langsames, JavaScript-basiertes "hübsches" Dropdown zu klicken (das dann natürlich nicht zulässt, dass ich die 50 Staaten durch Drücken von "M" eingrenze).
Aus demselben Grund ist es leicht zu verstehen, warum es eine bessere UX ist, Formularelemente so zu belassen, wie die Benutzer sie "erwarten". Leute erwarten, dass Formulare wie Formulare aussehen. Es gibt keinen Bedarf, sie zu "verschönern". Warum sollte man den Benutzer zwingen, Ihre neue Oberfläche zu lernen, möglicherweise Frustration verursachen, damit sie "zu Ihrer Marke passt?" Wird ein Benutzer wirklich sagen: "Nun... das war ein langweiliges Dropdown! Ich glaube nicht, dass ich diese Seite wieder besuchen werde."? Ich sage nein.
Sie haben Recht, sie müssen nicht alle auf eine Weise sein, um intuitiv zu sein, deshalb sollten Sie sie nicht stylen. Sie zu stylen *ist* der Versuch, sie auf 'eine Weise' zu machen. Das Herumspielen mit ihnen erhöht die Wahrscheinlichkeit, dass jemand nicht mit ihnen interagiert.
Wenn Sie möchten, dass das Web in Bezug auf das Design von Formularfeldern "fortschreitet", dann schauen Sie sich die Betriebssysteme an. Jede Anwendung, die vom nativen OS-Design abweicht, ist zum Scheitern verurteilt.
Mit der Zeit werden meine Standard-OS-Themen-Formularfelder mit jedem Fortschritt Schritt halten, der im Laufe der Jahre gemacht wurde. Ihre benutzerdefinierten Formularfelder werden jedoch immer gleich bleiben und eines Tages veraltet aussehen oder sich verhalten als meine. Wo also ist der Fortschritt?
Hören Sie einfach auf, clever sein zu wollen, und halten Sie es einfach.
@Lee – Sie haben meine Worte definitiv verdreht. Als ich sagte: "Formularelemente müssen nicht alle auf eine Weise sein, um intuitiv zu sein", wussten Sie, was ich meinte. Ich meinte, dass alle Formularelemente auf allen Websites auf einem bestimmten Betriebssystem gleich aussehen. Und ich glaube immer noch nicht, dass dies aus Designperspektive für irgendeinen der von Ihnen genannten Gründe notwendig ist.
Schauen Sie sich Mint.com an. Sie haben eine riesige Nutzerbasis und verwenden benutzerdefinierte Dropdown-Menüs mit benutzerdefinierter Funktionalität. Chosen von den großartigen Leuten bei Harvest ist ein weiteres großartiges Beispiel für angepasste Formularelemente, die immer noch sehr benutzerfreundlich und wohl einfacher zu bedienen sind.
@Merne – Es scheint, als wären Sie von einigen schlechten Implementierungen benutzerdefinierter Dropdowns verbrannt worden. Aber das war schlechte Technologie und schlechter Code. Das *Design* war nicht unbedingt das Problem.
Es scheint, als ob Sie sich beide sehr auf das konzentrieren, was jetzt funktioniert, und nicht darauf, wie wir die Zukunft gestalten können. Und ich glaube nicht, dass jemand Design für ein Betriebssystem machen muss, wenn er die Welt der Formularelemente verändern will. Alle scheinen mit der Anpassung von Textfeldern einverstanden zu sein, aber das liegt nur daran, dass die Technologie schon lange existiert.
Im Laufe der Jahre haben sich die Benutzer an eine Vielzahl von Aussehen von Formulartextfeldern gewöhnt, und das scheint kein Problem zu sein (sogar diese Seite macht es so). Dasselbe wird mit allen anderen Formularelementen geschehen, wenn die Technologie besser wird. Schauen Sie, was mit Webtypografie passiert ist. Wir machen endlich Fortschritte. Und es ist noch nicht perfekt, aber es wird viel besser, weil Leute innovativ waren und nicht die Systemstandards als das Allerletzte angesehen haben. Je mehr Leute wir haben, die das Web voranbringen, desto schneller wird es sich bewegen. Ich werde helfen, es voranzutreiben.
Letztendlich werden wir uns hier wohl auf Uneinigkeit einigen müssen. Es wird interessant sein, in 10 Jahren auf diese Diskussion zurückzublicken, vorausgesetzt, diese Seite existiert dann noch :D
Aber wenn Sie meinten, dass sie nicht mit dem Betriebssystem übereinstimmen müssen, um intuitiv zu sein, dann irren Sie sich, denn das müssen sie. Jede Abweichung ist eine Ablenkung von der Affordanz. Da echte Intuition in der Mensch-Computer-Interaktion nicht wirklich existiert, muss alles gelernt werden.
Die Arbeitsannahme ist, dass das Betriebssystem am intuitivsten ist, weil die Wahrscheinlichkeit hoch ist, dass es bereits gelernt wurde, bevor sie Ihre Website besuchen. Websites, die abweichen, können nicht behaupten, intuitiver zu sein, sie können manchmal benutzerfreundlicher sein, aber das ist nicht dasselbe. Selbst wenn Ihre Website besser ist, wird die Tatsache, dass sie anders ist, Benutzer stolpern lassen.
Zum Beispiel unterstützen die benutzerdefinierten Select-Boxen, die vom Chosen-Plug-in (http://harvesthq.github.com/chosen/) erstellt werden, obwohl sie sehr gut und derzeit viel besser als das Betriebssystem sind, nicht alle Tastenkombinationen, die native tun, wie Bild auf/Bild ab (könnte ein Versehen sein).
Unabhängig davon erwarte ich in Standard-Dropdowns, dass ich durch wiederholtes Drücken von "U" zu "Vereinigtes Königreich" gelange, da das Tippen von "Vereinigtes K" oft mehr Arbeit ist (und die Maus zu benutzen bedeutet, die Hände beim Ausfüllen eines Formulars zu bewegen), aber bei den erweiterten Chosen-Dropdowns wird das wiederholte Drücken von "U" vom Design nicht unterstützt und schlägt fehl.
Dies könnte natürlich alles behoben werden, aber es ist viel Aufwand, nur um diese "besseren" Dropdowns genau so zum Laufen zu bringen, wie jeder es erwartet, wenn die Alternative darin besteht, einfach das zu verwenden, was bereits verfügbar ist. Sie können auch keine benutzerdefinierten Designs zum Laufen bringen, wie jeder es erwartet, da diese Steuerelemente auf verschiedenen Betriebssystemen unterschiedlich funktionieren, wäre das eine unmögliche Aufgabe.
Ich konnte nichts Besonderes am Design der Formulare auf mint.com erkennen, aber ich darf es in England nicht benutzen. Ich konnte nur das Dropdown für das Land auf deren Anmeldeseite sehen, was meiner Meinung nach überhaupt nicht besonders war (was gut ist).
Erst an diesem Wochenende habe ich etwas bei play.com bestellt und es hat ein paar Sekunden länger gedauert, den Button zum Abschließen des Kaufs zu finden, wegen seiner Hintergrundfarbe – und das wäre eine extrem geringfügige und harmlose Abweichung, wie ich auch finde.
Letztendlich, wenn Sie mit Ihrem Stil der Neugestaltung von Formularfeldern zufrieden sind, ist das ein sicheres Zeichen dafür, dass Sie sie *für sich selbst* entworfen haben.
Bitte beachten Sie: Ich beziehe mich nur auf die Art von Aktivität, die in den 5 Schritten am Ende des Artikels beschrieben wird. Etwas *völlig* anderes oder Neues zu tun, ist Fair Play, aber Sie können nicht behaupten, dass die Neukonstruktion eines bestehenden Mechanismus nur zur Verwirklichung Ihres eigenen Brandings oder Designs derselben Funktionalität kreativ, progressiv oder gerechtfertigt ist. Nicht ein einziger Benutzer wird Ihre Bemühungen zu schätzen wissen. Ich meine, wenn sie Ihre Seite nicht nutzen wollen, dann liegt es nie daran, dass Sie Standard-OS-Formularfelder verwendet haben, es ist immer etwas anderes.
Das stimmt nicht ganz. Ich habe den Hintergrund von
optionin einem Projekt geändert, um den Status einer Option darzustellen. (Grüner Hintergrund für verfügbar, orange oder so für möglicherweise verfügbar.) Die Cross-Browser-Kompatibilität war extrem schlecht und auf einem Mac funktionierte es überhaupt nicht.Auf Windows-Browsern können Sie die Hintergrundfarben von
optionändern. Das Verhalten ist je nach Firefox/Chrome oder IE etwas anders. Ich habe zwei merkwürdige Dinge beim Stylen vonselectundoptionentdecktIE10 mit
optionaufbackground: white;gestylt macht die aktuelle Auswahl unlesbar: http://jsfiddle.net/HQLAR/Auf iOS
selectmit einem-webkit-gradienteliminiert die Pfeile, die anzeigen, dass es sich um eine Select-Box handelt.Erfinden Sie das Rad nicht neu, wenn Sie es nicht müssen. Wenn Sie jQuery oder Prototype verwenden, probieren Sie Chosen aus. Es ist leicht zu stylen und verbessert die
<select>-Funktionalität auf vielfältige Weise.110% einverstanden.
Sie müssen sich keine Sorgen machen, ob dies oder jenes mit diesem oder jenem Rendering-Engine auf diesem oder jenem Betriebssystem funktioniert oder nicht.
Chosen ist zweifellos der richtige Weg, wenn Sie Ihre Dropdowns/Selects stylen müssen.
Ich stimme zu, Chosen ist definitiv der richtige Weg. Es ist das beste Plugin, das ich bisher für Dropdown-Styling gesehen habe.
Ich habe einige Dinge mit den Select-Boxen ausprobiert und die folgenden Dinge gefunden, die ich nicht erklären kann und die völlig zufällig zu sein scheinen.
Das Styling der Schrift wird nur auf die Select-Box angewendet, wenn
* Sie den Hintergrund einstellen. Dies könnte so aussehen: background: green;, aber background: none; funktioniert auch.
* Sie den border-radius auf mehr als 5 Pixel setzen. Wenn Sie den border-radius auf 6 setzen, wird das Styling auf die Select-Box angewendet. Das Ändern des border-radius funktioniert überhaupt nicht, aber es löst die Select-Box irgendwie aus. Und es macht keinen Unterschied, ob Sie den border-radius auf 20px oder 100px setzen, es macht es möglich, etwas darauf anzuwenden, aber die Größe der Select-Box und der tatsächliche border-radius ändern sich überhaupt nicht.
Dies alles in der neuesten Chrome-Version auf Mac. Ich kann nicht herausfinden, warum diese Einstellungen die Select-Box auf die Präsentations-Markup hören lassen...
Sehen Sie den Pen, den ich gemacht habe (eine Fork von Chris): http://codepen.io/anon/full/HofDw
Ich habe auch versucht, dieses Element in Webkit zu stylen, und obwohl Select eine Art Container-Element ist, können Dinge wie Vererbung und Pseudoelemente nicht angewendet werden. Was die Opt-Gruppen und Optionen selbst angeht, können Sie die Hintergrundfarbe ändern, aber das ist alles.
Wie Chris sagte, wenn Sie wirklich möchten, dass dies zu Ihrer Marke passt, dann ist JavaScript der richtige Weg – mit einem beliebten Framework wie jQuery können Sie das ganz einfach tun....
Oder wenn Ihnen die Kompatibilität egal ist, können Sie versuchen, es in reinem CSS3 mit :target zu machen... Sehen Sie meine Demo http://jsfiddle.net/alexh58/wymny/embedded/result/
Ja, es ist aufgebläht und unpraktisch, aber es kann gemacht werden!
Umm... bin ich der Einzige, oder zeigt der Pen ein völlig anderes Verhalten als das, was Chris sagt? Ich bin auf Chrome 22.0.1229.94 m, Windows 7, und die Schriftarten werden richtig skaliert (bis auf 1px!), die Schriftart wird auch ohne den Border-Hack angewendet, und das Styling wird auch auf die Dropdown-Liste angewendet!
Der Kommentar scheint meinen Bildlink verschluckt zu haben; mal sehen, ob er diesmal funktioniert
Ja, Sie haben Recht. Selbst bei denselben Browserversionen verhält sich
selectundoptionje nach Betriebssystem sehr unterschiedlich. Chris hat sich nur Dinge auf dem Mac angesehen.Zuerst, toller Artikel. Weiter geht's, es ist vielleicht nicht die beste Lösung für das Styling von Optionen, aber Sie können Stile auf die Optionen über das Style-Attribut für jede Option anwenden.
http://codepen.io/Pmac627/pen/kodDx
Ich habe das einmal für die Schriftgröße gemacht. Es ist eine Qual bei vielen Optionen (wie z. B. bei der Auswahl von Bundesstaaten), aber wenn das Styling dasselbe ist, würde eine Schleife das Problem lösen.
@Pat,
Das Styling einzelner Select-Optionen funktioniert unter Firefox, aber nicht unter Chrome, was der Kern des Artikels ist.
Drupal-Benutzer: http://drupal.org/project/select_with_style
@RdeBoer,
Gibt es einen bestimmten Grund, warum background-color funktioniert, aber der Rest nicht (bei Chrome)? Selbst mit !important wird Chrome nicht überschrieben.
Ich habe gestern nach Informationen darüber gesucht! Spionieren Sie mich aus?
Hallo,
Ich habe versucht, dieses Dokument als PDF zu speichern, aber wenn ich es ansehe, sind die Texte im PDF komplett zerbrochen. Ich bin ein Offline-Nutzer & ein großer Fan Ihrer Seite.
@Pat – keine Ahnung, was der Grund dafür ist, dass Farben nur manchmal berücksichtigt werden. Wie @Stefan bereits in diesem Thread erwähnte… gibt es so viele Faktoren, die in bestimmten Kontexten und nicht in anderen Auswirkungen zu haben scheinen… Es scheint wenig Konsistenz zwischen Browsern und Betriebssystemen zu geben, wenn es um Dropdown-Selektoren geht.
Perfektes Timing! Debattiere gerade über den besten Weg, Dropdowns für ein neues Projekt anzupassen – sehr hilfreich!
Mozilla-bezogener Bug https://bugzilla.mozilla.org/show_bug.cgi?id=649849
Ich habe früher an einer CRM-Software gearbeitet, die hauptsächlich nur Webkit unterstützte.
Der Benutzer konnte den Status eines Hilfe-Desk-Eintrags über ein
<select>auswählen. Da jeder Status seine eigene Tag-Hintergrundfarbe hatte, wendete ich die CSS-Klasse des Status auf jedes<option>an, und die Hintergrundfarben funktionierten ziemlich gut, was die Auswahl in diesem Kontext sehr brauchbar machte, da die Leute den Status leicht anhand der Farbe erkennen konnten.Das ist es, was ich früher getan habe, um das Aussehen von Select-Menüs auch auf Mac zu ändern
selectWird es irgendwelche Probleme geben, wenn wir das verwenden? Sehen Sie sich die jsfiddle-Demo an{
border: none;
background: none;
-webkit-appearance: initial;
}
Firefox berücksichtigt Schriftstil in Selects, insbesondere das alte Tag. Ich habe einen HTML5-Editor namens 5edit erstellt, der diese für die Schriftarten verwendet. Wenn Sie den Link in Firefox besuchen, werden Sie dies in Aktion sehen, und in jedem anderen Browser natürlich nicht.
Hallo,
Ich möchte nur die Farbe auf das Sternchen (*) des Dropdowns anwenden, wie z. B. Kategorie *(roter Stern)
Vielen Dank im Voraus
Das scheint in der neuesten Version von Firefox 30 kaputt zu sein. Hat jemand eine Ahnung, was passiert ist?