2010-11-04 17 views
11

Czy istnieje framework javascript, który używa CSS3 Transitions dla efektów takich jak zmiana krycia lub elementów ruchomych, ale wróci do używania javascript setInterval/setTimeout, jeśli nie jest obsługiwany?CSS3 przejścia z JavaScript Fallback

Odpowiedz

3

Sprawdź moduł przejściowy YUI 3, to właśnie to robi.

+1

Proste przejście YUI3: YUI(). Użycie ("węzeł", "przejście", funkcja (Y) {Y.one ("# mynode"). Przejście (nieprzezroczystość: 0);}); – PottyBert

+0

lol to proste?powinieneś sprawdzić prosty jquery ... ponieważ to nie jest proste w porównaniu do Jquery'ego. –

+0

tak, to proste. Zawiera również piaskownicę YUI, która zapobiega zewnętrznym zakłóceniom twojego kodu – PottyBert

2

Można przyjrzeć przy użyciu http://www.modernizr.com/

+0

że wygląda dobrze wykrywać wsparcie dla przemian. Zauważyłem też, że mootools ma: http://mootools.net/docs/core/Fx/Fx.Tween i http://mootools.net/forge/p/fx_tween_css3 – benmmurphy

+0

Modernizor to najbardziej efektywny sposób sprawdzania funkcji w danym momencie a przy 3kb jest naprawdę lekki (w porównaniu z Mootools). – Jeepstone

+0

LOL oczywiście Modernizr jest mniejszy niż MooTools, jest to zestaw wykrywaczy, a nie framework do manipulacji domem, abstrakcja klasy i skrypty serveride – rgb

0

Niestety żadna z tych alternatyw nie wydaje się pozwalać na korzystanie z wygłupów, takich jak odbicie.

Moja próba użycia funkcji animate-enhanced przesunęła element o cal, a następnie po prostu go usunąłem. Naprawdę chciałbym zachować odbicie, a nie tylko sześcienne lub liniowe rozluźnienie.

1

Jeden z moich kolegów napisał mikro biblioteki oferują ograniczony JS przełączenie na Transitions: http://blogs.msdn.com/b/eternalcoding/archive/2011/12/06/css3-transitions.aspx

TRANSITIONSHELPER.computeCubicBezierCurveInterpolation = function (t, x1, y1, x2, y2) { 
    // Extract X (which is equal to time here) 
    var f0 = 1 - 3 * x2 + 3 * x1; 
    var f1 = 3 * x2 - 6 * x1; 
    var f2 = 3 * x1; 

    var refinedT = t; 
    for (var i = 0; i < 5; i++) { 
     var refinedT2 = refinedT * refinedT; 
     var refinedT3 = refinedT2 * refinedT; 

     var x = f0 * refinedT3 + f1 * refinedT2 + f2 * refinedT; 
     var slope = 1.0/(3.0 * f0 * refinedT2 + 2.0 * f1 * refinedT + f2); 
     refinedT -= (x - t) * slope; 
     refinedT = Math.min(1, Math.max(0, refinedT)); 
    } 

    // Resolve cubic bezier for the given x 
    return 3 * Math.pow(1 - refinedT, 2) * refinedT * y1 + 
      3 * (1 - refinedT) * Math.pow(refinedT, 2) * y2 + 
      Math.pow(refinedT, 3); 
}; 

Może to wystarczy lub dobre podstawy, aby osiągnąć to, co szukasz?

Bye,

David

Powiązane problemy