O efeito de foco do link e do botão fornece feedback para a interação do usuário com o mouse, mas causa atraso ao clicar em dispositivos de toque; especialmente quando usado com transições.
Em projetos recentes, usei o Modernizr com um mixin SCSS personalizado para corrigir isso:
@mixin hover {
.no-touch &:hover { @content }
}
A no-touch
classe precisa de uma versão customizada do Modernizr com o teste Touch Events.
Exemplo de uso:
# Instead of
a:hover {
color: red;
}
# Write
a {
@include hover {
color: red;
}
}
E para manipuladores de eventos JavaScript:
var CLICK = Modernizr.touch ? 'touchstart' : 'click';
$('.my-button').on(CLICK, function() { ... })