Come rimuovere l'icona della freccia predefinita da un elenco a discesa (selezionare l'elemento)?


297

Voglio rimuovere la freccia del menu a discesa da un <select>elemento HTML . Per esempio:

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

Come farlo in Opera, Firefox e Internet Explorer?

inserisci qui la descrizione dell'immagine


Alcune risposte / hack per nasconderlo in Firefox - stackoverflow.com/questions/5912791/...
andyb

2
aspetto #slectType { -webkit-appearance: none; appearance: none /*menulist*/ !; 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;} Navigazioni importanti [CH: -webkit, FF: -moz, IE: -ms, Oprea: -o];
Yash,

1
Possibile duplicato della freccia Rimuovi selezione su IE
Muath

Risposte:


383

Non c'è bisogno di hack o overflow. C'è uno pseudo-elemento per la freccia a discesa su IE:

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

22
perché la domanda era come rimuovere la freccia del menu a discesa in IE. IE9 non ha questa funzionalità, ma funziona in IE10. quindi, a meno che tu non stia usando Windows XP, dovresti comunque usare IE10. IE11 è quasi uscito. un'altra opzione è un brutto hack CSS per nascondere il pulsante a discesa reale e crearne uno tuo.
nrutas,

2
link ecco il brutto hack per nascondere lo straripamento
nrutas,

1
Funziona in IE11. Gracias!
ConorLuddy

Questo non ha funzionato in Firefox. Usa la soluzione di Varun Rathore di seguito per Firefox.
Quasi

1
questo è solo per IE. ovviamente non funzionerà in Firefox.
nrutas,

289

Le soluzioni precedentemente menzionate funzionano bene con Chrome ma non con Firefox.

Ho trovato una soluzione che funziona bene sia su Chrome che su Firefox (non su IE). Aggiungi i seguenti attributi al CSS per il tuo SELECTelement e regola il margine superiore in base alle tue esigenze.

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

Spero che questo ti aiuti :)


9
Questo trucco ha smesso di funzionare su Firefox a partire dalla versione 31 (in versione Nightly a partire da maggio 2014). Vediamo cosa si può fare nel frattempo. Questa idea che ho scritto ha il minimo
João Cunha

Il metodo di Joäo Cunha è stato verificato e utilizzato con successo. Quando lo verifichi, non dimenticare di aprire il collegamento in Firefox!
NoobishPro,

Ha funzionato per me. Volevo usarlo per wkhtmltopdf per generare pdf da HTML. Grazie
Faisal,

187

Modo semplice per rimuovere la freccia a discesa dalla selezione

select {
  /* for Firefox */
  -moz-appearance: none;
  /* for Chrome */
  -webkit-appearance: none;
}

/* For IE10 */
select::-ms-expand {
  display: none;
}
<select>
  <option>2000</option>
  <option>2001</option>
  <option>2002</option>
</select>


4
Ho appena usato appearance: noneper Chrome e Firefox Quantum (v59 e versioni successive). Vale a dire senza bisogno prefissi vendor più .
CPHPython,

2
@CPHPython La maggior parte dei browser a partire da questo commento ha ancora un tag "supporto parziale con prefisso" su di loro ...
Dan

2
@CPHPython devi avere Autoprefixer installato sul tuo progetto per appearance: nonefar funzionare i non prefissati . La maggior parte dei browser necessita ancora dei prefissi.
Daniel Tonon,

@DanielTonon oh, forse stavo usando un pacchetto postcss del genere. Non ricordo esattamente, ma penso di aver controllato l'ispettore del browser prima di commentare.
CPHPython,

58

Prova questo :

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

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

Se usi Internet Explorer:

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

Oppure puoi usare Scelto: http://harvesthq.github.io/chosen/


1
Hai testato il tuo JSBin in IE e Firefox? Vedo ancora la freccia a discesa integrata in entrambi.
Martin Smith,

Verificare con Scelto, penso che sia la scelta migliore.
EpokK,

"Se usi Internet Explorer"? Devi considerare la grande percentuale della popolazione che usa IE e provvede a loro indipendentemente
Danny Mahoney,

Le statistiche degli utenti dei nostri siti sono le seguenti: 5,21% IE o 2,37% Edge
nu everest

"Se usi IE" sarebbe corretto, sarebbe meglio dire "Se hai bisogno di supportare IE" ma ai nostri giorni, la tua tecnologia dovrebbe essere correttamente indirizzata al tuo pubblico, se stai gestendo un web sito Web mirato agli sviluppatori, quindi dubito che dovrai supportare QUALSIASI versione di IE.
Brandito,

17

Prova questo:

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;
}

15

Prova questo funziona per me,

<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>

Non puoi nasconderlo ma usando l'overflow nascosto puoi effettivamente farlo scomparire.


6

Volevo solo completare il thread. Per essere chiari, questo non funziona in IE9, tuttavia possiamo farlo con un piccolo trucco CSS.

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

.customselect {
    width: 80px;
    overflow: hidden;
   border:1px solid;
}

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

5

Come ho risposto in Rimuovi selezionare la freccia su IE

Nel caso in cui si desideri utilizzare la classe e la pseudo-classe:

.simple-control è la tua classe css

:disabled è una 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;
}

4
select{
padding: 11px 50px 11px 10px;
background: rgba(255,255,255,1);
border-radius: 7px;
-webkit-border-radius: 7px;
-moz-border-radius: 7px;
border: 0;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
color: #8ba2d4;

}


2

Non è possibile farlo con un supporto cross browser completamente funzionale.

Prova a prendere un div di 50 pixel supponi e sposta l'icona a discesa desiderata a tua scelta

Ora all'interno di quel div, aggiungi forse il tag select con una larghezza di 55 pixel (qualcosa di più della larghezza del contenitore)

Penso che otterrai quello che vuoi.

Nel caso in cui non desideri alcuna icona a discesa a destra, esegui tutti i passaggi tranne che per spostare l'immagine a destra. Imposta contorno: 0 attivo per il tag di selezione. questo è tutto


1
Non riesco a ottenere alcun aiuto da questi suggerimenti. Qualcuno può fornire un codice adeguato qui? Grazie.
user2301515

2

c'è una libreria chiamata DropKick.js che sostituisce i normali menu a discesa con HTML / CSS in modo da poterli definire completamente e controllarli con javascript. http://dropkickjs.com/


2

Funziona con tutti i browser e tutte le versioni:

JS

jQuery(document).ready(function () {    
    var widthOfSelect = $("#first").width();
    widthOfSelect = widthOfSelect - 13;
    //alert(widthOfSelect);
    jQuery('#first').wrap("<div id='sss' style='width: "+widthOfSelect+"px; overflow: hidden; border-right: #000 1px solid;' width=20></div>");
});

HTML

<select class="first" id="first">
  <option>option1</option>
  <option>option2</option>
  <option>option3</option>
</select>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.