Chciałbym naśladować elastyczna funkcja łagodzenia w CSS3. CSS3 nie obsługuje tego natywnie, więc wymyśliłem własne klatki kluczowe i wygląda na to w porządku, ale nie do końca naturalne.
NIE chcę rozwiązania, które wymaga dodatkowych skryptów JavaScript. Wszystkie pozostałe posty na StackOverflow mają zaakceptowane rozwiązania JS.
Jaki jest najlepszy sposób na wdrożenie elastycznego łagodzenia w czystym CSS3?
Oto moja dotychczasowa praca, jeśli to pomaga komuś ...
https://jsfiddle.net/407rhhnL/1/
Animuję czerwone, zielone i niebieskie prostokątne pryzmaty izometryczne. Symulowałem wygładzanie ręczne ręcznie, kodując na stałe następujące klatki kluczowe CSS3:
@include keyframes(popup) {
0% {
}
20% {
transform: translateY(-50px);
}
40% {
transform: translateY(20px);
}
60% {
transform: translateY(-6px);
}
90% {
transform: translateY(0px);
}
100% {
transform: translateY(0px);
}
}
Nie szukam sugestii na temat poprawiania tego kodu, chciałbym wiedzieć, czy istnieje lepsze rozwiązanie niż kodowanie na stałe.
Odpowiedzi:
17 dla odpowiedzi nr 1W zależności od ograniczeń przeglądarki (i jeśli używasz CSS3, powinieneś być w porządku, niezależnie od tego), możesz faktycznie zastosować łagodne przejścia za pomocą cubic-bezier () słowo kluczowe zamiast.
Przykładowa animacja wyglądałaby następująco:
transition-timing-function: cubic-bezier(0.64, 0.57, 0.67, 1.53);
transition-duration: 2.9s;
Wpis na blogu Lei Verou całkiem dobrze to obejmuje.
5 dla odpowiedzi nr 2
Wiele wspaniałych przejść sześciennych beziera dostępnych tutaj:
Coś takiego może być tym, czego chcesz:
transition: all 600ms cubic-bezier(0.68, -0.55, 0.265, 1.55);