Esta é uma solução moderna que eu criei usando uma fonte incrível . As extensões de fornecedor foram omitidas por questões de concisão.
HTML
<fieldset>
<label for="color">Select Color</label>
<div class="select-wrapper">
<select id="color">
<option>Red</option>
<option>Blue</option>
<option>Yellow</option>
</select>
<i class="fa fa-chevron-down"></i>
</div>
</fieldset>
SCSS
fieldset {
.select-wrapper {
position: relative;
select {
appearance: none;
position: relative;
z-index: 1;
background: transparent;
+ i {
position: absolute;
top: 40%;
right: 15px;
}
}
}
Se o seu elemento de seleção tiver uma cor de plano de fundo definida, isso não funcionará, pois esse fragmento basicamente coloca o ícone da Chevron atrás do elemento de seleção (para permitir que cliques na parte superior do ícone ainda iniciem a ação de seleção).
No entanto, você pode estilizar o wrapper de seleção com o mesmo tamanho do elemento de seleção e estilizar seu plano de fundo para obter o mesmo efeito.
Confira meu CodePen para obter uma demonstração funcional que mostre esse código em uma caixa de seleção com temas escuros e claros, usando um rótulo comum e um marcador de "espaço reservado" e outros estilos de limpeza, como bordas e larguras.
PS Essa é uma resposta que eu havia postado em outra pergunta duplicada no início deste ano.