¿Cómo eliminar el ícono de flecha predeterminado de una lista desplegable (seleccionar elemento)?

297

Quiero eliminar la flecha desplegable de un <select>elemento HTML . Por ejemplo:

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

¿Cómo hacerlo en Opera, Firefox e Internet Explorer?

ingrese la descripción de la imagen aquí

usuario2301515
fuente
Algunas respuestas / trucos para ocultarlo en Firefox - stackoverflow.com/questions/5912791/…
andyb
2
apariencia #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;} Navegaciones importantes [CH: -webkit, FF: -moz, IE: -ms, Oprea: -o];
Yash
1
Posible duplicado de Eliminar Seleccionar flecha en IE
Muath
Posible duplicado de HTML hide Seleccione la flecha desplegable con css
Damjan Pavlica

Respuestas:

383

No hay necesidad de hacks o desbordamientos. Hay un pseudo-elemento para la flecha desplegable en IE:

select::-ms-expand {
    display: none;
}
nrutas
fuente
22
porque la pregunta era cómo eliminar la flecha desplegable en IE. IE9 no tiene esta funcionalidad, pero funciona en IE10. así que a menos que esté usando Windows XP, debería estar usando IE10 de todos modos. IE11 está casi fuera. Otra opción es un hack CSS feo para ocultar el botón desplegable real y hacer el suyo.
nrutas
2
enlace aquí está el truco feo para ocultar el desbordamiento
nrutas
1
Funciona en IE11. Gracias!
ConorLuddy
Esto no funcionó en Firefox. Utilice la solución de Varun Rathore a continuación para Firefox.
AlmostPitt
1
esto es solo para IE. Por supuesto, no funcionará en Firefox.
nrutas
289

Las soluciones mencionadas anteriormente funcionan bien con Chrome pero no en Firefox.

Encontré una solución que funciona bien tanto en Chrome como en Firefox (no en IE). Agregue los siguientes atributos al CSS para su elemento SELECT y ajuste el margen superior para satisfacer sus necesidades.

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

Espero que esto ayude :)

Varun Rathore
fuente
99
Este truco dejó de funcionar en Firefox a partir de la versión 31 (en Nightly build a partir de mayo de 2014). Veamos qué se puede hacer mientras tanto. Esta esencia que escribí tiene toda la información: gist.github.com/joaocunha/6273016
João Cunha
El método de Joäo Cunha se comprobó y se utilizó con éxito. Cuando lo revises, ¡no olvides abrir el enlace en firefox!
NoobishPro
Funcionó para mi. Quería usarlo para wkhtmltopdf para generar pdf desde html. Gracias
Faisal
187

Forma sencilla de eliminar la flecha desplegable de seleccionar

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>

Sangeet Shah
fuente
44
Acabo de usar appearance: nonepara Chrome y Firefox Quantum (v59 y superior). Es decir, no hay necesidad prefijos de proveedores más .
CPHPython
2
@CPHPython La mayoría de los navegadores a partir de este comentario todavía tienen una etiqueta de "soporte parcial con prefijo" ...
Dan
2
@CPHPython necesita tener Autoprefixer instalado en su proyecto para que los no prefijados appearance: nonefuncionen. La mayoría de los navegadores aún necesitan los prefijos.
Daniel Tonon
@DanielTonon oh, tal vez estaba usando un paquete postcss como ese. No recuerdo exactamente, pero creo que revisé el inspector del navegador antes de comentar.
CPHPython
58

Prueba esto :

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 usa Internet Explorer:

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

O puede usar Elegido: http://harvesthq.github.io/chosen/

EpokK
fuente
1
¿ Probaste tu JSBin en IE y Firefox ? Todavía veo la flecha desplegable incorporada en ambos.
Martin Smith
Consulte con Elegido, creo que es la mejor opción.
EpokK
"Si usa Internet Explorer"? Debe tener en cuenta el gran porcentaje de la población que SÍ usa IE y los atiende independientemente
Danny Mahoney
Nuestras estadísticas de sitios de los usuarios son los siguientes: 5.21% 2.37% IE o Edge
nu Everest
"Si usa IE" sería correcto, sería mejor decir "Si necesita admitir IE", pero en la actualidad, su tecnología debería estar dirigida adecuadamente a su audiencia, si está ejecutando una web sitio web específico para desarrolladores, entonces dudo que necesite admitir CUALQUIER versión de IE.
Brandito
17

Prueba esto:

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;
}
Luke Kalyan Brata Sarker
fuente
15

Prueba esto, me funciona,

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

No puedes esconderte, pero usando el desbordamiento oculto puedes hacer que desaparezca.

Mahesh Shitole
fuente
6

Solo quería completar el hilo. Para que quede muy claro, esto no funciona en IE9, sin embargo, podemos hacerlo con un pequeño truco 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;
}
sun2
fuente
5

Como respondí en Eliminar Seleccionar flecha en IE

En caso de que quiera usar la clase y la pseudoclase:

.simple-control es tu clase de CSS

:disabled es pseudo clase

select.simple-control:disabled{
         /*For FireFox*/
        -webkit-appearance: none;
        /*For Chrome*/
        -moz-appearance: none;
}

/*For IE10+*/
select:disabled.simple-control::-ms-expand {
        display: none;
}
Tejasvi Hegde
fuente
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;

}

Mitul
fuente
2

No puede hacer esto con un soporte de navegador cruzado completamente funcional.

Intente tomar una división de 50 píxeles y suponga que flota el icono desplegable que desee a la derecha de este

Ahora dentro de ese div, agregue la etiqueta select con un ancho de 55 píxeles tal vez (algo más que el ancho del contenedor)

Creo que obtendrás lo que quieres.

En caso de que no desee ningún icono de soltar a la derecha, solo siga todos los pasos, excepto la imagen flotante a la derecha. Establecer esquema: 0 en foco para la etiqueta de selección. Eso es

Kaustav Banerjee
fuente
1
No puedo obtener ninguna ayuda de estos consejos. ¿Alguien puede dar el código adecuado aquí? Gracias.
user2301515
2

hay una biblioteca llamada DropKick.js que reemplaza los menús desplegables de selección normales con HTML / CSS para que pueda diseñarlos y controlarlos completamente con javascript. http://dropkickjs.com/

nrutas
fuente
2

Funciona para todos los navegadores y todas las versiones:

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>
SK.
fuente