2012-08-17 9 views
5

Próbuję animowanie text-shadow zanikać i obecnie za pomocą urywek wspólne tutaj:Animowanie text-shadow zanikać i obecnie

Animating elements of text-shadow with jQuery

Moje kodu jest zasadniczo:

$.fx.step.textShadowBlur = function(fx) { 
    $(fx.elem).css({textShadow: '0 0 ' + Math.floor(fx.now) + 'px white'}); 
}; 

$("#seconds").animate({textShadowBlur:20}, {duration: 300, complete: function() { 
    $("#seconds").animate({textShadowBlur:0}, {duration: 300}); 
}}); 

Problem polega na tym, że część "znikająca" nie działa. Cień plama po prostu zwiększa się do 20, a następnie „resetuje” 0.

jsfiddle problemu: http://jsfiddle.net/ANs92/

+1

Czy nie byłoby rozsądnie osiągnąć efekt za pomocą CSS3 zamiast JS? – aliirz

+0

Ten efekt jest wyzwalany w określonych zdarzeniach i zasadniczo obejmuje 2 animacje (animacja w celu zwiększenia rozmycia i następnie animacja w celu zmniejszenia rozmycia). Nie widzę, jak css3 może to ułatwić, ale znowu nie jestem w 100% na bieżąco z animacjami css3. – Naatan

+0

Widziałeś to? http://www.alexpeattie.com/projects/animate-textshadow/ –

Odpowiedz

3

musisz zapisać aktualny stan nieruchomości jesteś animowanie w nieruchomości elementu. W przeciwnym razie $ .animate przyjmie, że właściwość ma wartość 0 przy każdym uruchomieniu animacji. Animacja od 0 do 0 niczego nie animuje.

ten sposób będzie działać:

$.fx.step.textShadowBlur = function(fx) { 
    $(fx.elem) 
     .prop('textShadowBlur', fx.now) 
     .css({textShadow: '0 0 ' + Math.floor(fx.now) + 'px black'}); 
}; 

setInterval(function() { 
    $("#seconds").animate({textShadowBlur:20}, { 
     duration: 300, 
     complete: function() { 
      $("#seconds").animate({textShadowBlur:0}, {duration: 300}); 
     } 
    }); 
}, 1000); 

przykład roboczych: http://jsfiddle.net/ANs92/16/

Uwaga: Można uzyskać problemy podczas korzystania setInterval: http://bonsaiden.github.com/JavaScript-Garden/#other.timeouts -> Stertowanie połączeń z setInterval

setInterval ma nie czekać na zakończenie pierwszego połączenia, dopóki nie wywoła następnego połączenia, więc c alls może się kumulować.

+0

Doskonale, dzięki LeJared! SetInterval miał właśnie zademonstrować problem, nie używam go w produkcji. – Naatan

Powiązane problemy