Bootstrap 3 Style Sélectionnez le menu déroulant semble laid dans Firefox OS X
Lorsque le style d'une forme <select>
élément dans le Bootstrap 3, il rend un vilain bouton sur le dans Firefox sur mac OS X:
Cela a apparemment été un problème connu pour un certain temps, et il y a un certain nombre de hacks et des solutions de contournement, dont aucun n'est très propre (https://github.com/twbs/bootstrap/issues/765). Je me demandais si quelqu'un a trouvé une bonne solution à ce problème autrement que par l'utilisation de Bootstrap des listes déroulantes ou des plugins supplémentaires. J'ai délibérément choisi d'utiliser le langage HTML <select>
's plutôt que de Bootstrap dropdowns parce que l'ergonomie est mieux avec de longues listes sur des appareils mobiles.
Est-ce un Firefox problème ou un problème de Bootstrap?
Détails: Mac OS X 10.9, Firefox 25.0.1
Mise à jour 12/4/13: j'ai fait un side-by-side de comparaison de la façon dont chaque navigateur rend le <select>
's sur OS X 10.9 à l'aide de Firefox, Chrome et Safari, en réponse à @zessx (à l'aide de http://bootply.com/98425). Évidemment, il y a une grande différence entre la manière dont les <select>
élément de formulaire est rendu sur tous les navigateurs et OS:
Je comprends qu'un <select>
balise est gérée différemment selon le système d'exploitation que vous utilisez, car il y a native OS basés sur des contrôles qui dictent le style et le comportement. Mais, qu'est-ce class="form-control"
dans le Bootstrap qui provoque un <select>
élément de formulaire différent dans Firefox? Pourquoi le défaut, de l'onu, de style <select>
dans Firefox regarder bien, mais une fois qu'il est en forme, il semble laid?
- Pour un utilisateur de FireFox, ce qui est normal et pas moche. Bootstrap utilise uniquement les CSS pour mettre en forme et de ne pas utiliser un script pour activer cela, sélectionnez un élément de la liste, je crois que la Fondation n'. Regarde aussi dans IE pour voir ce qui s'y passe. Les différents navigateurs ne pas rendre les éléments de formulaire de la même façon. Chrome semble la meilleure.
- De FireFox natif sélectionne obtenir floue si vous leur taille, mais voici à quoi ils ressemblent: jsbin.com/amimUhUg/1
- Merci, Christina. Je pourrais vivre avec ça personnalisé
<select>
pour Firefox, même si elle est un peu floue. Le seul problème est que dans Chrome et Safari, il ressemble encore à un défaut<select>
élément--en d'autres termes, les styles personnalisés ne semblent travailler pour Firefox. (à l'aide de jsbin.com/amimUhUg/1) - eh bien, vous pourriez mettre le sélectionner css à l'intérieur d'un webkit seule requête de média (atsign), écran média et (-webkit-min-device-pixel-ratio: 0) { } puis mettez pas sur les styles sélectionnez à l'extérieur de cette, de cette façon, firefox et ie et tous les autres ne sont pas les ramasser. Une fois que vous vous en tenez une bordure sur une sélection, firefox ne fonctionne tout simplement que la première colonne de votre image pour BS3.
- comme un utilisateur de Firefox, je trouve ces déroulant boutons sur OS X laid comme l'enfer; ils regardent tout droit sortie de windows 95
Vous devez vous connecter pour publier un commentaire.
Vous pouvez réellement changer la zone grise autour de la flèche de menu déroulant dans IE:
Actuellement vous pouvez pratiquement tout faire avec liste déroulante, et il regarde la même chose sur tous les navigateur, de prendre un coup d'oeil à l'exemple de code
https://jsfiddle.net/x76j455z/10/
Appuyant sur les excellentes réponses par rafx et Sina, voici un extrait qui ne vise que Firefox et remplace le bouton par défaut avec un accent circonflexe copié à partir de Bootstrap de l'icône de thème.
Avant:
Après:
(La ligne SVG a barres obliques inverses et des retours à la ligne pour plus de lisibilité. Les supprimer si elles causer des problèmes dans votre asset pipeline.)
Ici est la JSFiddle
fill
valeurs rvb. Merci pour cette réponse @Tobia@-moz-document url-prefix()
a cessé de travailler, voir fxsitecompat.com/en-CA/docs/2018/... pour plus de détails. Je vais avoir de la chance avec le remplacement du sélecteur de_:-moz-tree-row(hover), select.form-control
mais je ne comprends pas comment il fonctionne encore.@browser (engine="Gecko") { ... }
de CSS, de la "pureté" des raisons. Meh.Il y a un slick à la recherche plugin jQuery qui joue apparemment nice avec Bootstrap appelé SelectBoxIt (http://gregfranko.com/jquery.selectBoxIt.js/). La chose que j'aime c'est qu'il vous permet de déclencher le natif de sélectionner la zone sur n'importe quel OS vous êtes sur, tout en conservant une cohérence de style (http://gregfranko.com/jquery.selectBoxIt.js/#TriggertheNativeSelectBox). Oh comment je souhaite Bootstrap fourni cette option!
Le seul inconvénient c'est qu'il ajoute une couche de complexité dans la solution, et un surcroît de travail pour assurer la compatibilité avec tous les autres plugins comme ils se sont amélioré/corrigé au fil du temps. Je suis également pas sûr de Bootstrap 3 de compatibilité. Mais, cela peut être une bonne solution pour assurer une cohérence entre les navigateurs et OS.
C'est le comportement normal, et elle est causée par le défaut
<select>
style sous Firefox : vous ne pouvez pas définir deline-height
, alors vous devez jouer surpadding
quand vous voulez avoir un personnalisé<select>
.Exemple, avec des résultats sous Firefox 25 /Chrome 31 /IE 10 :
Bootply
<select>
est apparemment rendu avec seulement de légères différences entre les navigateurs. Je pourrais vivre avec ça; toutefois, sur OS X, la différence entre un défaut<select>
dans Firefox et un Bootstrap ou personnalisées<select>
est énorme. Le gris, aspect plat bouton Firefox sur mac OS X pour le droit de l'sélectionnez options n'est tout simplement pas acceptable pour ce projet. Chaque pixel questions. Je me rends compte que les utilisateurs de Firefox OS X peut représenter qu'un faible pourcentage de l'auditoire; cependant, j'ai besoin d'une solution qui a une apparence uniforme dans tous les navigateurs et systèmes d'exploitation.Je suis sûr que
-webkit-appearance:none
fait le truc pour Chrome et Safari.EDIT :
-moz-appearance: none
devrait maintenant fonctionner aussi bien sur Firefox.C'est facile. Vous avez juste besoin de mettre à l'intérieur de
.form-control
ce:Cela permettra d'éliminer le navigateur de l'apparence et de permettre à votre CSS.
J'ai trouvé deux façons de résoudre ce problème spécifique:
Utilisation Choisi
Cible les navigateurs mozilla à l'aide de
@-moz-document url-prefix()
comme suit:Nous avons été en utilisant le plugin bootstrap-sélectionnez pour Bootstrap pour dtyling sélectionne. Fonctionne vraiment bien et a beaucoup de fonctions intéressantes supplémentaires. Je peux le recommander à coup sûr.
Je suis en utilisant Choisi.
Regardez: http://harvesthq.github.io/chosen/
Il fonctionne sur Firefox, Chrome, IE et Safari avec le même style. Mais pas sur les Appareils Mobiles.
Avec Bootstrap 4+, vous pouvez simplement ajouter la classe
custom-select
pour vos sélectionner les entrées à abandonner le navigateur de style et de garder les icônes de flèche.Documentation Ici: Bootstrap 4 Formulaires Personnalisés, Sélectionnez Menu
Vous pouvez utiliser jquery.choisi ou bootstrap-sélectionnez cette option pour ajouter du style à vos boutons.À la fois de l'excellent travail. Mise en garde pour l'Utilisation Choisie ou bootstrap-sélectionnez: ils se cachent tous les deux à l'origine de sélectionner et d'ajouter dans leur propre div avec son propre code. Si vous êtes à l'aide de jquery.valider avec, par exemple, il l'habitude de trouver l'original, sélectionnez à faire de sa validation, car il a été renommé.