Estoy tratando de evitar que el navegador use el :hover
efecto de CSS, a través de JavaScript.
He configurado los estilos a
y a:hover
en mi CSS, porque quiero un efecto de desplazamiento, si JS no está disponible. Pero si JS está disponible, quiero sobrescribir mi efecto de desplazamiento CSS con uno más suave (usando el complemento de color jQuery, por ejemplo).
Probé esto:
$("ul#mainFilter a").hover(
function(e){ e.preventDefault(); ...do my stuff... },
function(e){ e.preventDefault(); ...do my stuff... });
También lo probé return false;
, pero no funciona.
Aquí hay un ejemplo de mi problema: http://jsfiddle.net/4rEzz/ . El enlace debería desaparecer sin volverse gris.
Como lo mencionó fudgey, una solución sería restablecer los estilos de desplazamiento usando .css()
pero tendría que sobrescribir cada propiedad, especificada en el CSS (ver aquí: http://jsfiddle.net/raPeX/1/ ). Busco una solución genérica.
¿Alguien sabe como hacer esto?
PD: No quiero sobrescribir todos los estilos que he configurado para el hover.
fuente
<noscript>
solución. Simplemente coloque<link>
etiquetas dentro de su<noscript>
, en lugar de<style>
etiquetas. Sin embargo, mi solución le permite mantener todo dentro de un archivo de hoja de estilo en lugar de varios archivos.Use una segunda clase que solo tenga asignado el hover:
HTML
CSS
Ahora puede usar Jquery para eliminar la clase, por ejemplo, si se ha hecho clic en el elemento:
JQUERY
Espero que esta respuesta sea útil.
fuente
Puede manipular las hojas de estilo y las reglas de la hoja de estilo con javascript.
Hacer que los atributos! Sean importantes y hacer de esta la última definición de CSS debe anular cualquier definición anterior, a menos que una sea más específica. Puede que tenga que insertar más reglas en ese caso.
fuente
<link>
etiqueta de hoja de estilo noscript dentro de un<noscript>
elemento? Eso funcionaría, ¿verdad?Error: The operation is insecure.
Esto es similar a la respuesta de aSeptik, pero ¿qué pasa con este enfoque? Envuelva el código CSS que desea deshabilitar usando JavaScript en
<noscript>
etiquetas. De esa forma, si javaScript está desactivado, el CSS:hover
se utilizará ; de lo contrario, se utilizará el efecto JavaScript.Ejemplo:
fuente
He utilizado el
not()
operador de CSS y jQueryaddClass()
función. Aquí hay un ejemplo, cuando hace clic en un elemento de la lista, ya no se desplaza:Por ejemplo:
HTML
CSS
jQuery
fuente
Usaría CSS para evitar que el evento: hover cambie la apariencia del enlace.
Este CSS simple significa que los enlaces siempre serán negros y no estarán subrayados. No puedo decir a partir de la pregunta si el cambio en la apariencia es lo único que desea controlar.
fuente
Recomendaría reemplazar todas las
:hover
propiedades:active
cuando detecte que el dispositivo es compatible con el tacto. Simplemente llame a esta función cuando lo haga comotouch()
.fuente
Intente simplemente configurar el color del enlace:
Editar: o mejor aún, use el CSS, como sugirió Christopher
fuente
a
lugar deul#mainFilter a
si eso es lo que quiere decir, o está diciendo que cada enlace en la página es de un color diferente?a.jsOverride:hover
que anule todas las características de css, por lo que js solo tendría que agregar esajsOverride
clase a todos los enlaces cuando se cargue la página ...En realidad, otra forma de resolver esto podría ser sobrescribir el CSS con
insertRule
.Da la capacidad de inyectar reglas CSS a una hoja de estilo nueva o existente. En mi ejemplo concreto, se vería así:
Demostración con mi ejemplo original de 4 años: http://jsfiddle.net/raPeX/21/
fuente