2013-05-12 25 views
8

Oglądanie animacji CSS w celu zastąpienia animowanych GIF-ów przy ładowaniu kół.Animacje CSS zmieniają szybkość klatek

Jest podstawowym przykładem http://jsfiddle.net/kFmY8/448/

#me { 
    -webkit-animation: rotation 2s infinite linear; 
} 

@-webkit-keyframes rotation { 
    from {-webkit-transform: rotate(0deg);} 
    to {-webkit-transform: rotate(360deg);} 
} 

chcę zmieniać szybkość klatek tak, że są tylko 12 klatek na cykl. W ten sposób płynność animacji byłaby bardziej dopasowana do animowanego GIF-a, który zastępuje.

Czy to można zrobić?

Odpowiedz

0

Zmień animację na zanikającą, a następnie użyj atrybutu obrotu transformacji CSS, aby naprawić każdy blok w 30-stopniowych odstępach. Zastosuj animację do każdej z nich, ale opóźnioną o .1s.

.wheel { 
    position:absolute; display:none; 
} 
.wheel li { 
    width:4px; height:11px; position:absolute; -webkit-transform-origin:3px 21px; background:#222; border-radius:4px; list-style:none; display:block; opacity:.25; box-shadow:0 0 1px rgba(255,255,255,0.9); 
} 
.wheel li:nth-child(1) { -webkit-transform:rotate(30deg); -webkit-animation:fadeshift 1.2s infinite linear 0s; } 
.wheel li:nth-child(2) { -webkit-transform:rotate(60deg); -webkit-animation:fadeshift 1.2s infinite linear 0.1s; } 
.wheel li:nth-child(3) { -webkit-transform:rotate(90deg); -webkit-animation:fadeshift 1.2s infinite linear 0.2s; } 
.wheel li:nth-child(4) { -webkit-transform:rotate(120deg); -webkit-animation:fadeshift 1.2s infinite linear 0.3s; } 
.wheel li:nth-child(5) { -webkit-transform:rotate(150deg); -webkit-animation:fadeshift 1.2s infinite linear 0.4s; } 
.wheel li:nth-child(6) { -webkit-transform:rotate(180deg); -webkit-animation:fadeshift 1.2s infinite linear 0.5s; } 
.wheel li:nth-child(7) { -webkit-transform:rotate(210deg); -webkit-animation:fadeshift 1.2s infinite linear 0.6s; } 
.wheel li:nth-child(8) { -webkit-transform:rotate(240deg); -webkit-animation:fadeshift 1.2s infinite linear 0.7s; } 
.wheel li:nth-child(9) { -webkit-transform:rotate(270deg); -webkit-animation:fadeshift 1.2s infinite linear 0.8s; } 
.wheel li:nth-child(10) { -webkit-transform:rotate(300deg); -webkit-animation:fadeshift 1.2s infinite linear 0.9s; } 
.wheel li:nth-child(11) { -webkit-transform:rotate(330deg); -webkit-animation:fadeshift 1.2s infinite linear 1s; } 
.wheel li:nth-child(12) { -webkit-transform:rotate(360deg); -webkit-animation:fadeshift 1.2s infinite linear 1.1s; } 
@-webkit-keyframes fadeshift { 
    from { opacity:1; } to { opacity:.1; } 
} 

<div class="appload wheel"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></div> 

QED.

18

Chcesz użyć funkcji steps() dla funkcji wygładzania zamiast linear.

http://jsfiddle.net/trolleymusic/uTd3x/

Zmieniłem swoją wartość animacji z:

-webkit-animation: rotation 2s infinite linear; 

do:

-webkit-animation: rotation 2s infinite steps(12); 

Jeżeli liczba wewnątrz funkcji steps to ile klatek będzie podzielić animacji w.

Bit odniesienia: http://css-tricks.com/snippets/css/keyframe-animation-syntax/ - około połowy istnieje sekcja o nazwie Steps()

+0

nie być 6fps zamiast 12, jak 12 stopni jest podzielona na 2 sekundy? –

+0

Tak. Oryginalny post chciał 12 klatek na cykl, a cykl miał 2 sekundy. – Trolleymusic

Powiązane problemy