css - pointer - IE y Firefox: el menú desplegable personalizado no puede eliminar las flechas nativas
pointer events css w3schools (5)
Estoy intentando crear un control desplegable personalizado y necesito ocultar las flechas de los controles nativos. Estoy usando el siguiente CSS
, que funciona para Chrome y Safari, pero no en Mozilla e IE.
select.desktopDropDown
{
appearance: none;
-moz-appearance:none; /* Firefox */
-webkit-appearance:none; /* Safari and Chrome */
}
Aquí hay un [jsfiddle] [1].
De hecho, este truco se requiere principalmente para IE10 + donde las flechas están en el estilo Metro de Windows 8, incluso en Windows 7. Aunque los usuarios de Windows 8 deben usarse para el estilo porque se usa a través del sistema operativo. De todos modos, lo recomendaría en lugar de usar:
display: none;
Usar:
visibility: hidden;
Porque, al menos en IE, el primero hace que la línea azul del elemento seleccionado se superponga a la flecha desplegable cuando se selecciona la selección, mientras que la segunda no.
Ejemplos de Bare-bones:
Para IE:
select::-ms-expand {
display: none;
}
Para Firefox:
select {
-moz-appearance: none;
appearance: none;
text-overflow: ''''; /* this is important! */
}
Para Fx uso -moz-appearance: checkbox-container
que funciona bien.
Así que poner todo junto lo siguiente debería ser suficiente para usted:
select.desktopDropDown {
appearance: none;
-webkit-appearance: none;
-moz-appearance: checkbox-container;
border-style: none;
}
select.desktopDropDown::-ms-expand {
display: none;
}
Use esto, funcionará pero con IE10 + y para FF:
Tu css debería verse así:
select.desktopDropDown::-ms-expand {
display: none;
}
Más sobre ::ms-expand
.
Luego por el resto:
select.desktopDropDown {
outline : none;
overflow : hidden;
text-indent : 0.01px;
text-overflow : '''';
background : url("../img/assets/arrow.png") no-repeat right #666;
-webkit-appearance: none;
-moz-appearance: none;
-ms-appearance: none;
-o-appearance: none;
appearance: none;
}
Nota : "../img/assets/arrow.png"
ruta "../img/assets/arrow.png"
como fondo.
Esto debería funcionar bien para ti en IE, Firefox y Opera.
podemos crear personalizado usando css. probado en IE10, Mozilla y Chrome borwser ...
Ejemplo de trabajo de la siguiente manera:
.customSelect {
position: relative;
}
/* IE11 hide hacks*/
select::-ms-expand {
display: none;
}
.customSelect:after {
content: ''<>'';
font: 17px "Consolas", monospace;
color: #333;
-webkit-transform: rotate(90deg);
-moz-transform: rotate(90deg);
-ms-transform: rotate(90deg);
transform: rotate(90deg);
right: 11px;
/*Adjust for position however you want*/
top: 18px;
padding: 0 0 2px;
border-bottom: 1px solid #999;
/*left line */
position: absolute;
pointer-events: none;
}
.customSelect select {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
/* Add some styling */
display: block;
width: 100%;
height: 50px;
float: none;
margin: 5px 0px;
padding: 0px 24px;
font-size: 16px;
line-height: 1.75;
color: #333;
background-color: #ffffff;
background-image: none;
border: 1px solid #cccccc;
-ms-word-break: normal;
word-break: normal;
}
<div class="customSelect">
<label>
<select>
<option selected> Select Box </option>
<option>Option 1</option>
<option>Option 2</option>
<option>Last long option</option>
</select>
</label>
</div>