Estou tentando evitar que o navegador use o :hover
efeito do CSS, via JavaScript.
Eu defini os estilos a
e a:hover
em meu CSS, porque quero um efeito de foco, se JS não estiver disponível. Mas se JS estiver disponível, quero substituir meu efeito de foco CSS por um mais suave (usando o plugin de cores jQuery, por exemplo).
Eu tentei isso:
$("ul#mainFilter a").hover(
function(e){ e.preventDefault(); ...do my stuff... },
function(e){ e.preventDefault(); ...do my stuff... });
Eu também tentei com return false;
, mas não funciona.
Aqui está um exemplo do meu problema: http://jsfiddle.net/4rEzz/ . O link deve desaparecer sem ficar cinza.
Conforme mencionado por fudgey, uma solução alternativa seria redefinir os estilos de foco usando, .css()
mas eu teria que substituir todas as propriedades especificadas no CSS (veja aqui: http://jsfiddle.net/raPeX/1/ ). Estou procurando uma solução genérica.
Alguém sabe como fazer isso?
PS: Não quero sobrescrever todos os estilos que defini para o foco.
fonte
<noscript>
solução. Você acabou de colocar<link>
tags dentro do seu<noscript>
, em vez de<style>
tags. Minha solução permite que você mantenha tudo dentro de um arquivo de folha de estilo em vez de vários arquivos.Use uma segunda classe que tenha apenas o foco atribuído:
HTML
CSS
Agora você pode usar Jquery para remover a classe, por exemplo, se o elemento foi clicado:
JQUERY
Espero que esta resposta seja útil.
fonte
Você pode manipular as próprias folhas de estilo e regras de folha de estilo com javascript
Tornar os atributos importantes e fazer com que seja a última definição CSS deve substituir qualquer definição anterior, a menos que uma seja mais especificamente direcionada. Você pode ter que inserir mais regras nesse caso.
fonte
<link>
tag de folha de estilo noscript dentro de um<noscript>
elemento? Isso funcionaria, certo?Error: The operation is insecure.
Isso é semelhante à resposta de aSeptik, mas e quanto a essa abordagem? Envolva o código CSS que você deseja desativar usando JavaScript nas
<noscript>
tags. Dessa forma, se o javaScript estiver desligado, o CSS:hover
será usado, caso contrário, o efeito JavaScript será usado.Exemplo:
fonte
Usei o
not()
operador CSS e aaddClass()
função jQuery . Aqui está um exemplo, quando você clica em um item da lista, ele não pairará mais:Por exemplo:
HTML
CSS
jQuery
fonte
Eu usaria CSS para evitar que o evento: hover alterasse a aparência do link.
Este CSS simples significa que os links sempre estarão pretos e não sublinhados. Não posso dizer pela pergunta se a mudança na aparência é a única coisa que você deseja controlar.
fonte
Eu recomendo substituir todas as
:hover
propriedades para:active
quando você detectar que o dispositivo suporta toque. Basta chamar essa função ao fazer isso comotouch()
.fonte
Tente apenas definir a cor do link:
Editar: ou melhor ainda, use o CSS, como sugeriu Christopher
fonte
a
vez deul#mainFilter a
se é isso que você quer dizer, ou está dizendo que cada link na página tem uma cor diferente?a.jsOverride:hover
que substitua todas as características do css, então o js teria apenas que adicionar essajsOverride
classe a todos os links quando a página carregar ...Na verdade, uma outra maneira de resolver isso seria sobrescrever o CSS com
insertRule
.Ele permite injetar regras CSS em uma folha de estilo nova / existente. No meu exemplo concreto, seria assim:
Demonstração com meu exemplo original de 4 anos: http://jsfiddle.net/raPeX/21/
fonte