:focus-visible
para Melhorar a
AcessibilidadeA propriedade CSS :focus-visible
é uma maneira inteligente de aplicar estilos de foco apenas quando
eles são realmente úteis, como quando um usuário está navegando com o teclado. Isso ajuda a criar interfaces
mais acessíveis e evita estilos desnecessários quando o foco é acionado por um mouse ou toque.
:focus-visible
?Tab
).<button>Clique aqui</button>
<input type="text" placeholder="Digite algo">
<a href="#">Link de exemplo</a>
/* Estilo padrão para todos os elementos */
button, input, a {
padding: 10px 20px;
font-size: 16px;
border: 2px solid transparent;
border-radius: 5px;
transition: border-color 0.3s;
}
/* Estilo de foco visível (apenas para navegação por teclado) */
button:focus-visible,
input:focus-visible,
a:focus-visible {
border-color: #007BFF;
outline: none; /* Remove o outline padrão */
box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.5); /* Adiciona um destaque suave */
}
Estilo Padrão:
:focus-visible
:
#007BFF
) e uma sombra suave é adicionada para destacar o
elemento.outline: none;
remove o contorno padrão do navegador, que pode não combinar com o
design.:focus-visible
?Melhora a Acessibilidade:
Interface Mais Limpa:
Personalização:
Contraste Adequado:
Teste em Diferentes Navegadores:
:focus-visible
em navegadores mais antigos. Caso
necessário, use um polyfill ou fallback.Combine com :focus
:
:focus
e :focus-visible
para
garantir que os estilos de foco sejam aplicados corretamente em todos os cenários.Aqui está o código completo para você testar:
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Exemplo de :focus-visible</title>
<style>
/* Estilo padrão para todos os elementos */
button, input, a {
padding: 10px 20px;
font-size: 16px;
border: 2px solid transparent;
border-radius: 5px;
transition: border-color 0.3s;
margin: 10px;
display: inline-block;
text-decoration: none;
color: #333;
}
/* Estilo de foco visível (apenas para navegação por teclado) */
button:focus-visible,
input:focus-visible,
a:focus-visible {
border-color: #007BFF;
outline: none; /* Remove o outline padrão */
box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.5); /* Adiciona um destaque suave */
}
</style>
</head>
<body>
<button>Clique aqui</button>
<input type="text" placeholder="Digite algo">
<a href="#">Link de exemplo</a>
</body>
</html>
Usar :focus-visible
é uma maneira eficaz de melhorar a acessibilidade e a usabilidade da sua
interface, garantindo que os estilos de foco sejam aplicados apenas quando necessário. Experimente essa técnica
em seus projetos e veja a diferença!