2013-01-22 14 views
16

Jestem zaznajomiony z funkcją animacji jQuery i przeszedłem także różne jQuery UI easing functions. Niestety, żaden z nich nie ma takiego samego efektu animacji, którego szukam, więc czy możliwe jest stworzenie własnych funkcji rozluźniających?Jak budować niestandardowe animacje łagodzenia/odskoku jQuery?

Animację, którą próbuję, można zobaczyć na stronie Apple Mac webopage z dynamicznie ładowanym widgetem produktów u góry. Początkowe elementy wydają się wsuwać od góry, a po lądowaniu dają efekt odskoku. Czy można odtworzyć ten styl łagodzenia za pomocą niestandardowego kodu jQuery? A może zbudować własne łatwe funkcje?

Załączam ekran z tym, o czym mówię i mam nadzieję, że ktoś może zaoferować rozwiązanie. Z góry dzięki :)

Mac animated menu

highlighted graphics

+2

Wystarczy popatrzeć na to - http://stackoverflow.com/questions/5916058/jquery-easing-function-variables-comprehension powinno pomóc zrozumieć, jak zbudować lub dodaj funkcję łagodzenia do funkcji wygładzania. http://forrst.com/posts/How_to_create_custom_jQuery_easing_functions-OKb –

+0

Każdy, kto ogląda animację javascript na stronie, znajduje się pod adresem http://images.apple.com/global/scripts/productbrowser.js, a animacja jest dodawana w linii addVendorEventListener ("animationStart", m); dla każdego z elementów w siatce produktu. –

+1

Fakt, że podana przykładowa strona nie działa tak samo w IE (poniżej w wersji 10) sugeruje, że jest to właściwie (głównie) animacja CSS. Tylko kilka elementów jest w rzeczywistości animowanych przy użyciu JavaScript/JQuery, takich jak pojedyncze DIV zawierające kategorie produktów wyświetlane w widoku, a to, że dna na dole również wydaje się być animowane przy użyciu JS. Spójrz na przykłady [Animate.css] (http://daneden.me/animate/), aby sprawdzić, czy któreś z nich pasuje do twoich potrzeb, czy też możesz sam''rollować na podstawie animacji/transformacji CSS opisane w nim techniki. – TildalWave

Odpowiedz

23

zobaczyć moje demo here

Ideą wykonuje 2 kolejne animacje za pomocą easeOutCubic efekt:

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

To jest dobre rozwiązanie dzięki jQuery dzięki. Ciesz się nagrodą! Otwieram kolejne pytanie w poszukiwaniu rozwiązania za pomocą klatek kluczowych CSS3. – Jake

Powiązane problemy