以前、画像にちょっとした動きをつけて目を引きたかったので、CSSで簡単な動きをつけて見た事があったので、メモしておきます。
まずは@keyframesでどのような動きを付けるかを指定。
今回はこちらのサイトを参考にtransformを使ったシンプルな動きです。
実際に使った動きの他に、いくつかサンプルで動きを試してみました。
基本的なhtmlは下記の通り、単純です。
<p class="sample">動きのサンプル</p>
●横の動き
横の動き
@keyframes horizontal { 0% { transform:translateX( -10px); } 100% { transform:translateX( 10px); } } .sample01 { animation: horizontal 1s linear infinite alternate; }
●縦の動き
縦の動き
@keyframes vertical { 0% { transform:translateY(-10px); } 100% { transform:translateY( 10px); } } .sample{ animation: vertical 1.5s ease infinite alternate; }
●ななめの動き
ななめの動き
@keyframes diagonal { 0% { transform:translate( -10px , -10px); } 100% { transform:translate( 10px , 10px); } } .sample{ animation: diagonal 2s ease-in-out infinite alternate; }
●四角?な動き
四角?な動き
@keyframes square { 0% { transform:translate( -10px , -10px); } 25% { transform:translate( 10px , -10px); } 50% { transform:translate( 10px , 10px); } 75% { transform:translate( -10px , 10px); } 100% { transform:translate( -10px , -10px); } } .sample{ animation: square 1.5s ease-in-out infinite ; }
@keyframesを始点(0%)と終点(100%)だけでなく、途中にもいくつかポイントを追加して、カクカクした動きにしてみた。
CSS:animationから「animation」(交互に反転再生 …要は往復するみたいなモンですね)を外して、ぐるぐるまわる感じにしています。
●不規則な動き
実際に使用した動きです。(…よりは、ちょっと動きを大げさにしましたが)
不規則な動き
<p class="sample"><span>不規則な動き</span></p>
@keyframes yuratate { 0% { transform:translateX( -7px); } 100% { transform:translateX( 7px); } } @keyframes yurayoko { 0% { transform:translateY( -3px); } 100% { transform:translateY( 3px); } } .sample{ animation: yuratate 1.7s ease-in-out infinite alternate; } .sample span { display:block; animation: yurayoko 1s ease-in-out infinite alternate; }
animationは1つの要素に複数指定できないようだったので、二重にしてそれぞれに縦と横の動きを。
再生時間をずらして、ちょっと不規則な感じにしてみました。
animationは時間やイージングの設定ができます。
下記のように設定しています。
animation:[キーフレーム名],[再生時間],[イージング],[再生回数],[反転再生];
■イージング
ease:初期値。アニメーションの開始と終了を滑らかにする。(初期値)
linear:一定の速度で再生。
ease-in:ゆっくり始まる。
ease-out:ゆっくり終わる。
ease-in-out:ゆっくり始まり、ゆっくり終わる。
cubic-bezier(数値, 数値, 数値, 数値):3次ベジェ曲線のP1とP2を (x1, y1, x2, y2) で指定。…上級者向けだと思おう。
■再生回数
infinite:無限。
数字:数字分再生する。
■反転再生
normal:通常の再生。(初期値)
alternate:奇数回では普通方向の再生、偶数回では逆方向の再生となって、アニメーションサイクルを繰り返す。
今回は上下の動きだけで動きをつけていますが、回転させたり斜めにしたり、もっと応用が利きそうです。
それらはいずれまた…