2011-02-07 6 views
8

¿se puede hacer esto?elementos de desvanecimiento de jQuery de una clase a otra, en el vuelo

para, por ejemplo.

.class1{ 
    background-image:(whatever.jpg) 
    color: #fff; 
} 

.class2{ 
    background-image:(whatever2.jpg) 
    color: #999; 
} 

puedo desvanecen todos los elementos que tienen clase 1 a clase 2 cuando el ratón está sobre el elemento, y de vuelta a clase 1 cuando el ratón está fuera?

Respuesta

2

Si das tanto la misma posición absoluta, utilizando fadeIn() y fadeOut() tendrá este efecto (que se adjunta a onmouseover y onmouseout).

4

Creo que this plugin es lo que estás buscando. Te permite animar entre clases. Por ejemplo:

$('.class1').animateToClass('.class2', 1000); 
+1

+1 Así entendí la pregunta. Tenga en cuenta que para las animaciones de color necesitaría jQuery UI o un complemento como http://plugins.jquery.com/project/color – sunn0

+0

+1 para ese enlace. Supuse que jQuery podría animar el color. – Olical

+0

no parece funcionar para mí – Alex

15

Eche un vistazo a jQuery UI's extension to addClass. Permite un parámetro de duración para dar la posibilidad de animación.

aquí, creo que usted quiere hacer algo como esto:

$('.class1').hover(function(){ 
    $(this).addClass('class2', 800); 
}, function(){ 
    $(this).removeClass('class2', 800); 
}); 

Obviamente se tendrá que instalar jQuery UI para esto.

+0

¿puede animar imágenes de fondo? en la interfaz de usuario de jquery, solo hay unas pocas propiedades CSS enumeradas en la animación – Alex

+0

¡Perfecto! Esto era exactamente lo que necesitaba, gracias. –

-2

creo que esto podría ayudar completo a usted ....

$('.class1').mouseover(function() { 
    $(this).toggleClass('class2'); 
}); 
+0

El uso del método toggleClass de jQuery alterna una clase dentro y fuera de un elemento. No tiene nada que ver con dos clases y al alternar entre ellas. –

17

Si no desea utilizar un plugin, puede hacer lo siguiente:

$(".class1").hover(
function() { 
    $(this).fadeOut(function() { 
     $(this).removeClass("class1").addClass("class2").fadeIn('fast'); 
    }); 
}, 
function() { 
    $(this).fadeOut(function() { 
     $(this).removeClass("class2").addClass("class1").fadeIn('fast'); 
    }); 
}); 
1

Este es mi implementación:

 $(this).fadeOut("fast"); or $(this).hide(); 
     $(this).removeClass('css1').addClass('css2'); 
$(this).fadeIn("slow"); 
Cuestiones relacionadas