Estou tentando substituir a seta de uma seleção por uma imagem minha. Estou incluindo o select em um div com o mesmo tamanho, defino o background do select como transparente e estou incluindo uma imagem (com o mesmo tamanho da seta) no canto superior direito do div como background.
Só funciona no Chrome.
Como posso fazer isso funcionar no Firefox e no IE9, onde obtenho isto:
.styled-select {
width: 100px;
height: 17px;
overflow: hidden;
overflow: -moz-hidden-unscrollable;
background: url(images/downarrow_blue.png) no-repeat right white;
border: 2px double red;
display: inline-block;
position: relative;
}
.styled-select select {
background: transparent;
-webkit-appearance: none;
width: 100px;
font-size: 11px;
border: 0;
height: 17px;
position: absolute;
left: 0;
top: 0;
}
body {
background-color: #333333;
color: #FFFFFF;
}
.block label {
color: white;
}
<HTML>
<HEAD>
</HEAD>
<BODY>
<p/>
<form action="/prepareUpdateCategoryList.do?forwardto=search">
<fieldset class="block" id="searchBlock">
<p>
<label style="width:80px">Class</label>
<div class="styled-select">
<select property="voucherCategoryClass">
<option value="0">Select </option>
<option value="7382">steam </option>
</select>
</div>
</p>
</fieldset>
</form>
</BODY>
</HTML>
appearance: menulist !important;-moz-appearance: menulist !important;-webkit-appearance: menulist !important;-o-appearance: menulist !important;
Eu configurei um
select
com uma seta personalizada semelhante à resposta do Julio, porém não tem uma largura definida e usa umsvg
como imagem de fundo. (arrow_drop_down
dos ícones material-ui)Se precisar que ele também funcione no IE, atualize a seta svg para base64 e adicione o seguinte:
Para tornar mais fácil dimensionar e espaçar a seta, use este svg:
Não tem espaçamento nas laterais da seta.
fonte
background-position: top 5px right 4px;
background: url('data:image/svg+xml;utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path d="M7 10l5 5 5-5z"/><path d="M0 0h24v24H0z" fill="none"/></svg>') 100% 50% no-repeat transparent;
background-position-y: 5px;
vez de% (por exemplo.background-position-y: 50%;
)?Trabalhando com apenas uma classe:
http://jsfiddle.net/qhCsJ/4120/
fonte
background-position-x: calc( 100% - 5px );
Aqui está uma correção elegante que usa um intervalo para mostrar o valor.
O layout é assim:
JsFiddle
fonte
Isso funcionaria bem, especialmente para aqueles que usam Bootstrap, testado nas versões mais recentes do navegador:
fonte
Verifique este. É hacky, simples assim:
-prefix-appearance
paranone
para remover os estilostext-indent
para "empurrar" o conteúdo um pouco para a direitatext-overflow
como uma string vazia. Tudo o que se estende além de sua largura se tornará ... nada! E isso inclui a flecha.Agora você está livre para estilizá-lo da maneira que quiser :)
Ver no JSFiddle
fonte
Está funcionando em todos os navegadores:
fonte
Defina o estilo do rótulo com CSS e use eventos de ponteiro:
e o CSS relativo é
Acabei de usar uma seta para baixo aqui, mas você pode definir um bloco com uma imagem de fundo. Aqui está um exemplo de violino feio: https://jsfiddle.net/1rofzz89/
fonte
Referi esta postagem , funcionou perfeitamente, exceto que não escondeu a seta no navegador IE.
fonte
Suponha que selectDrop seja a classe presente em sua tag HTML. Portanto, essa quantidade de código é suficiente para alterar o ícone de seta padrão:
fonte