Sugeriría una solución mía que puedes encontrar en este repositorio de GitHub .
Esto también funciona para IE8 e IE9 con una flecha personalizada que proviene de una fuente de icono.
Ejemplos de menú desplegable de navegador cruzado personalizado en acción: compruébelos con todos sus navegadores para ver la función de navegador cruzado.
De todos modos, comencemos con los navegadores modernos y luego veremos la solución para los más antiguos.
Flecha desplegable para Chrome, Firefox, Opera, Internet Explorer 10+
Para estos navegadores, es fácil establecer la misma imagen de fondo para el menú desplegable para tener la misma flecha.
Para hacerlo, debe restablecer el estilo predeterminado del navegador para la select
etiqueta y establecer nuevas reglas de fondo (como se sugirió anteriormente).
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;
...
}
Las appearance
reglas se establecen en none para restablecer las predeterminadas de los navegadores, si desea tener el mismo aspecto para cada flecha, debe mantenerlas en su lugar.
Las background
reglas en los ejemplos se establecen con imágenes SVG en línea que representan diferentes flechas. Están posicionados al 98% desde la izquierda para mantener un margen en el borde derecho (puede modificar fácilmente la posición que desee).
Para mantener el comportamiento correcto entre navegadores, la única otra regla que debe dejarse en su lugar es la outline
. Esta regla restablece el borde predeterminado que aparece (en algunos navegadores) cuando se hace clic en el elemento. Todas las demás reglas pueden modificarse fácilmente si es necesario.
Flecha desplegable para Internet Explorer 8 (IE8) e Internet Explorer 9 (IE9) usando Icon Font
Esta es la parte más difícil ... O tal vez no.
No existe una regla estándar para ocultar las flechas predeterminadas para estos navegadores (como select::-ms-expand
para IE10 +). La solución es ocultar la parte del menú desplegable que contiene la flecha predeterminada e insertar una fuente de icono de flecha (o un SVG, si lo prefiere) similar al SVG que se usa en los otros navegadores (consulte la select
regla CSS para obtener más información). detalles sobre el SVG en línea utilizado).
El primer paso es establecer una clase que pueda reconocer el navegador: esta es la razón por la que he usado los IF condicionales de IE al comienzo del código. Estos IF se usan para adjuntar clases específicas a la html
etiqueta para reconocer el navegador IE más antiguo.
Después de eso, todo select
en el HTML debe estar envuelto por una div
(o cualquier etiqueta que pueda envolver un elemento). En este contenedor simplemente agregue la clase que contiene la fuente del icono.
<div class="selectTagWrapper prefix-icon-arrow-down-fill">
...
</div>
En palabras sencillas, este contenedor se utiliza para simular la select
etiqueta.
Para actuar como un menú desplegable, el contenedor debe tener un borde, porque ocultamos el que proviene del select
.
Tenga en cuenta que no podemos usar el select
borde porque tenemos que ocultar la flecha predeterminada alargándola un 25% más que el contenedor. En consecuencia, su borde derecho no debería ser visible porque ocultamos este 25% más por la overflow: hidden
regla aplicada a select
sí mismo.
La fuente de icono de flecha personalizada se coloca en la pseudo clase :before
donde la regla content
contiene la referencia para la flecha (en este caso, es un paréntesis derecho).
También colocamos esta flecha en una posición absoluta para centrarla tanto como sea posible (si usa diferentes fuentes de iconos, recuerde ajustarlas oportunamente cambiando los valores superior e izquierdo y el tamaño de fuente).
.ie8 .prefix-icon-arrow-down-fill:before,
.ie9 .prefix-icon-arrow-down-fill:before {
content: ")";
position: absolute;
top: 43%;
left: 93%;
font-size: 6px;
...
}
Puede crear y sustituir fácilmente la flecha de fondo o la flecha de fuente de icono, con cada una de las que desee simplemente cambiándola en la background-image
regla o creando un nuevo archivo de fuente de icono usted mismo.