La solution de Raj_89 est la plus proche d'être une option valable bien que, comme l'a mentionné Kevin Swarts dans son commentaire, elle va casser IE, ce qui est un problème pour un grand nombre d'entreprises clientes (et dire à votre client que vous ne coderez pas pour IE "pour des raisons" n'est pas de nature à rendre votre patron heureux ;) ).
J'ai donc joué avec et voici le problème : l'événement 'onmousedown' pose problème dans IE, donc ce que nous voulons faire, c'est empêcher l'affichage par défaut lorsque l'utilisateur clique sur le menu déroulant pour la première fois. Il est important que ce soit la seule fois que nous fassions cela : si nous empêchons l'affichage par défaut lors du prochain clic, lorsque l'utilisateur fait son choix, l'événement onchange ne se déclenchera pas.
De cette façon, nous obtenons une belle liste déroulante, sans scintillement, sans panne d'IE - cela fonctionne tout simplement... du moins dans IE10 et plus, et dans les dernières versions de tous les autres navigateurs majeurs.
<p>Which is the most annoing browser of them all:</p>
<select id="sel" size = "1">
<option></option>
<option>IE 9</option>
<option>IE 10</option>
<option>Edge</option>
<option>Firefox</option>
<option>Chrome</option>
<option>Opera</option>
</select>
Voici le violon : https://jsfiddle.net/88cxzhom/27/
Quelques autres points à noter : 1) Le positionnement absolu et la définition de l'indice z sont utiles pour éviter de déplacer d'autres éléments lorsque les options sont affichées. 2) Utilisez la propriété "currentTarget" - il s'agira de l'élément sélectionné dans tous les navigateurs. Alors que 'target' sera select dans IE, le reste vous permettra de travailler avec les options.
J'espère que cela aidera quelqu'un.