2010-09-09 11 views
7
$(".block li").hover(
    function(){ 
     $(this).animate({backgroundColor: "#000"}); 
    }, 
    function(){ 
     $(this).animate({backgroundColor: "#fff"}); 
    } 
); 

Necesita cambiar #fff a ningún color. La animación debería ocurrir desde #000 hasta transparent.jQuery animar a transparente

¿Alguna solución?

+0

has necesitado 'transparent'? ¿No funciona? Es un CSS válido. No estoy seguro acerca de la compatibilidad de animación con jQuery. –

+0

transparente no funciona – James

+1

posible duplicado de [¿Cómo puedo animar un color de fondo a transparente en jQuery?] (Http://stackoverflow.com/questions/663568/how-do-i-animate-a-background-color -to-transparent-in-jquery) – JasCav

Respuesta

3

En lugar de cambiar el color de fondo, elimine ese atributo.

El código es tan simple como:

$("li").hover(
    function(){ 
     $(this).toggleClass('hover', 1000); 
    }, 
    function(){ 
     $(this).toggleClass('hover', 2000); 
    } 
); 

Ejemplo: http://jsfiddle.net/rdWTE/

Para que funcione, es necesario jQuery y jQuery UI. Hace exactamente lo que quería (¡excepto los colores)!

Los números en la secuencia de comandos jQuery representan la duración de la animación en milisegundos.

EDIT:

Uhm ... descubrí que toggleClass lata de errores de vez en cuando. Es mejor usar addClass al pasar el mouse y removeClass al salir.

+0

cómo eliminarlo con un poco de animación? como negro o sin color – James

+0

http://api.jquery.com/animate/ - lea y vea cómo usar la duración y la suavización. ¡Con ellos puedes lograr tu efecto deseado! – jolt

+0

a menudo no oculta el fondo en mouseout – James

0

¿Por qué no utilizar la etiqueta opacity CSS3?

+0

necesita un poco de efecto de animación. – James

+0

Puede animar el valor de opacidad de la misma manera que está animando el valor backgroundColor en su código ahora. – Colin

2

Editar: He probado esto y funciona.

Crea dos clases. Uno con fondo: # 000 y uno con fondo: transparente;

Animar el toggleClass o removeClass para la clase de fondo # 000.

ejemplo:

jQuery('.block li').hover(function() { 
    $(this).toggleClass('blackClass', 'fast'); 
} 

CSS:

.blackClass { background: #000; } 
0

Esto puede requerir algún cambio en el código HTML y CSS (que podría tener lugar mediante la escritura si no tiene control directo de HTML/CSS)

Yo dividiría cada elemento '.block li' en dos elementos: uno que será el elemento de fondo que se puede animar con $ .fadeTo(), y otro elemento colocado encima que contendrá su contenido de primer plano y en el que puede llamar a $ .hover() con sus controladores.

4

Puede usar rgba(...) (see browser support here).

var elem = $('#foo')[0]; 

$({ 
    r: 0, 
    g: 0, 
    b: 0, 
    a: 1 
}).animate({ 
    a: 0 
}, { 
    step: function() { 
     elem.style.backgroundColor = 
      'rgba(' + 
       ~~this.r + ',' + ~~this.g + ',' + ~~this.b + ',' + 
       ~~(this.a*100)/100 + 
      ')'; 
    }, 
    duration: 1000 
});​ 

~~ es a los valores de suelo, de lo contrario va a terminar con cosas como rgba(0.1029302.... .

0

$ ("li bloque") se ciernen ( function() {$ (este) .animate ({backgroundColor: "# 000"});} , function() {$ (esto)animate ({backgroundColor: $ (this) .parent(). css ("backgroundColor")}); } );

+0

Este fue mi pensamiento inicial, pero esto podría no funcionar si hay una imagen para el fondo. – Sandro