Remover a seta Selecionar no IE


126

Eu tenho o elemento select, eu quero remover a seta, então eu posso adicionar outro ícone. Eu posso fazer isso no Firefox Safari e Chrome, mas isso não funcionou no IE9 .

.styled-select select 
{
    border: 0 !important;  /*Removes border*/
    -webkit-appearance: none;  /*Removes default chrome and safari style*/
    -moz-appearance: none;  /*Removes default style Firefox*/
    background: url('select_icon.png')  no-repeat;
     background-position: 179px 7px;
     text-indent: 0.01px;
     text-overflow: "";
     color: #FCAF17;
     width:200px;
 }

VEJA Fiddle no IE9 . tudo o que eu preciso é remover a seta no ie9 Por favor, JSFIDDLE responda.


1
Pode não ser possível. Os navegadores (especialmente o IE) costumam relutar em oferecer opções de estilo estendidas para seus widgets.
Pekka

Você não pode fazer isso apenas com CSS, mas acredito que existem bibliotecas JS para estilizar formulários que podem fazer isso. Google deve saber.
Mark Simpson

@Alberto esta questão tem sido a resposta antes dos 2 anos :) Se você acha que tem resposta que você pode inseri-lo
Muath

Respostas:


322

No IE9, é possível com apenas um hack, conforme recomendado pelo @Spudley. Como você personalizou a altura e a largura da div e selecionou, é necessário alterar o div:beforecss para corresponder ao seu.

Caso seja o IE10, usando o css3 abaixo, é possível

select::-ms-expand {
    display: none;
}

No entanto, se você estiver interessado no plugin jQuery, tente Chosen.jsou você pode criar o seu próprio em js.


2
@Moath Howari Modifiquei o seu violino, verifique isso no IE9 jsfiddle.net/kBWYd/6
Praveen

O @PraveenJeganathan Selectbox também tem um bug. Quando clicamos no canto direito do menu suspenso, ele não está funcionando. Podemos fazer algo por isso?
Manjit Singh

A coisa @Praveen é, então o lado direito não é clicável.
precisa saber é o seguinte

1
@ManjitSingh e Tom Roggero - Isso é bastante hacky, mas se você precisar desse espaço clicável, poderá substituí display: none;-lo opacity: .01. Será quase impossível vê-lo, mas ainda será possível clicar.
Chapeljuice

1
@ MarcRoussel baseado nesse violino, isso pode ser escrito como o select:hover::-ms-expandestado de foco para o pseudo elemento, conforme mencionado selector:state::pseudo. Eu não poderia testar com o IE ainda vale a pena tentar :)
Praveen

6

Sugiro a minha solução que você pode encontrar neste repositório do GitHub . Isso funciona também para o IE8 e IE9 com uma seta personalizada que vem de uma fonte de ícone.

Exemplos de lista suspensa personalizada entre navegadores em ação: verifique-os com todos os navegadores para ver o recurso entre navegadores.

De qualquer forma, vamos começar com os navegadores modernos e, em seguida, veremos a solução para os mais antigos.

Seta suspensa para Chrome, Firefox, Opera, Internet Explorer 10 ou superior

Para esses navegadores, é fácil definir a mesma imagem de plano de fundo para o menu suspenso para ter a mesma seta.

Para fazer isso, é necessário redefinir o estilo padrão do navegador para a selectmarca e definir novas regras de segundo plano (como sugerido 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;
    ...
}

As appearanceregras são definidas como nenhuma para redefinir as configurações padrão dos navegadores. Se você deseja ter o mesmo aspecto para cada seta, mantenha-as no lugar.

As backgroundregras nos exemplos são definidas com imagens embutidas SVG que representam setas diferentes. Eles estão posicionados 98% da esquerda para manter alguma margem na borda direita (você pode modificar facilmente a posição como desejar).

Para manter o comportamento correto entre navegadores, a única outra regra que deve ser mantida no local é a outline. Essa regra redefine a borda padrão que aparece (em alguns navegadores) quando o elemento é clicado. Todas as outras regras podem ser facilmente modificadas, se necessário.

Seta suspensa para Internet Explorer 8 (IE8) e Internet Explorer 9 (IE9) usando a Fonte do ícone

Esta é a parte mais difícil ... Ou talvez não.

Não existe uma regra padrão para ocultar as setas padrão para esses navegadores (como o select::-ms-expandIE10 +). A solução é ocultar a parte do menu suspenso que contém a seta padrão e inserir uma fonte de ícone de seta (ou um SVG, se você preferir) semelhante ao SVG usado nos outros navegadores (consulte a selectregra CSS para obter mais informações). detalhes sobre o SVG embutido usado).

O primeiro passo é definir uma classe que possa reconhecer o navegador: esta é a razão pela qual eu usei os IFs do IE condicional no início do código. Esses IFs são usados ​​para anexar classes específicas à htmltag para reconhecer o navegador IE mais antigo.

Depois disso, todo selecto código HTML deve ser envolvido por uma div(ou qualquer marca que possa agrupar um elemento). Nesse invólucro, adicione a classe que contém a fonte do ícone.

<div class="selectTagWrapper prefix-icon-arrow-down-fill">
    ...
</div>

Em palavras fáceis, esse wrapper é usado para simular a selecttag.

Para agir como um menu suspenso, o wrapper deve ter uma borda, porque ocultamos o que vem do select.

Observe que não podemos usar a selectborda porque temos que ocultar a seta padrão, aumentando-a em 25% a mais que o wrapper. Consequentemente, sua borda direita não deve ser visível, porque ocultamos esses 25% a mais pela overflow: hiddenregra aplicada a selectela mesma.

A seta personalizada icon-font é colocada na pseudo classe :beforeonde a regra contentcontém a referência para a seta (nesse caso, é um parêntese à direita).

Também colocamos essa seta em uma posição absoluta para centralizá-la o máximo possível (se você usar fontes de ícones diferentes, lembre-se de ajustá-las oportunamente, alterando os valores superior e esquerdo e o tamanho da fonte).

.ie8 .prefix-icon-arrow-down-fill:before,
.ie9 .prefix-icon-arrow-down-fill:before {
    content: ")";
    position: absolute;
    top: 43%;
    left: 93%;
    font-size: 6px;
    ...
}

Você pode criar e substituir facilmente a seta do plano de fundo ou a seta da fonte do ícone, com todas as que desejar, simplesmente alterando-a na background-imageregra ou criando você mesmo um novo arquivo de fonte do ícone.


4

Caso você queira usar a classe e a pseudo-classe:

.simple-control é sua classe css

:disabled é pseudo classe

select.simple-control:disabled{
         /*For FireFox*/
        -webkit-appearance: none;
        /*For Chrome*/
        -moz-appearance: none;
}

/*For IE10+*/
select:disabled.simple-control::-ms-expand {
        display: none;
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.