Ich versuche, ein select
Element mit CSS3 zu formatieren. Ich erhalte die gewünschten Ergebnisse in WebKit (Chrome / Safari), aber Firefox spielt nicht gut (ich kümmere mich nicht einmal um den Internet Explorer). Ich verwende die CSS3- appearance
Eigenschaft, kann aber aus irgendeinem Grund das Dropdown-Symbol in Firefox nicht ausschütteln.
Hier ist ein Beispiel für meine Arbeit: http://jsbin.com/aniyu4/2/edit
#dropdown {
-moz-appearance: none;
-webkit-appearance: none;
appearance: none;
background: transparent url('example.png') no-repeat right center;
padding: 2px 30px 2px 2px;
border: none;
}
Wie Sie sehen können, versuche ich nichts Besonderes. Ich möchte nur die Standardstile entfernen und meinen eigenen Dropdown-Pfeil hinzufügen. Wie gesagt, großartig in WebKit, nicht großartig in Firefox. Anscheinend wird das -moz-appearance: none
Dropdown-Element nicht entfernt.
Irgendwelche Ideen? Nein, JavaScript ist keine Option
-moz-appearance
CSS3-Eigenschaft hinzugefügt, die ich verwende,-moz-appearance: none;
und sie scheint in Version 35.0.1 zu funktionieren.@-moz-document url-prefix() { select { width: 105%; overflow: hidden; } }
Antworten:
Okay, ich weiß, dass diese Frage alt ist, aber 2 Jahre später haben Mozilla nichts getan.
Ich habe mir eine einfache Problemumgehung ausgedacht.
Dadurch wird im Wesentlichen die gesamte Formatierung des Auswahlfelds in Firefox entfernt und ein Span-Element mit Ihrem benutzerdefinierten Stil um das Auswahlfeld gewickelt, sollte jedoch nur für Firefox gelten.
Angenommen, dies ist Ihr ausgewähltes Menü:
Nehmen wir an, die CSS-Klasse 'css-select' lautet:
In Firefox wird dies mit dem Auswahlmenü angezeigt, gefolgt vom hässlichen Firefox-Auswahlpfeil, gefolgt von Ihrem gut aussehenden. Nicht ideal.
Um dies in Firefox in Gang zu bringen, fügen Sie ein span-Element mit der Klasse 'css-select-moz' hinzu:
Korrigieren Sie dann das CSS, um den schmutzigen Pfeil von Mozilla mit dem Fenster -moz-Erscheinungsbild: auszublenden, und werfen Sie den benutzerdefinierten Pfeil in die Klasse 'css-select-moz' des Bereichs, aber lassen Sie ihn nur wie folgt auf Mozilla anzeigen:
Ziemlich cool, weil ich erst vor 3 Stunden über diesen Fehler gestolpert bin (ich bin neu im Webdesign und völlig Autodidakt). Diese Community hat mir jedoch indirekt so viel Hilfe geleistet, dass ich dachte, es wäre an der Zeit, etwas zurückzugeben.
Ich habe es nur in Firefox (Mac) Version 18 und dann 22 (nachdem ich aktualisiert habe) getestet.
Alle Rückmeldungen sind willkommen.
quelle
Update: Dies wurde in Firefox v35 behoben. Einzelheiten finden Sie im vollständigen Inhalt .
Ich habe gerade herausgefunden, wie ich den Auswahlpfeil aus Firefox entfernen kann . Der Trick ist , eine Mischung aus zu verwenden
-prefix-appearance
,text-indent
undtext-overflow
. Es ist reines CSS und erfordert kein zusätzliches Markup.Getestet unter Windows 8, Ubuntu und Mac, den neuesten Versionen von Firefox.
Live-Beispiel: http://jsfiddle.net/joaocunha/RUEbp/1/
Mehr zum Thema: https://gist.github.com/joaocunha/6273016
quelle
padding-right:10px;
dem<select>
Willen den jetzt unsichtbaren Pfeil nach links "gedrückt". Fazit: Firefox versteckt den Pfeil, Chrome ENTFERNT ihn. Ich werde meine Schriften entsprechend aktualisieren, danke dafür.-moz-appearence: window
es nicht mit transparenten Hintergründen funktioniert (zeichne ein hässliches BG an Ort und Stelle, zumindest unter Firefox Linux)Der Trick, der für mich funktioniert, besteht darin, die Auswahlbreite auf mehr als 100% zu erhöhen und einen Überlauf anzuwenden: versteckt
Dies ist derzeit die einzige Möglichkeit, den Dropdown-Pfeil in FF auszublenden.
Übrigens. Wenn Sie schöne Dropdowns wünschen, verwenden Sie http://harvesthq.github.com/chosen/
quelle
Wichtiges Update:
Ab Firefox V35 funktioniert die Darstellungseigenschaft jetzt !!
Aus den offiziellen Versionshinweisen von Firefox zu V35 :
Um den Standardpfeil auszublenden, müssen Sie nun einfach die folgenden Regeln für unser Auswahlelement hinzufügen:
DEMO
quelle
Wir haben einen einfachen und anständigen Weg gefunden, dies zu tun. Es ist browserübergreifend, abbaubar und beschädigt keinen Formularbeitrag. Stellen Sie zuerst die Auswahlfelder
opacity
auf ein0
.Auf diese Weise können Sie immer noch darauf klicken
Machen Sie dann div mit den gleichen Abmessungen wie das Auswahlfeld. Das div sollte als Hintergrund unter dem Auswahlfeld liegen. Verwenden Sie
{ position: absolute }
undz-index
um dies zu erreichen.Aktualisieren Sie das innerHTML des Div mit Javascript. Einfach mit jQuery:
Das ist es! Gestalten Sie einfach Ihr div anstelle des Auswahlfelds. Ich habe den obigen Code nicht getestet, daher müssen Sie ihn wahrscheinlich anpassen. Aber hoffentlich verstehen Sie das Wesentliche.
Ich denke, diese Lösung schlägt
{-webkit-appearance: none;}
. Was Browser höchstens tun sollten, ist die Interaktion mit Formularelementen zu diktieren, aber definitiv nicht, wie sie ursprünglich auf der Seite angezeigt werden, da dies das Site-Design beeinträchtigt.quelle
Versuchen Sie Folgendes:
Dann können Sie ein anderes Bild als Hintergrund verwenden und es platzieren:
Es gibt einen anderen Weg für Moz-Browser:
Wenn Sie eine Breite für die Auswahl definiert haben, drückt diese Eigenschaft die Standard-Dropbox-Schaltfläche unter dem Auswahlbereich.
Für mich geht das! ;)
quelle
Obwohl es keine vollständige Lösung ist, habe ich festgestellt, dass…
… Funktioniert bis zu einem gewissen Grad. Sie können den Hintergrund (-color oder -image) nicht ändern, aber das Element kann mit der Farbe unsichtbar gemacht werden: transparent. Nicht perfekt, aber es ist ein Anfang und Sie müssen das Element auf Systemebene nicht durch ein js-Element ersetzen.
quelle
window
dies diesen Effekt hatte. Leider musste ich das Hintergrundbild einstellen. Es ist bedauerlich, dass dies in Firefox nicht sehr gut ist.media="print"
CSS-Block mitselect {-moz-appearance: window;}
und entfernen Sie Pfeile und Hintergründe aller Auswahlmöglichkeiten in FF (für andere Browser versuchen Sie das Erscheinungsbild oder das Webkit-Erscheinungsbild), damit sie wie einfacher Text oder Titel aussehenIch denke, ich fand die Lösung kompatibel mit FF31 !!!
Hier sind zwei Optionen, die unter diesem Link gut erklärt werden:
http://www.currelis.com/hiding-select-arrow-firefox-30.html
Ich habe Option 1 verwendet: Rodrigo-Ludgero hat diesen Fix auf Github veröffentlicht, einschließlich eines Online-Updates Demo. Ich habe diese Demo unter Firefox 31.0 getestet und sie scheint korrekt zu funktionieren. Auch auf Chrome und IE getestet. Hier ist der HTML-Code:
und das CSS:
http://jsbin.com/pozomu/4/edit
Es funktioniert sehr gut für mich!
quelle
Leider für Sie , dies ist „etwas Phantasie“. Normalerweise ist es nicht die Aufgabe der Webautoren, Formularelemente neu zu gestalten. In vielen Browsern können Sie sie absichtlich nicht formatieren, damit der Benutzer die Betriebssystemsteuerelemente sehen kann, an die er gewöhnt ist.
Die einzige Möglichkeit, dies konsistent über Browser und Betriebssysteme zu tun, besteht darin, JavaScript zu verwenden und das zu ersetzen
select
Elemente durch "DHTML" -Elemente zu .Der folgende Artikel zeigt drei jQuery-basierte Plugins, mit denen Sie dies tun können (es ist ein bisschen alt, aber ich konnte momentan nichts Aktuelles finden).
http://www.queness.com/post/204/25-jquery-plugins-that-enhance-and-beautify-html-form-elements#1
quelle
appearance
Eigenschaft besteht darin, Entwicklern die Kontrolle über das Erscheinungsbild von Formularelementen zu geben, da die Verwendung von JavaScript eine schreckliche Lösung darstellt. Browser sollten nicht entscheiden, wie etwas auf einer Seite aussieht - es ist eine UX-Entscheidung, keine Entscheidung des Browser-Anbieters. Leider wird es noch nicht gut unterstützt. Vielleicht in einem anderen Jahr.quelle
Ich gestalte die Auswahl einfach so
Es funktioniert für mich in FF, Safari und Chrome in allen Versionen, die ich getestet habe.
Im IE habe ich gesetzt:
Sie können auch: .yourclass :: - ms-expand {display: none; } .yourid :: - ms-exapan {Anzeige: keine; }}
quelle
Ich weiß, dass diese Frage etwas alt ist, aber da sie bei Google auftaucht, ist dies eine "neue" Lösung:
appearance: normal
Scheint in Firefox für mich gut zu funktionieren (Version 5 jetzt). aber nicht in Opera und IE8 / 9Als Problemumgehung für Opera und IE9 habe ich den
:before
Pseudoselector verwendet, um ein neues weißes Feld zu erstellen und dieses über den Pfeil zu setzen.In IE8 funktioniert dies leider nicht . Die Box wird korrekt gerendert, aber der Pfeil ragt trotzdem heraus ...: - /
Die Verwendung
select:before
funktioniert in Opera einwandfrei, jedoch nicht im Internet Explorer. Wenn ich mir die Entwicklertools ansehe, sehe ich, dass sie die Regeln korrekt lesen und sie dann einfach ignorieren (sie sind durchgestrichen). Also benutze ich eine<span class="selectwrap">
um die tatsächliche<select>
.Möglicherweise müssen Sie dies ein wenig optimieren, aber das funktioniert bei mir!
Haftungsausschluss: Ich verwende dies, um eine gut aussehende Hardcopy einer Webseite mit Formularen zu erhalten, sodass ich keine zweite Seite erstellen muss. Ich bin kein 1337 haxx0r, der rote Bildlaufleisten,
<marquee>
Tags und so weiter möchte :-) Bitte wenden Sie kein übermäßiges Styling auf Formulare an, es sei denn, Sie haben einen sehr guten Grund.quelle
-moz-appearance: normal
scheint im Fx 9 keine gültige Option zu sein und-moz-appearance: none
(was gültig ist) entfernt den Abwärtspfeil nicht.<select> hi
.Verwenden Sie die
pointer-events
Eigenschaft.Die Idee hier ist, ein Element über den nativen Dropdown-Pfeil zu legen (um unser benutzerdefiniertes zu erstellen) und dann Zeigerereignisse darauf zu verbieten. [siehe diesen Beitrag ]
Hier ist eine funktionierende FIDDLE mit dieser Methode.
Außerdem habe ich in dieser SO-Antwort diese und eine andere Methode ausführlicher besprochen.
quelle
Dies funktioniert (getestet unter Firefox 23.0.1):
quelle
radio-container
Wert für ein ausgewähltes Objekt. Durchsuchen Sie die Mozilla-Referenz für -moz-Erscheinungsbilder , um einen geeigneten Wert zu erhalten (ich habe verwendetmenulist-text
, der den Pfeil der Auswahl in FF 31 verbirgt)Aufbauend auf der Antwort von @ JoãoCunha, einem CSS-Stil, der für mehr als einen Browser nützlich ist
quelle
Weiter Joao Cunha Antwort ist dieses Problem jetzt auf Mozillas ToDo - Liste und ist für ver 35 ausgerichtet.
Für diejenigen, die es wünschen, gibt es hier eine Problemumgehung von Todd Parker, auf die in Cunhas Blog verwiesen wird und die heute funktioniert:
http://jsfiddle.net/xvushd7x/
HTML:
CSS:
quelle
Seit Firefox 35 "
-moz-appearance:none
Entfernen Sie " das Sie bereits in Ihren Code geschrieben haben, die Pfeiltaste wie gewünscht.Es war ein Fehler, der seit dieser Version behoben wurde.
quelle
Hier und da passieren viele Diskussionen, aber ich sehe keine richtige Lösung für dieses Problem. Zum Schluss schrieb ich einen kleinen Jquery + CSS-Code für diesen HACK in IE & Firefox.
Berechnen Sie die Elementbreite (SELECT Element) mit Jquery. Fügen Sie einen Wrapper um das ausgewählte Element hinzu und halten Sie den Überlauf für dieses Element verborgen. Stellen Sie sicher, dass die Breite dieses Wrappers ungefähr ist. 25px weniger als das von SELECT Element. Dies könnte leicht mit Jquery gemacht werden. So, jetzt ist unsere Ikone weg ..! und es ist Zeit, unser Bildsymbol auf dem SELECT-Element hinzuzufügen ... !!! Fügen Sie einfach ein paar einfache Zeilen zum Hinzufügen des Hintergrunds hinzu und schon sind Sie fertig .. !! Stellen Sie sicher, dass Sie einen Überlauf verwenden, der für die äußere Hülle verborgen ist.
Hier ist ein Codebeispiel, das für Drupal erstellt wurde. Kann jedoch auch für andere verwendet werden, indem nur wenige Codezeilen entfernt werden, die Drupal-spezifisch sind.
Die Lösung funktioniert auf allen Browsern IE, Chrome und Firefox. Es ist nicht erforderlich, Hacks mit festen Breiten mithilfe von CSS hinzuzufügen. Alles wird dynamisch mit JQuery gehandhabt.!
Weitere Informationen finden Sie unter: - http://northwebstudio.com/blogs/1/jquery/remove-drop-down-arrow-html-select-element-using-jquery-and-css
quelle
versuchen Sie dieses CSS
Es funktioniert
quelle
Die
appearance
Eigenschaft von CSS3 lässt keinennone
Wert zu. Schauen Sie sich die W3C-Referenz an . Was Sie also versuchen, ist nicht gültig (Chrome sollte dies auch nicht akzeptieren).Dann haben wir leider wirklich keine browserübergreifende Lösung, um diesen Pfeil mit reinem CSS auszublenden. Wie bereits erwähnt, benötigen Sie JavaScript.
Ich empfehle Ihnen, das selectBox jQuery-Plugin zu verwenden . Es ist sehr leicht und schön gemacht.
quelle
none
ein Wert, der Ansprüche Firefox zu unterstützen: developer.mozilla.org/en/CSS/-moz-appearance Während Formularelemente Styling, in der Vergangenheit hat sich durch JavaScript nur erfüllbar gewesen, die gesamte Punkt derappearance
ist Eigentum wegzubewegen davon. Browser-Anbieter sollten keine UX-Entscheidungen für Entwickler treffen. Leider scheint dies nur ein wenig zu neu zu sein, um effektiv genutzt zu werden.-moz
akzeptiertnone
(auch wenn das funktioniert hat), wäre es nicht korrekt, sie zu verwenden. Noch mehr in Bezug auf einen Browser wie Firefox, der sich immer damit rühmte, genau den Standards zu folgen.Sie können die Breite des Felds erhöhen und den Pfeil näher an die linke Seite des Pfeils bewegen. Auf diese Weise können Sie den Pfeil mit einem leeren weißen Div abdecken.
Schauen Sie mal rein : http://jsbin.com/aniyu4/86/edit
quelle
Würden Sie geringfügige Änderungen am HTML akzeptieren?
So etwas wie das Einfügen eines div-Tags, das das select-Tag enthält.
Schau mal.
quelle
Oder Sie können die Auswahl ausschneiden. Etwas in der Art von:
Dies sollte 30px von der rechten Seite des Auswahlfelds abschneiden und den Pfeil entfernen. Geben Sie nun ein 170px-Hintergrundbild und eine voila-Auswahl an
quelle
Es ist ein riesiger Hack,
-moz-appearance: menulist-text
könnte aber den Trick machen.quelle
Ich hatte das gleiche Problem. Es ist einfach, es auf FF und Chrome zum Laufen zu bringen, aber auf IE (8+, die wir unterstützen müssen) werden die Dinge kompliziert. Die einfachste Lösung, die ich für benutzerdefinierte Auswahlelemente finden konnte, die "überall dort funktioniert, wo ich es versucht habe", einschließlich IE8, ist die Verwendung von .customSelect ()
quelle
Ein nützlicher Hack für mich ist es, die (Auswahl-) Anzeige auf einzustellen
inline-flex
. Schneidet den Pfeil direkt aus meiner Auswahlschaltfläche. Ohne den gesamten hinzugefügten Code.-webkit appearance
wird noch für Chrome benötigt, etc ...quelle
Jordan Youngs Antwort ist die beste. Wenn Sie Ihren HTML-Code jedoch nicht ändern können oder möchten, können Sie den benutzerdefinierten Abwärtspfeil entfernen, der für Chrome, Safari usw. bereitgestellt wird, und den Standardpfeil von Firefox belassen - ohne dass sich daraus doppelte Pfeile ergeben. Nicht ideal, aber eine gute schnelle Lösung, die kein HTML hinzufügt und Ihr benutzerdefiniertes Aussehen in anderen Browsern nicht beeinträchtigt.
CSS:
quelle
hackity hack ... eine Lösung, die in jedem von mir getesteten Browser (Safari, Firefox, Chrome) funktioniert. Es liegen keine IEs herum, daher wäre es schön, wenn Sie testen und kommentieren könnten:
CSS mit URL-codiertem Bild:
http://codepen.io/anon/pen/myPEBy
Ich benutze das: after-Element, um den hässlichen Pfeil abzudecken. Da select nicht unterstützt: nachher brauche ich einen Wrapper, mit dem ich arbeiten kann. Wenn Sie jetzt auf den Pfeil klicken, wird er in der Dropdown-Liste nicht registriert ... es sei denn, Ihr Browser unterstützt dies
pointer-events: none
, was alle außer IE10 tun: http://caniuse.com/#feat=pointer-eventsFür mich ist es also perfekt - eine schöne, saubere Lösung mit wenig Kopfschmerzen, zumindest im Vergleich zu allen anderen Optionen, die Javascript enthalten.
tl; dr:
Wenn IE10-Benutzer (oder niedriger) auf den Pfeil klicken, funktioniert dies nicht. Funktioniert gut genug für mich ...
quelle
Wenn es Ihnen nichts ausmacht, mit JS herumzuspielen, habe ich ein kleines jQuery-Plugin geschrieben, das Ihnen dabei hilft. Damit müssen Sie sich keine Gedanken über Herstellerpräfixe machen.
Geige hier: JS Geige
Die Bedingung ist, dass Sie die Auswahl von Grund auf neu gestalten müssen (dies bedeutet, dass Hintergrund und Rahmen festgelegt werden), aber Sie möchten dies wahrscheinlich trotzdem tun.
Da die Funktion die ursprüngliche Auswahl durch ein div ersetzt, verlieren Sie jegliches Styling, das direkt auf der Auswahlauswahl in Ihrem CSS vorgenommen wurde. Geben Sie dem select-Element also eine Klasse und formatieren Sie die Klasse.
Unterstützt die meisten modernen Browser. Wenn Sie ältere Browser ansprechen möchten, können Sie eine ältere Version von jQuery ausprobieren, müssen jedoch möglicherweise on () durch bind () in der Funktion ersetzen (nicht getestet).
quelle
Die anderen Antworten schienen für mich nicht zu funktionieren, aber ich fand diesen Hack. Das hat bei mir funktioniert (Juli 2014)
In meinem Fall hatte ich auch ein Woocommerce-Eingabefeld, also habe ich dieses verwendet
Meine Antwort wurde aktualisiert, um Auswahl statt Eingabe anzuzeigen
quelle