J'ai select element, je veux enlever la flèche, alors je peux ajouter une autre icône .. je peux le faire pour Firefox Safari et Chrome, mais cela n'a pas fonctionné sur IE9 .
.styled-select select
{
border: 0 !important; /*Removes border*/
-webkit-appearance: none; /*Removes default chrome and safari style*/
-moz-appearance: none; /*Removes default style Firefox*/
background: url('select_icon.png') no-repeat;
background-position: 179px 7px;
text-indent: 0.01px;
text-overflow: "";
color: #FCAF17;
width:200px;
}
VOIR Violon sur IE9 . tout ce dont j'ai besoin est d'enlever la flèche dans ie9 S'il vous plaît, répondez JSFIDDLE.
Dans IE9, il est possible avec purement un hack comme conseillé par @Spudley. Puisque vous avez personnalisé la hauteur et la largeur de la division et de la sélection, vous devez modifier _div:before
_ css pour correspondre à la vôtre.
Dans le cas où c’est IE10, l’utilisation ci-dessous de css3 est possible
_select::-ms-expand {
display: none;
}
_
Cependant, si vous êtes intéressé par le plugin jQuery, essayez Chosen.js
ou vous pouvez créer le vôtre en js.
Je suggérerais la solution que vous pouvez trouver dans ce dépôt GitHub . Ceci fonctionne également pour IE8 et IE9 avec une flèche personnalisée provenant d'une police de caractères.
Exemples de liste déroulante personnalisée de plusieurs navigateurs en action: vérifiez-les auprès de tous vos navigateurs pour voir la fonctionnalité de navigation croisée.
Quoi qu'il en soit, commençons par les navigateurs modernes, puis nous verrons la solution pour les plus anciens.
Pour ces navigateurs, il est facile de définir la même image d’arrière-plan pour la liste déroulante afin d’avoir la même flèche.
Pour ce faire, vous devez réinitialiser le style par défaut du navigateur pour la balise select
et définir de nouvelles règles d'arrière-plan (comme suggéré précédemment).
select {
/* you should keep these firsts rules in place to maintain cross-browser behaviour */
-webkit-appearance: none;
-moz-appearance: none;
-o-appearance: none;
appearance: none;
background-image: url('<custom_arrow_image_url_here>');
background-position: 98% center;
background-repeat: no-repeat;
outline: none;
...
}
Les règles appearance
sont définies sur none pour réinitialiser les règles par défaut des navigateurs. Si vous souhaitez avoir le même aspect pour chaque flèche, vous devez les conserver.
Les règles background
dans les exemples sont définies avec des images SVG en ligne représentant différentes flèches. Ils sont positionnés à 98% de la gauche pour laisser une marge au bord droit (vous pouvez facilement modifier la position à votre guise).
Afin de conserver le comportement correct entre les navigateurs, la seule règle à laisser en place est la règle outline
. Cette règle réinitialise la bordure par défaut qui apparaît (dans certains navigateurs) lorsque l'utilisateur clique sur l'élément. Toutes les autres règles peuvent être facilement modifiées si nécessaire.
C'est la partie la plus difficile ... Ou peut-être pas.
Il n'y a pas de règle standard pour masquer les flèches par défaut de ces navigateurs (comme le select::-ms-expand
pour IE10 +). La solution consiste à masquer la partie de la liste déroulante qui contient la flèche par défaut et insérer un police de flèche (ou un SVG, si vous préférez) similaire au SVG utilisé dans les autres navigateurs (voir la règle select
CSS pour plus de détails sur le SVG intégré utilisé).
La toute première étape consiste à définir une classe pouvant reconnaître le navigateur: c'est la raison pour laquelle j'ai utilisé les IF conditionnels IE au début du code. Ces IF permettent d’attacher des classes spécifiques à la balise html
afin de reconnaître l’ancien navigateur IE.
Après cela, chaque select
du code HTML doit être enveloppé par un div
(ou toute autre balise pouvant encapsuler un élément). À cet emballage, ajoutez simplement la classe contenant la police de l'icône.
<div class="selectTagWrapper prefix-icon-arrow-down-fill">
...
</div>
En termes simples, ce wrapper est utilisé pour simuler la balise select
.
Pour agir comme une liste déroulante, le wrapper doit avoir une bordure, car nous cachons celle qui provient du select
.
Notez que nous ne pouvons pas utiliser la bordure select
car nous devons masquer la flèche par défaut l'allongeant de 25% par rapport au wrapper. Par conséquent, sa bordure droite ne doit pas être visible car nous masquons ces 25% de plus par la règle overflow: hidden
appliquée à la select
elle-même.
La police-flèche personnalisée est placée dans la pseudo-classe :before
où la règle content
contient la référence de la flèche (il s'agit dans ce cas d'une parenthèse droite).
Nous plaçons également cette flèche dans une position absolue pour la centrer autant que possible (si vous utilisez des polices d’icônes différentes, pensez à les ajuster à l’opportunité en modifiant les valeurs du haut, de gauche et la taille de la police).
.ie8 .prefix-icon-arrow-down-fill:before,
.ie9 .prefix-icon-arrow-down-fill:before {
content: ")";
position: absolute;
top: 43%;
left: 93%;
font-size: 6px;
...
}
Vous pouvez facilement créer et substituer la flèche d’arrière-plan ou la flèche de police d’icône, chacune de vos choix étant simplement modifiée dans la règle background-image
ou en créant vous-même un nouveau fichier de police d’icône.
Si vous souhaitez utiliser la classe et la pseudo-classe:
.simple-control
est votre classe css
:disabled
est une pseudo classe
select.simple-control:disabled{
/*For FireFox*/
-webkit-appearance: none;
/*For Chrome*/
-moz-appearance: none;
}
/*For IE10+*/
select:disabled.simple-control::-ms-expand {
display: none;
}