原森情報技術研究所 WEBコンテンツ企画・制作・運営・サポート / 兵庫県 神戸市 明石市 /

animation-direction

animation-direction

animation-directionサンプル

例1

A
B
1
2
3
4
5

アニメの順方向
A=開始位置(0%) → B=終了位置(100%)

説明

例2

animation-delay

グレー背景のanimation-delayは、overflow:hidden
:befor(normal)…緑背景のbox
:after(reverse)…青背景のbox
例2の白背景枠内にマウスホバー(背景が緑になります)で、overflowをvisibleにして、
アニメ動作が確認できます。

説明

例3

ボーダーアニメ

ホバーでreverse

説明

animation-direction

[animation-direction]は、アニメーション1回(keyframe 0%→100%の変化)のアニメ動作の方向を指定できる。順方向が0%→100%、逆方向が100%→0%を指す。

例1の内容【animation-directionサンプル】

2sでアニメ繰り返し(infinite)
A アニメ開始状態の位置。translate(50px)… 0%
B アニメ終了状態の位置。translate(200px)… 100%
1 animation-direction指定なし
2 normal; …animation-direction指定なしと同じ
3 alternate; …反転再生(順→逆→順→…)
4 reverse; …ずっと反転(逆→逆→逆→…)
5 alternate-reverse; …反転から開始(逆→順→逆→…)

アニメの順方向
A=[0% translate(50px)] → B=[100% translate(200px)]
4(reverse)、5(alternate-reverse)はOpera/Safariが未サポート(2014.06時点)。
※opera v30 は動いた。(2015.07 確認)

例1のアニメ設定、キーフレーム設定を表示

例1へ

例2の内容【逆方向アニメを作るのが面倒な時はreverse】

未対応だったoperaも、ガンダマーには ザク50 っぽいイメージ(意味不明)の opera30 で reverseやalternate-reverseが動いていたのでほぼwindows PC のユーザ対象webなら使ってもいいのではないかと思われます。macのための safari が対応しているのかどうかは不明ですが…。
追記 2018.0213 : 先日見てみると、Opera50 になってました。

サンプルのアニメ動作は「左から右へ、大きくまわって回転し、そこで止まる(見えなくなるのは角度が90degだから)。回転の中心は面から奥側に100pxの位置」となってます。
青背景の方は逆方向に動作。アニメが0%から50%で回転し、50%から100%まではそこで停止する指定なので、逆方向の場合、最初は停止したまま50%まで動かない、ということになり、二つのboxが重ならないようになってます。

このサンプルのテクニックは、50%,100%のような記述でアニメ設定すると、「50%まで変化し、以降は100%までそのスタイルを維持したまま=変化が止まる=アニメが停止」のようなキーフレームの作り方です。 reverseは反対の動作なので、最初は変化しない状態で停止した感じになります。 すなわち、順逆アニメを二つ、同じ位置で同時に動かすけれど、重ならないようにできる(開始遅延の指定が必要ない)という点です。 (重なるようにしたいのなら、0-100%で変化させるのを順逆同時に動かす)

ついでに、単純な左右スライドではないので、文字が微妙に変形するので、なんとなく色の具合と合わさって、立体っぽく浮き出たような気がしますが…原森の目が悪いからそう見えるだけかもしれません。

例2のアニメ設定、キーフレーム設定を表示

例2へ

例3の内容【マウスホバーでアニメがreverse】

面倒なアニメを作った時に逆再生的なアニメはreverseで、のもう一つの例です。
こちらはbefore afterを使ってボックスのボーダー部分を赤く塗ってるように見えるアニメを作りました。この面倒なボーダー塗りアニメをマウスホバーで反転させてます。

このアニメは「CSS実験のマウスホバーアニメボタン」の【div1個 + css (transition or animation) + :before , :after でいろいろ作ってみたサンプル】の一つで、タブメニュー3つ目のボーダーアニメ5でも掲載しています。そのページではマウスホバーでアニメが動くタイプになっています。
作り方についてのアイデアは、
「:before」の方が、ボーダー上を伸び縮みしながら左上、左下、右下、右上、左上へと移動するアニメになっていて、
「:after」の方は、上下左右のボーダーカラーを、「:before」の動作に合わせてなんかうまいことそう見えるように変更している、
それらを調整して組み合わせた、というような、めんどくさいものになっています。

面倒な作り方の理由は、html文法的に意味のない、余計なspanやdivを増殖させずに、div1個とその before , after のみで作るルールで作っているからです。
※ HTML構文として意味のない演出用の span を使いまくるのがokの場合、それぞれのボーダー用のspanを用意することで簡単に作れます。

マウスホバーでアニメが逆再生…は確かに逆に動いてはいますが、ホバー前の状態からすぐ反転、には見えない時も時々あるような気もしますが、多分ブラウザさんの計算誤差なのだろうなどと勝手に思ったりしてます…。

例3のアニメ設定、キーフレーム設定を表示

例3へ

animationのプロパティ

animation-name CLICK
animation-duration CLICK
animation-timing-function CLICK
animation-delay CLICK
アニメ開始の待ち時間を指定。1s 等。
初期値=0(すぐに開始)。負の値の場合、過去にさかのぼって開始されていたアニメのと中からはじまる。
animation-iteration-count CLICK
animation-direction CLICK
アニメの繰り返し時に、逆方向か最初の状態から再び開始するか、の繰り返しの方法を指定。

normal…順方向のアニメーションのみ(デフォルト)

alternate…初回 順方向、次に逆方向、以降、順、逆…と実行。(順 逆 順 逆 …)

reverse…逆方向のアニメーションのみ

normal…順方向のアニメーションのみ(デフォルト)

alternate-reverse…初回 逆方向、次に順方向、以降、逆、順…と実行。(逆 順 逆 順 …)

animation-fill-mode CLICK
animation-play-state CLICK

ページトップへ

top > css3研究 > 
animation-direction

例1のアニメ設定

1【.t1】
animation:ta_1 2s linear infinite;
2【.t2】
animation:ta_1 2s linear infinite normal;
3【.t3】
animation:ta_1 2s linear infinite alternate;
4【.t4】
animation:ta_1 2s linear infinite reverse;
5【.t5】
animation:ta_1 2s linear infinite alternate-reverse;

例1のキーフレーム

@keyframes ta_1{
0%{transform:translate(50px);}
100%{transform:translate(200px);}
}

例2のアニメ設定

【.defbox_l:before】
animation:ta_2 6s linear infinite normal;
【.defbox_l:after】
animation:ta_2 6s linear infinite reverse;

例2のキーフレーム

@keyframes ta_2{
0%{transform:matrix3d( 0, 0, 1, 0, 0, 1, 0, 0, -1, 0, 0, 0, -100, 0, 0, 1);}
25%{transform:matrix3d( 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 100, 1);}
50%,100%{transform:matrix3d( 0, 0, -1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 100, 0, 0, 1);}
}

※rotateとtranslateを、matrix3dで記述しています。

例3のアニメ設定

【.defbox_p:before】
animation:hm_bcr 4s steps(5,end) infinite;
【.defbox_p:after】
animation:hm_bmv 4s linear infinite;
【.defbox_p:hover:before】
animation:hm_bcr 4s steps(5,end) infinite reverse;
【.defbox_p:hover:after】
animation:hm_bmv 4s linear infinite reverse;

例3のキーフレーム

@keyframes hm_bcr{
0%,23%{
border-left-color:rgba(255, 0, 0, 0); border-bottom-color:rgba(255, 0, 0, 0); border-right-color:rgba(255, 0, 0, 0);}
24%,48%{
border-left-color:rgba(255, 0, 0, 1); border-bottom-color:rgba(255, 0, 0, 0); border-right-color:rgba(255, 0, 0, 0);}
49%,73%{
border-left-color:rgba(255, 0, 0, 1); border-bottom-color:rgba(255, 0, 0, 1); border-right-color:rgba(255, 0, 0, 0);}
74%,99%{
border-left-color:rgba(255, 0, 0, 1); border-bottom-color:rgba(255, 0, 0, 1); border-right-color:rgba(255, 0, 0, 1);}
100%{
border-left-color:rgba(255, 0, 0, 0); border-bottom-color:rgba(255, 0, 0, 0); border-right-color:rgba(255, 0, 0, 0);}
}
@keyframes hm_bmv{
0%{top:-5px; left:-5px; width:5px; height:5px;}
24%{top:-5px; left:-5px; width:5px; height:100px;}
25%{top:100px; left:-5px; width:5px; height:5px;}
49%{top:100px; left:-5px; width:150px; height:5px;}
50%{top:100px; left:150px; width:5px; height:5px;}
74%{top:-5px; left:150px; width:5px; height:110px;}
75%{top:-5px; left:150px; width:5px; height:5px;}
95%,99%{top:-5px; left:-5px; width:160px; height:5px;}
100%{top:-5px; left:-5px; width:5px; height:5px;}
}

Flexbox

flex flex-grow flex-shrink flex-basis

order

Transforms

perspective

perspective-origin

transform

transform-origin

コピーライト

Copyright © Haramori Laboratory of Information Technology 2015 All rights reserved.

update 2015.07.15
カテゴリMENU
お問い合せ