2013-01-22 7 views
16

Ich bin vertraut mit der jQuery Animate-Funktion und ich habe auch die verschiedenen jQuery UI easing functions durchlaufen. Leider erscheint keiner von ihnen als derselbe Animationseffekt, den ich suche. Ist es also möglich, eigene Easing-Funktionen zu erstellen?Wie erstellt man benutzerdefinierte jQuery Easing/Bounce-Animationen?

Die Animation, die ich versuche, kann auf der Apple Mac webopage mit dem dynamisch geladenen Produkte Widget an der Spitze gesehen werden. Die anfänglichen Gegenstände scheinen von oben nach innen zu gleiten und geben dann nach der Landung einen Rückpralleffekt. Ist es möglich, diesen Beschleunigungsstil mit benutzerdefiniertem jQuery-Code neu zu erstellen? Oder vielleicht bauen Sie Ihre eigenen 3rd-Party-Easy-Funktionen?

Ich habe einen Bildschirm von dem, worüber ich spreche, eingefügt und hoffentlich kann jemand eine Lösung anbieten. Vielen Dank im Voraus :)

Mac animated menu

highlighted graphics

+2

Werfen Sie einen Blick auf diese - http://stackoverflow.com/questions/5916058/jquery-easing-function-variables-comprehension Sollte es Ihnen helfen zu verstehen, wie zu bauen oder fügen Sie den Beschleunigungsfunktionen einen Beschleunigungstyp hinzu. http://forrst.com/posts/How_to_create_custom_jQuery_easing_functions-OKb –

+0

Jeder, der dies in der Animation Javascript auf der Seite untersucht, befindet sich unter http://images.apple.com/global/scripts/productbrowser.js und die Animation wird in Zeile addVendorEventListener hinzugefügt ("AnimationStart", m); für jedes Element im Produktraster. –

+1

Die Tatsache, dass die Beispielseite, die Sie angegeben haben, im IE nicht funktioniert (unten ver. 10) deutet darauf hin, dass es tatsächlich (meistens) CSS-animiert ist. Nur ein paar Elemente werden tatsächlich mithilfe von JavaScript/JQuery animiert, z. B. einzelne DIVs, die Produktkategorien in den Blickpunkt rücken, und das Caret unten scheint ebenfalls mit JS animiert zu sein. Sehen Sie sich die [Animate.css examples] (http://daneden.me/animate/) an, um zu sehen, ob einige davon Ihren Anforderungen entsprechen oder ob Sie sich selbst auf der Basis von CSS-Animation/-Transformation "_eigen" können darin beschriebene Techniken. – TildalWave

Antwort

23

Meine demo here

Die Hauptidee ist die Durchführung 2 kontinuierliche Animationen mit easeOutCubic Effekt:

HTML:

<div class='left'></div> 
<div class='center'></div> 
<div class='right'></div> 

JS:

$('div.left').animate({top: 410, left: 10}, 300, "easeOutCubic", function(){ 
    $('div.left').animate({top: 400, left: 20}, 300, "easeOutCubic"); 
}); 

$('div.center').animate({top: 420}, 300, "easeOutCubic", function(){ 
    $('div.center').animate({top: 400}, 300, "easeOutCubic"); 
}); 

$('div.right').animate({top: 410, right: 10}, 300, "easeOutCubic", function(){ 
    $('div.right').animate({top: 400, right: 20}, 300, "easeOutCubic"); 
}); 
+0

Das ist eine gute Lösung mit jQuery danke. Genieße das Kopfgeld! Ich werde eine andere Frage auf der Suche nach einer Lösung mit CSS3-Keyframes öffnen. – Jake

Verwandte Themen