363 votes

Comment supprimer l'icône de flèche par défaut d'une liste déroulante (élément de sélection) ?

Je souhaite supprimer la flèche du menu déroulant d'un fichier HTML <select> élément. Par exemple :

<select style="width:30px;-webkit-appearance: none;">
    <option>2000</option>
    <option>2001</option>
    <option>2002</option>
    ...
</select>

Comment faire avec Opera, Firefox et Internet Explorer ?

enter image description here

1 votes

Quelques réponses/hacks pour le cacher dans Firefox - stackoverflow.com/questions/5912791/

4 votes

apparence #slectType { -webkit-appearance: none; appearance: none /*menulist*/ !important ; max-width: 300px; line-height: 0px;} input[type='text'], select {max-height: 30px;max-width: 300px; text-align-last: center; /*text-indent: 5px;*/} button:hover {color: #FFF;background-color: #566977;box-shadow:none;border-color: #759AB5;} #errorMSG{z-index: 2147483647;} Navigateurs [CH:-webkit, FF:-moz, IE:-ms, Oprea:-o] ;

1 votes

421voto

user2009533 Points 487

Il n'est pas nécessaire de faire des piratages ou des débordements. Il y a un pseudo-élément pour la flèche déroulante sur IE :

select::-ms-expand {
    display: none;
}

23 votes

Car la question était de savoir comment supprimer la flèche du menu déroulant dans IE. IE9 n'a pas cette fonctionnalité, mais cela fonctionne dans IE10. Donc, à moins que vous n'utilisiez Windows XP, vous devriez utiliser IE10 de toute façon. IE11 est presque sorti. L'autre option est un hack CSS hideux pour cacher le bouton déroulant actuel et faire le vôtre.

2 votes

lien voici le hack hideux pour cacher le débordement

1 votes

Fonctionne dans IE11. Merci beaucoup !

378voto

Varun Rathore Points 717

Les solutions mentionnées précédemment fonctionnent bien avec chrome mais pas avec Firefox.

J'ai trouvé un Solution qui fonctionne bien dans Chrome et Firefox (pas dans IE). Ajoutez les attributs suivants au CSS de votre élément SELECT et ajustez la marge supérieure en fonction de vos besoins.

select {
  -webkit-appearance: none;
  -moz-appearance: none;
  text-indent: 1px;
  text-overflow: '';
}

<select>
  <option>one</option>
  <option>two</option>
  <option>three</option>

</select>

9 votes

Cette astuce a cessé de fonctionner sur Firefox à partir de la version 31 (dans la Nightly build de mai 2014). Voyons ce qu'il est possible de faire en attendant. Cette gist que j'ai écrite contient tous les détails : gist.github.com/joaocunha/6273016

0 votes

La méthode de Joäo Cunha a été vérifiée et utilisée avec succès. N'oubliez pas d'ouvrir le lien dans firefox !

0 votes

Cela a fonctionné pour moi. Je voulais l'utiliser pour wkhtmltopdf afin de générer un pdf à partir d'un html. Merci de votre compréhension.

68voto

EpokK Points 11131

Essayez ceci :

select {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    padding: 2px 30px 2px 2px;
    border: none;
}

JS Bin : http://jsbin.com/aniyu4/2/edit

Si vous utilisez Internet Explorer :

select {
    overflow:hidden;
    width: 120%;
}

Vous pouvez également utiliser Choosen : http://harvesthq.github.io/chosen/

1 votes

Avez-vous testé votre JSBin dans IE et firefox ? Je vois toujours la flèche déroulante intégrée dans les deux.

0 votes

Vérifiez auprès de Choosen, je pense que c'est le meilleur choix.

0 votes

"Si vous utilisez Internet Explorer" ? Vous devez prendre en compte le pourcentage important de la population qui utilise IE et vous adresser à eux indépendamment de cela.

17voto

dhrubo dhrubo Points 61

Essayez ceci :

HTML :

<div class="customselect">
    <select>
    <option>2000</option>
    <option>2001</option>
    <option>2002</option>
    </select>
</div>

CSS :

.customselect {
    width: 70px;
    overflow: hidden;
}

.customselect select {
   width: 100px;
   -moz-appearance: none;
   -webkit-appearance: none;
   appearance: none;
}

15voto

Mahesh Shitole Points 214

Essayez ceci, ça marche pour moi,

<style>
    select{
        border: 0 !important;  /*Removes border*/
        -webkit-appearance: none;
        -moz-appearance: none;
        appearance: none;
        text-overflow:'';
        text-indent: 0.01px; /* Removes default arrow from firefox*/
        text-overflow: "";  /*Removes default arrow from firefox*/
    }
    select::-ms-expand {
        display: none;
    }
    .select-wrapper
    {
        padding-left:0px;
        overflow:hidden;
    }
</style>

<div class="select-wrapper">
     <select> ... </select>
</div>

Vous ne pouvez pas le cacher, mais en utilisant l'option overflow hidden, vous pouvez le faire disparaître.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X