
CSSでつくるアニメーシン第二弾です。今回はサッカーボールをCSSでアニメーションにしてみました。
伸びたり、飛んだりと色んなバリエーションで作成してみたのでメモします。
伸縮する
伸びたり縮んだりします。

.shinsyuku {
-webkit-animation: shinsyuku 0.8s linear 0s 1;
animation: shinsyuku 0.8s linear 0s 1;
}
@-webkit-keyframes shinsyuku {
0% { -webkit-transform: scale(1.0, 1.0) translate(0%, 0%); }
15% { -webkit-transform: scale(0.9, 0.9) translate(0%, 5%); }
30% { -webkit-transform: scale(1.3, 0.8) translate(0%, 10%); }
50% { -webkit-transform: scale(0.8, 1.3) translate(0%, -10%); }
70% { -webkit-transform: scale(1.1, 0.9) translate(0%, 5%); }
100% { -webkit-transform: scale(1.0, 1.0) translate(0%, 0%); }
}
@keyframes shinsyuku {
0% { transform: scale(1.0, 1.0) translate(0%, 0%); }
15% { transform: scale(0.9, 0.9) translate(0%, 5%); }
30% { transform: scale(1.3, 0.8) translate(0%, 10%); }
50% { transform: scale(0.8, 1.3) translate(0%, -10%); }
70% { transform: scale(1.1, 0.9) translate(0%, 5%); }
100% { transform: scale(1.0, 1.0) translate(0%, 0%); }
}
左右に揺れる
左や右に転がるようにゆれます。

.yureru {
-webkit-animation: yureru 2.5s linear 0s 1;
animation: yureru 2.5s linear 0s 1;
}
@-webkit-keyframes yureru {
0% { -webkit-transform: translate(0%, 0%); }
5% { -webkit-transform: translate(10%, 0%) rotate(10deg); }
25% { -webkit-transform: translate(20%, 0%) rotate(20deg); }
30% { -webkit-transform: translate(-10%, 0%) rotate(-10deg); }
35% { -webkit-transform: translate(-15%, 0%) rotate(-15deg); }
45% { -webkit-transform: translate(10%, 0%) rotate(10deg); }
50% { -webkit-transform: translate(15%, 0%) rotate(15deg); }
60% { -webkit-transform: translate(-5%, 0%) rotate(-5deg); }
65% { -webkit-transform: translate(-7%, 0%) rotate(-7deg); }
75% { -webkit-transform: translate(0%, 0%) rotate(0deg); }
100% { -webkit-transform: translate(0%, 0%) rotate(0deg); }
}
@keyframes yureru {
0% { transform: translate(0%, 0%); }
5% { transform: translate(10%, 0%) rotate(10deg); }
25% { transform: translate(20%, 0%) rotate(20deg); }
30% { transform: translate(-10%, 0%) rotate(-10deg); }
35% { transform: translate(-15%, 0%) rotate(-15deg); }
45% { transform: translate(10%, 0%) rotate(10deg); }
50% { transform: translate(15%, 0%) rotate(15deg); }
60% { transform: translate(-5%, 0%) rotate(-5deg); }
65% { transform: translate(-7%, 0%) rotate(-7deg); }
75% { transform: translate(0%, 0%) rotate(0deg); }
100% { transform: translate(0%, 0%) rotate(0deg); }
}
プルプルする
プルプルと動きます。

.purupuru {
-webkit-animation: purupuru 0.8s linear 0s 1;
animation: purupuru 0.8s linear 0s 1;
}
@-webkit-keyframes purupuru {
0% { -webkit-transform: scale(1.0, 1.0) translate(0%, 0%); }
20% { -webkit-transform: scale(1.0, 1.06) translate(-5%, -4%) skew(6deg, 0deg); }
50% { -webkit-transform: scale(1.0, 0.94) translate(5%, 4%) skew(-6deg, 0deg); }
65% { -webkit-transform: scale(1.0, 1.03) translate(2%, -2%) skew(-3deg, 0deg); }
80% { -webkit-transform: scale(1.0, 0.97) translate(-2%, 2%) skew(3deg, 0deg); }
100% { -webkit-transform: scale(1.0, 1.0) translate(0%, 0%); }
}
@keyframes purupuru {
0% { transform: scale(1.0, 1.0) translate(0%, 0%); }
20% { transform: scale(1.0, 1.06) translate(-5%, -4%) skew(6deg, 0deg); }
50% { transform: scale(1.0, 0.94) translate(5%, 4%) skew(-6deg, 0deg); }
65% { transform: scale(1.0, 1.03) translate(2%, -2%) skew(-3deg, 0deg); }
80% { transform: scale(1.0, 0.97) translate(-2%, 2%) skew(3deg, 0deg); }
100% { transform: scale(1.0, 1.0) translate(0%, 0%); }
}
バウンドする
上から落ちて跳ねる動きです。

.bound {
-webkit-animation: bound 1.1s linear 0s 1;
animation: bound 1.1s linear 0s 1;
}
@-webkit-keyframes bound {
0% { -webkit-transform: scale(0.8, 1.4) translate(0%, -100%); }
10% { -webkit-transform: scale(0.8, 1.4) translate(0%, -15%); }
20% { -webkit-transform: scale(1.4, 0.6) translate(0%, 30%); }
30% { -webkit-transform: scale(0.9, 1.1) translate(0%, -10%); }
40% { -webkit-transform: scale(0.95, 1.2) translate(0%, -30%); }
50% { -webkit-transform: scale(0.95, 1.2) translate(0%, -10%); }
60% { -webkit-transform: scale(1.1, 0.9) translate(0%, 5%); }
70% { -webkit-transform: scale(1.0, 1.0) translate(0%, 0%); }
100% { -webkit-transform: scale(1.0, 1.0) translate(0%, 0%); }
}
@keyframes bound {
0% { transform: scale(0.8, 1.4) translate(0%, -100%); }
10% { transform: scale(0.8, 1.4) translate(0%, -15%); }
20% { transform: scale(1.4, 0.6) translate(0%, 30%); }
30% { transform: scale(0.9, 1.1) translate(0%, -10%); }
40% { transform: scale(0.95, 1.2) translate(0%, -30%); }
50% { transform: scale(0.95, 1.2) translate(0%, -10%); }
60% { transform: scale(1.1, 0.9) translate(0%, 5%); }
70% { transform: scale(1.0, 1.0) translate(0%, 0%); }
100% { transform: scale(1.0, 1.0) translate(0%, 0%); }
}
ジャンプする
ジャンプします。

.jump {
-webkit-animation: jump 0.9s linear 0s 1;
animation: jump 0.9s linear 0s 1;
}
@-webkit-keyframes jump {
0% { -webkit-transform: scale(1.0, 1.0) translate(0%, 0%); }
10% { -webkit-transform: scale(1.1, 0.9) translate(0%, 5%); }
40% { -webkit-transform: scale(1.2, 0.8) translate(0%, 15%); }
50% { -webkit-transform: scale(1.0, 1.0) translate(0%, 0%); }
60% { -webkit-transform: scale(0.9, 1.2) translate(0%, -100%); }
75% { -webkit-transform: scale(0.9, 1.2) translate(0%, -20%); }
85% { -webkit-transform: scale(1.2, 0.8) translate(0%, 15%); }
100% { -webkit-transform: scale(1.0, 1.0) translate(0%, 0%); }
}
@keyframes jump {
0% { transform: scale(1.0, 1.0) translate(0%, 0%); }
10% { transform: scale(1.1, 0.9) translate(0%, 5%); }
40% { transform: scale(1.2, 0.8) translate(0%, 15%); }
50% { transform: scale(1.0, 1.0) translate(0%, 0%); }
60% { transform: scale(0.9, 1.2) translate(0%, -100%); }
75% { transform: scale(0.9, 1.2) translate(0%, -20%); }
85% { transform: scale(1.2, 0.8) translate(0%, 15%); }
100% { transform: scale(1.0, 1.0) translate(0%, 0%); }
}
伸びて戻る
グーッと伸びて戻ります。

.back {
-webkit-animation: back 1.0s linear 0s 1;
animation: back 1.0s linear 0s 1;
}
@-webkit-keyframes back {
0% { -webkit-transform: scale(1.0, 1.0) translate(0%, 0%); }
40% { -webkit-transform: scale(0.95, 1.2) translate(0%, -10%); }
50% { -webkit-transform: scale(1.1, 0.9) translate(0%, 5%); }
60% { -webkit-transform: scale(0.95, 1.05) translate(0%, -3%); }
70% { -webkit-transform: scale(1.05, 0.95) translate(0%, 3%); }
80% { -webkit-transform: scale(1.0, 1.0) translate(0%, 0%); }
100% { -webkit-transform: scale(1.0, 1.0) translate(0%, 0%); }
}
@keyframes back {
0% { transform: scale(1.0, 1.0) translate(0%, 0%); }
40% { transform: scale(0.95, 1.2) translate(0%, -10%); }
50% { transform: scale(1.1, 0.9) translate(0%, 5%); }
60% { transform: scale(0.95, 1.05) translate(0%, -3%); }
70% { transform: scale(1.05, 0.95) translate(0%, 3%); }
80% { transform: scale(1.0, 1.0) translate(0%, 0%); }
100% { transform: scale(1.0, 1.0) translate(0%, 0%); }
}
デモ用意しました。