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


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

Respuestas:


383

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

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

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


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>


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/


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

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.


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

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

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

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


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/


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>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.