2009-08-16 14 views
13

Usando JQuery, lo que quiero hacer es crear una función que cuando llame a la función, desvanecerá el color de fondo de mi DIV "#page" del color de fondo CSS a amarillo, luego volver al color de fondo original de CSS para #page.Ayuda de JQuery: color de fondo animado

¿Alguna idea sobre cómo puedo hacer esto con JQuery?

Sé que JQuery tiene una funcionalidad "animada" y "resaltada". Parece que "resaltar" podría ser la opción adecuada, pero no estoy seguro.

Gracias

Respuesta

2

podría utilizar la función integrada de jQuery animate() con una devolución de llamada para activar el div volver al color original. O use el jQuery pulse plugin para hacerlo automáticamente.

Espero que ayude!

+0

Este enlace es malo, ¿se puede actualizar? – AdamJones

1

Es posible que desee echa un vistazo a los plugins como this one para lograr lo que algunos llaman un "flash".

Desafortunadamente, la búsqueda del término "jquery flash plugin" arroja cientos de resultados para los complementos del reproductor SWF.

7
function flashColor(id) 
{ 
    var container = $('#'+id); 
    if(container.length) 
    { 
     var originalColor = container.css('backgroundColor'); 
     container.animate({ 
      backgroundColor:'yellow' 
     },'normal','linear',function(){ 
      $(this).animate({ 
       backgroundColor:originalColor 
      }); 
     }); 
    } 
} 
+0

@Funky Dude, esto parece prometedor. ¿Qué componente mínimo necesito descargar para tener capacidades 'animadas'? Parece que la instalación básica de JQuery que he instalado no incluye 'animar' –

+0

Por cierto, http://docs.jquery.com/Release:jQuery_1.2/Efectos # Color_Animations es exactamente lo que quiero hacer, pero que sea una función invocable –

+0

nada más que jquery en sí –

17

Es bastante pesada para cargar la interfaz de usuario jQuery sólo para esto una característica, pero si usted lo está utilizando de todos modos, el efecto que desea es 'destacado'

http://docs.jquery.com/UI/Effects/Highlight

$("div").click(function() { 
     $(this).effect("highlight", {}, 3000); 
}); 
+0

@micmcg, ¿cómo puedo llamar al método "resaltar" de forma programática, donde, como en su ejemplo, es una llamada con un clic del mouse. –

+0

simplemente use el código dentro del controlador de eventos. $ ("# página"). Efecto ("resaltar", {}, 3000); – micmcg

+3

Y si llama a esto y no pasa absolutamente nada, asegúrese de que realmente tenga este efecto incluido en su descarga personalizada de JQuery UI. Porque fallar silenciosamente es la manera moderna de fracasar. –

6

Usted solo necesita el complemento de color jQuery si desea utilizar colores con nombre (por ejemplo, 'yellow' en lugar de '#FFFF9C'). Tuve un éxito variable con animate, pero descubrí que usar su devolución de llamada integrada más jQuery's css parece funcionar en la mayoría de los casos.

Trate de añadir esta función:

$(document).ready(function() { 

    $.fn.animateHighlight = function (highlightColor, duration) { 
     var highlightBg = highlightColor || "#FFFF9C"; 
     var animateMs = duration || 1000; 
     var originalBg = this.css("background-color"); 

     if (!originalBg || originalBg == highlightBg) 
      originalBg = "#FFFFFF"; // default to white 

     jQuery(this) 
      .css("backgroundColor", highlightBg) 
      .animate({ backgroundColor: originalBg }, animateMs, null, function() { 
       jQuery(this).css("backgroundColor", originalBg); 
      }); 
    }; 
}); 

y decir que es así:

$('#page').animateHighlight(); 

Probado en IE9, FF4 y Chrome, usando jQuery 1.5 (no se necesita plugin de interfaz de usuario para esto) .

1

prueba con todos los navegadores

$(document).ready(function() { 
    var id = $("div#1"); // div id=1 
    var color = "lightblue"; // color to highlight 
    var delayms = "800"; // mseconds to stay color 
    $(id).css("backgroundColor",color) 
    .css("transition","all 1.5s ease") // you may also (-moz-*, -o-*, -ms-*) e.g 
    .css("backgroundColor",color).delay(delayms).queue(function() { 
     $(id).css("backgroundColor",""); 
     $(id).dequeue(); 
    }); 
}); 
0

Sólo esto me ayudó. Fuente: questions/5205445

$("div").click(function() 
{ 
    // do fading 3 times 
    for(i=0;i<3;i++) 
    { 
    $(this).fadeTo('slow', 0.5).fadeTo('slow', 1.0); 
    } 
});