Estou trabalhando em uma página da web e quero <button>
tags com estilo personalizado . Então, com CSS, eu disse:border: none
. Agora ele funciona perfeitamente no safari, mas no chrome, quando clico em um dos botões, coloca uma borda azul irritante em torno dele. Eu pensei button:active { outline: none }
ou button:focus { outline:none }
iria funcionar, mas também não. Alguma ideia?
É assim que é antes de ser clicado (e como eu quero que ainda pareça depois de ser clicado):
E é dessa fronteira que estou falando:
Aqui está o meu CSS:
button.launch {
background-color: #F9A300;
border: none;
height: 40px;
padding: 5px 15px;
color: #ffffff;
font-size: 16px;
font-weight: 300;
margin-top: 10px;
margin-right: 10px;
}
button.launch:hover {
cursor: pointer;
background-color: #FABD44;
}
button.change {
background-color: #F88F00;
border: none;
height: 40px;
padding: 5px 15px;
color: #ffffff;
font-size: 16px;
font-weight: 300;
margin-top: 10px;
margin-right: 10px;
}
button.change:hover {
cursor: pointer;
background-color: #F89900;
}
button:active {
outline: none;
border: none;
}
css
google-chrome
eshellborn
fonte
fonte
outline: none
dessa maneira, a menos que esteja pronto para substituir a perda de acessibilidade. Veja este site: outlinenone.comRespostas:
Isso não é recomendado , pois regride a acessibilidade do seu site; para mais informações, consulte esta postagem .
Dito isto, se você insiste, este CSS deve funcionar:
Confira ou JSFiddle: http://jsfiddle.net/u4pXu/
Ou neste snippet:
fonte
outline: none;
ou não importa?button:focus{ outline-color: #A75000 }
... em vez de ocultar o indicador, você o altera para um laranja escuro que se encaixa no estilo.Esperar! Há uma razão para esse esboço feio!
Antes de remover esse feio contorno azul, convém levar em consideração a acessibilidade . Por padrão, esse contorno azul é colocado em elementos que podem ser focalizados. Isso é para que os usuários com problemas de acessibilidade possam focar esse botão, tabulando-o. Alguns usuários não possuem as habilidades motoras para usar o mouse e devem usar apenas o teclado (ou algum outro dispositivo de entrada) para interação com o computador. Quando você remove o contorno azul, não há mais um indicador visual sobre qual elemento está focado. Se você estiver indo para remover o contorno azul, você deve substituí-lo por um outro tipo de indicação visual de que o botão é focado.
Solução possível: Escurecer botões quando focado
Para os exemplos abaixo, o contorno azul do Chrome foi removido primeiro usando
button:focus { outline:0 !important; }
Aqui estão os botões básicos do Bootstrap, como eles aparecem normalmente:
Aqui estão os botões quando eles recebem o foco:
Aqui os botões quando são pressionados:
Como você pode ver, os botões ficam um pouco mais escuros quando recebem o foco. Pessoalmente, eu recomendaria tornar os botões focados ainda mais escuros para que haja uma diferença muito perceptível entre o estado focado e o estado normal do botão.
Não é apenas para usuários com deficiência
Tornar seu site mais acessível é algo que geralmente é esquecido, mas pode ajudar a criar uma experiência mais produtiva em seu site. Existem muitos usuários normais que usam comandos do teclado para navegar pelos sites, a fim de manter as mãos no teclado.
fonte
Acabei de remover o contorno de todas as tags da página selecionando tudo e aplicando o contorno: nenhum para tudo :)
Como o bagofcole mencionou, você pode precisar adicionar também! Important, assim o estilo ficará assim:
fonte
Na minha instância deste problema, tive que especificar
box-shadow: none
fonte
box-shadow
Não se esqueça da
!important
declaração, para um melhor resultadoUma regra que possua a propriedade! Important sempre será aplicada, independentemente de onde ela apareça no documento CSS.
fonte
outline:0 !important
são más práticas de experiência de usuário e práticas de desenvolvimento. Se você estiver fazendo isso, verifique se está fazendo outra coisa para indicar a posição do foco (como alterar a cor de fundo do elemento).A remoção
outline
é terrível para a acessibilidade! Idealmente, o anel de foco aparece apenas quando o usuário pretende usar o teclado .Uso : foco visível . Atualmente, é uma proposta do W3C para estilizar o foco somente do teclado usando CSS e é suportada no Firefox ( caniuse ). Até que outros navegadores principais o suportem, você pode usar esse polyfill robusto .
Também escrevi um post mais detalhado, caso você precise de mais informações.
fonte
outline
como tal, enquanto o: foco estado é feita claramente visível através de outros meios, comoborder,
background-color
,box-shadow
, etc.:-moz-focusring
, mas, ao contrário do que dizem os documentos, não diferencia entre o foco do clique e da guia. No Chrome, a partir de agora você precisa habilitar sinalizadores específicos para que ele funcioneAdicione isso ao seu arquivo CSS.
fonte
Use isto:
ou isso se isso não funcionar:
Isso funciona para mim (FF e Chrome, pelo menos). Em vez de segmentar o
:focus
estado, basta segmentar o:active
estado e isso removerá o realce esteticamente invasivo do seu navegador quando um usuário clicar em um link. Mas ainda manterá os estados de foco quando um usuário com deficiência guia ou alterna entre guias de uma página. Ambas as partes são felizes. :)fonte
para este problema:
usa isto:
resultado:
fonte
Para quem usa o Bootstrap e tem esse problema, ele usa: active: focus e apenas: active e: focus, para que você precise de:
Espero que alguém tenha economizado algum tempo para descobrir isso, bateu minha cabeça um pouco imaginando por que uma coisa tão simples não estava funcionando.
fonte
A maioria das soluções não funcionará se você estiver usando o Bootstrap 4.1 e possivelmente outras versões. Depois de muita batida, descobri que você precisa aplicar a classe shadow-none :
fonte
Isto é o que funcionou para mim:
fonte
A correção para o Chrome e outros navegadores
fonte
tente este código para todos os elementos com problemas de borda azul
ou
fonte
Outra maneira de resolver o problema de acessibilidade que ainda não foi mencionado aqui é através de um pouco de Javascript . Os créditos vão para este blogpost interessante do hackernoon: https://hackernoon.com/removing-that-ugly-focus-ring-and-keeping-it-too-6c8727fefcd2
A abordagem aqui é realmente simples, mas eficaz: adicionar uma classe quando as pessoas começarem a usar a tecla tab para navegar na página (e, opcionalmente, removê-la quando mudar novamente para o mouse. Em seguida, você pode usar essa classe para exibir um esboço do foco ou não .
fonte
Como enfrentei o mesmo problema, usei CSS-
fonte
Se você deseja excluir o mesmo efeito na entrada, você pode adicionar o seguinte código e o botão.
fonte
Até que todos os navegadores modernos comecem a suportar o seletor de css : focus-visible ,
a maneira mais simples e possivelmente melhor de economizar acessibilidade é remover esse foco complicado apenas para usuários de mouse e salvá-lo para usuários de teclado :
1.Use este pequeno polyfill (cerca de 10kb): https://github.com/WICG/focus-visible
2.Adicione o próximo código em algum lugar no seu css:
Suporte para navegador do css4-selector: foco visível agora muito fraco:
https://caniuse.com/#search=focus-visible
fonte
Basta escrever
outline:none;
. Não há necessidade de usar pseudo elementofocus
fonte
Esse é um problema da família Chrome e está presente desde sempre.
Um erro foi gerado https://bugs.chromium.org/p/chromium/issues/detail?id=904208
Pode ser mostrado aqui: https://codepen.io/anon/pen/Jedvwj assim que você adicionar uma borda a qualquer botão (por exemplo, role = "button" foi adicionado a uma tag, por exemplo). e define o estado do foco quando você clica com o mouse.
Eu recomendo usar esta correção: https://github.com/wicg/focus-visible .
Basta fazer o seguinte
Adicione o script ao seu html:
ou importe para o seu arquivo de entrada principal se estiver usando o webpack ou algo semelhante:
então coloque isso no seu arquivo css:
Você pode apenas definir:
mas se você tiver um grande número de usuários, estará prejudicando aqueles que não podem usar ratos ou aqueles que apenas desejam usar o teclado para obter velocidade.
fonte
Eu tive o mesmo problema com o bootstrap. Eu resolvi com contorno e sombra de caixa
fonte