2016-08-08 5 views
0

animate.cssSimulieren bounceInDown Lockerung Wirkung von animate.css

Ich bin ein Spielautomat zu schreiben, und ich habe Code ähnlich wie diese: JSFiddle

$('#test').css("margin-top", 7400px); 
$('#test').animate(
    {"margin-top": "0px"}, 
    {'duration' : 3000, 'easing' : $.bez([0,0,0.9,1.1])} 
); 

ich mit dem Ergebnis nicht zufrieden bin. Am Ende scheint es einfach nicht glatt zu sein. Gibt es eine Bibliothek, die den Easing-Effekt hat wie der von animate.css? Der BounceInDown-Effekt von animate.css bewegt sich nur von außerhalb des Frames, was ich nicht kontrollieren kann (denke ich?). Die Elemente im Spiel, die ich schreibe, müssen sich von einem Punkt zum anderen bewegen. Ich habe versucht den easeOut-Effekt, der mit jQuery kommt, aber ich bin auch nicht zufrieden damit.

+0

Warum verwenden Sie dann nicht animate.css? – ScientiaEtVeritas

+0

Ich muss das Element von einem Punkt zum anderen bewegen. Der bounceInDown-Effekt von animate.css bewegt sich nur von außerhalb des Frames zum Ort. –

Antwort

2

Wenn Sie wollen, dass es glatt Bounce, schlage ich vor mehrere Keyframes zu verwenden (da Ihre aktuelle Animation von nur keyfrome und eine Bezier-Funktion am Ende begrenzt ist), aber leider jQuery animieren() nicht unterstützt mehrere Keyframes. Also würde ich empfehlen, CSS dafür zu verwenden. Oder prüfen Sie einige zusätzliche Bibliotheken wie jQuery.Keyframes.

Nur Keyframes als Schritte vorstellen oder Zustände zwischen dem Start Keyframe und Ende Keyframe:

enter image description here

Wenn Sie die Animation von animate.css nur einen Blick haben, was sie in ihrer Animation tun (Ich habe Präfixe entfernt, um diese Kodierung zu verkürzen.

@keyframes bounceInDown { 
    from, 60%, 75%, 90%, to { 
    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); 
    } 

    0% { 
    opacity: 0; 
    transform: translate3d(0, -3000px, 0); 
    } 

    60% { 
    opacity: 1; 
    transform: translate3d(0, 25px, 0); 
    } 

    75% { 
    transform: translate3d(0, -10px, 0); 
    } 

    90% { 
    transform: translate3d(0, 5px, 0); 
    } 

    to { 
    transform: none; 
    } 
} 

Lassen Sie sich einfach davon inspirieren und vielleicht ändern Sie es zu Ihren Gunsten.

+0

Okay, ich werde mich darum kümmern. danke –

+0

Ich verstehe, wie Keyframe funktioniert, aber was bedeutet kubische Bezier von oben? --- von, 60%, 75%, 90%, zu {Animations-Zeit-Funktion: kubisch-Bezier (0,215, 0,610, 0,355, 1,000); } --- das ist der Teil den ich nicht verstehe –

+0

Eigentlich ist das nur eine Abkürzung für '' von { Animation-Timing-Funktion: kubisch-Bezier (0.215, 0.610, 0.355, 1.000); } 60% { Animation-Timing-Funktion: kubisch-Bezier (0.215, 0.610, 0.355, 1.000); } '' ... und so weiter - und für Keyframe-Animationen gilt die Timing-Funktion zwischen Keyframes und nicht über die gesamte Animation hinweg. Und wenn Sie nicht wissen, wie eine kubische Bezier-Funktion funktioniert, ist es ähnlich einer normalen Bezier-Funktion, aber während Bezier-Funktionen sind Quadradfunktionen, die kubische ist kubisch. Vielleicht werfen Sie einen Blick auf http://www.hongkiat.com/blog/css-cubic-bezier/. – ScientiaEtVeritas