2009-08-16 27 views
13

Korzystając z JQuery, chcę utworzyć funkcję, która po wywołaniu funkcji zaniży kolor tła mojego "#page" DIV z kolorowego tła CSS na kolor żółty, a następnie powrót do oryginalnego koloru tła CSS dla # strony.Pomoc JQuery - animacja koloru tła

Jakieś pomysły na to, jak mogę to zrobić w JQuery?

Wiem, że JQuery ma zarówno funkcję "animowania", jak i "podświetlania". Wygląda na to, że "highlight" może być odpowiednią opcją, ale nie jestem pewien.

Dzięki

Odpowiedz

2

można użyć wbudowanej funkcji jQuery animate() z zwrotnego, aby włączyć div powrotem do pierwotnego koloru. Lub użyj jQuery pulse plugin, aby zrobić to automatycznie.

Nadzieję, że pomaga!

+0

Ten link jest zły, czy można go zaktualizować? – AdamJones

1

Możesz sprawdzić wtyczek takich jak this one, aby osiągnąć to, co niektórzy nazywają „błysku”.

Niestety, wyszukiwanie terminu "wtyczka flash jquery" daje setki wyników dla wtyczek odtwarzacza 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, to wygląda obiecująco. Jaki minimalny komponent muszę pobrać, aby mieć możliwości "animate"? Wygląda na to, że podstawowa instalacja JQuery, którą zainstalowałem, nie zawiera "animacji" –

+0

Przy okazji: http://docs.jquery.com/Release:jQuery_1.2/Efekty # Color_Animations jest dokładnie tym, co chcę zrobić, ale sprawiają, że jest to funkcja do wywoływania –

+0

nic innego jquery sam –

17

Jest dość ciężki, aby załadować UI jquery tylko dla tej jednej funkcji, ale jeśli używasz go tak czy inaczej, efekt chcesz to 'highlight'

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

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

@micmcg, jak mogę programowo wywołać metodę "podświetlania" - gdzie, jak w twoim przykładzie, jest to wywołanie kliknięciem myszy. –

+0

po prostu użyj kodu wewnątrz obsługi zdarzenia. $ ("# page"). Effect ("highlight", {}, 3000); – micmcg

+3

A jeśli to zadzwonisz i nic się nie stanie, upewnij się, że ten efekt został uwzględniony w niestandardowym pobieraniu interfejsu użytkownika JQuery. Ponieważ awaria jest cicha, jest to najmodniejszy sposób na niepowodzenie. –

6

You potrzebujesz tylko wtyczki kolorowej jQuery, jeśli chcesz używać nazwanych kolorów (np. 'yellow' zamiast '#FFFF9C'). Miałem różne sukcesy z animate, ale okazało się, że za pomocą wbudowanego wywołania zwrotnego oraz jQuery css działa w większości przypadków.

spróbuj dodać tę funkcję:

$(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); 
      }); 
    }; 
}); 

i nazywając go tak:

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

Testowany w IE9, FF4 i Chrome, używając jQuery 1.5 (nie trzeba UI plugin do tego) .

1

testy ze wszystkimi przeglądarkami

$(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

Tylko tego mi pomógł. Źródło: questions/5205445

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