A folha de estilo do agente do usuário do Chrome fornece um raio de borda de 5px para todos os cantos de um <select>
elemento. Tentei me livrar disso aplicando um raio de 0px na minha folha de estilo externa, bem como no elemento em si; Eu tentei os dois border-radius:0px
e -webkit-border-radius:0px;
tentei o ainda mais específico border-top-left-radius:0px
(junto com o equivalente ao -webkit).
Nenhum está funcionando.
Quando eu examino o elemento nas ferramentas de desenvolvedor do webkit, o Estilo computado ainda lista o raio como 5px. Mas se eu clicar na seta do expansor ao lado para ver os detalhes, ele lê: element.style - 0px. E abaixo disso, ele mostra a especificação css externa que forneci de 0px, juntamente com a especificação de folha de estilo de agente do usuário de 5px. E os dois últimos são riscados, como deveriam ser.
Alguma ideia?
Respostas:
Isso funciona para mim (estiliza a primeira aparição, não a lista suspensa):
http://jsfiddle.net/fMuPt/
fonte
border: 0
e adicionar um esboço como:outline: 1px inset black; outline-offset:-1px
background-color: #yourbg
eborder-style: none
crie uma div diretamente antes da lista suspensa composition: absolute
eborder-bottom: 1px solid #youpick
edisplay: inline
. Setas preservadas, UX intacta, melhor correção.Apenas minha solução com imagem suspensa
(inline svg)
Estou usando o bootstrap e foi por isso que usei
select.form-control
Você pode usar
select{
ouselect.your-custom-class{
preferir.fonte
width: auto;
, a seta svg adicionada sobrepõe o conteúdo da seleção. Isso requer um preenchimento adicional no lado direito de 16px. No entanto, esse preenchimento é visível em todos os navegadores, quebrando o design em outros navegadores. Eu não tenho nenhuma solução para isso ainda ...Se você deseja bordas quadradas e ainda deseja a pequena seta expansora, recomendo:
fonte
outline
on:focus
. Se você estiver indo para usar esta resposta, você deve mudar seuselect:focus
estilo para mostrar visualmente que oselect
elemento é torna-se ativa, ou:focus
ed, no clique.Algumas boas soluções aqui, mas esta não precisa de SVG, preserva a borda
outline
e a alinha no botão.fonte
Enquanto a resposta superior remove a borda, também remove a seta, o que torna extremamente difícil, se não impossível, para o usuário identificar o elemento como uma seleção.
Minha solução foi colocar apenas uma div branca (com raio da borda: 0px) atrás da seleção. Defina sua posição para absoluta, sua altura para a altura do select e você deve estar pronto!
fonte
Solução com seta suspensa à direita personalizada, usa apenas css (sem imagens)
fonte
background-position: calc(100% - 4px) center, 100% center;
Isso move a seta para o meio do select e para a direita. Muito obrigado pelo ótimo começo!Uma maneira de simplificar e evitar mexer com as setas e outros recursos é abrigá-lo em uma div com a mesma cor de fundo da tag de seleção.
fonte
A eliminação das setas deve ser evitada. Uma solução que preserva as setas suspensas é primeiro remover os estilos da lista suspensa:
Em seguida, crie div diretamente antes da lista suspensa no seu HTML:
E estilize a div assim:
A exibição em linha impedirá que o div vá para uma nova linha, a posição absoluta o remove do fluxo da página. O resultado final é um sublinhado limpo e agradável que você pode estilizar como quiser e seu menu suspenso ainda se comporta como o usuário esperaria.
fonte
Inserir caixa-sombra faz o truque.
Demo
fonte
Por alguma razão, é realmente afetado pela cor da borda ??? Quando você usa a cor padrão, os cantos permanecem arredondados, mas se você alterar a cor mesmo que ligeiramente, o arredondamento desaparece.
https://jsfiddle.net/hLg70o70/2/
fonte
Bem, eu tenho a solução. espero que possa ajudá-lo :)
fonte
A seguir está o caminho para fazê-lo;
fonte
Usei a solução de jordan314, mas adicionei a classe "border-light" para selecionar. Se você tiver a classe border-light padrão definida em css, poderá usá-la diretamente. Apenas define a borda como branca). Mudei a borda para quadrado / remova o raio e mantive a seta.
Aqui está o que eu fiz:
se você não tiver a luz de borda predefinida, basta adicionar seu css:
fonte
firefox: 18
fonte
Defina o CSS como
Tente se funcionar.
fonte