2016-04-26 5 views
0

Ich möchte eine Art Zoom Out animierten Effekt mit GSAP erstellen. Was ich versuche, ist ein Element von der doppelten Größe auf die normale Größe zu skalieren und einen verschwindenden blur filter anzuwenden. Der Filter sollte bei blur(15px) beginnen und auf blur(0) gehen.Animieren Blur-Filter mit GSAP

Ich dachte, ich es auf diese Weise tun könnte:

var el = $('img'); 

TweenLite.set(el, { 
    'webkitFilter': 'blur(15px)', 
    scale: 2 
}); 
TweenLite.to(el, 0, { 
    autoAlpha: 1, 
    delay: 1.75, 
    ease: Power2.easeIn 
}); 
TweenLite.to(el, 2, { 
    'webkitFilter': 'blur(0px)', 
    scale: 1, 
    delay: 1.7, 
    ease: Power2.easeIn 
}); 

Was stattdessen passiert, ist, dass die blur(0) sofort angewendet wird.

Hier ist eine einfache pen zeigt das Problem. Was mache ich falsch?

Antwort

2

Sie können nicht wirklich den Unschärfe-Filter animieren, aber Sie können es einstellen. Sie können im Grunde eine Zeitleiste einrichten und den Verlauf der Zeitleiste als Methode verwenden, um den Filter über die Dauer der Zeitleiste zu setzen. unten ist Update-Funktion, die die Unschärfe über die Zeitleiste Dauer setzt.

onUpdate:function(tl){ 
    var tlp = (tl.progress()*40)>>0; 
    TweenMax.set('#blur img',{'-webkit-filter':'blur(' + tlp + 'px' + ')','filter':'blur(' + tlp + 'px' + ')'}); 

     var heading = $('#blur h3'); 
    heading.text('blur(' + tlp + 'px)'); 
    } 

hier ist eine große Demo gemacht von Marzullo http://codepen.io/jonathan/pen/ZWOmmg

+0

ich sehe. Aber du kannst nicht in GSAP, denn mit CSS3 kannst du es mit Keyframes animieren, oder? – Carlo

+0

ja, in CSS können Sie über Frames animieren: .blur { -webkit-animation: blur 3s unendlich; } @ - webkit-keyframes verwischen { 0%, 100% {-webkit-filter: blur (0px); } 50% {-Webkit-Filter: Unschärfe (10px); } } –

+1

Wie @Jack oben gepostet. Mit dem neuen 'GSAP 1.8.4' müssen Sie nicht 'onUpdate' verwenden und den CSS Filter direkt animieren. Bitte sehen Sie dieses Beispiel: http://codepen.io/jonathan/pen/NNoWjw –