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

animation-delay

animation-delay

animation-delayサンプル

例1

アニメ開始の遅延時間指定

5s後にboxのbeforが上へスライドして説明文を表示
アニメは1回のみ。
もう一回見る場合は再読み込み。

説明

失敗例

アニメ開始の遅延時間指定

animation-fill-modeが無い(defo:normal)失敗例。アニメで指定のスタイルを実行後に適用されない

例2

1:webコンテンツ制作
2:webプログラミング
3:画像加工
4:情報技術研究
5:その他雑用
WEBコンテンツ企画制作運営サポート、遊び心でwebクリエイト、おはようからおやすみまでweb世界をみつめる
原森情報技術研究所

右:遅延で同じアニメを動かすサンプル。

説明

animation-delay

[animation-delay]でアニメ開始の遅延時間を変更する仕様を使ったアイデアなどを実験してみました。

サンプルの内容【例1 タイトルからの説明文表示演出】

タイトルがスライドして説明が表示されるページ表示時のアニメ演出の例。
※スライドアニメは1回で終了する設定にしたので、animation-fill-modeで特に終了状態を(開始も含めてbothに)指定する必要があります。

失敗例の方は 1回で終了するので、 animation-fill-mode: both; 等を指定しないとこうなるという例になってます。
アニメ終了時(100%)ではbeforeは上にスライド済になり、afterのカウント文字も見えなくなってるはずですが、animation-fill-mode: both (又はforwards) の指定がないので、アニメしてない状態 = cssのアニメ以外の設定状態 → beforeがスライドする前で、afterの文言 4 が上に乗っている状態、になってます。
※成功例と失敗例の「カウント」の仕様については後述してます。

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

例1へ

遅延を使ったカウントダウンについて

ここではカウントダウンアニメのオリジナル案(文字の折り返しで作ったもの)を使っています。
前回(前ページ)ではコマ漫画的に画像を使いましたので、人と違うことをやるっぽい 原森IT研 としては、今回はcssのみでカウントダウンするけど、画像ではなく文字列で、さらに不要なdivやspan等を増殖させない、というネタになっています。

このサンプルでは、タグは div 1個のみになっていて、そこには アニメ開始の遅延時間指定 という文字を表示しています。
最初に上に乗っかってる赤いBOXは div:before で作ってます。これが5sの遅延の後に、1sで上にずれる感じになってます。

カウントダウンの数値の方は div:after で作ってます。縦に動くアニメ (topの変化) で表示させたものです。
上下の違いについては、動作テスト用のbothがあるかないかと言う点と、後は上は数値文字「4 3 2 1 0」(全角数字とスペース)、でテストしています。

簡単にアイデアを紹介しておきますと、数字文字列が画像の時と同様に縦に長いBOXになっていて、そこに文字を普通に配置すると、文字が全部表示されてしまうので、文字間にスペースを入れ、ボックスの横幅を短めにして自動的に折り返しをさせて縦長の状態にして配置しています。それを上に移動させている、というものです。
要するに、前ページのカウントダウン画像をテキスト配置で用意しただけ、というものです。

赤色BOXに表示している文字列「animation-delay」カウントダウンしている数値文字「4 3 2 1 0」は以下のようにdivにdatasetで指定しています。

<div id="ani_test_01" data-c="animation-delay" data-t="4 3 2 1 0">アニメ開始の遅延時間指定</div>

「カウントダウンアニメ」などを検索すると javascript や jQuery で、などの他に、CSSだけで、という記事も発見できるかと思います。
ただ、CSSのみで作る場合、div や span や li などが大増殖するような、正しいHTML文法からみるとカッコ悪い感じの仕様になってしまう場合が多いかと思いますので、HTML構文にこだわりのある人は演出などで使う文字等はdataset仕様を使う方法をアイデアの一つとして持っておくとシンプルなソースで実現できる方法を思いつく可能性もあるので、ご参考までに、WEB tips に詳細記事 dataset(カスタムdata属性)をCSSで活用するアイデア3 [カウントダウンテキスト]を掲載しています。

サンプルの内容【例2 遅延を使って同じアニメで広告アニメ】

同じアニメを遅延を使って、キャッチ文の段落divを順に動かしている広告アニメのようなサンプルです。
サンプルなので、文字が読めなくても気にせず、雰囲気重視で動かしてます。
途中、インパクトを出すために1つだけ別のアニメを挟んでいるけれど、アニメの長さが同じなので、遅延させて順に表示させてもずれることはない形で作れます。

※遅延させて順にアニメを表示する、という作り方の場合、全体のアニメ時間を決め、その中で、遅延させるパーツの数に合わせて、キーフレームの数値を調節する必要があります。(そうしないと重なってしまう)

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

例2へ

ちなみに、このページのアニメ設定やキーフレームは、原森webの下記のツールで作成してます。
Animation ソース作成ツール】【keyframes ソース作成ツール

animationのプロパティ

animation-name CLICK
animation-duration CLICK
animation-timing-function CLICK
animation-delay CLICK
アニメ開始の待ち時間を指定。1s 等。
初期値=0(すぐに開始)。負の値の場合、過去にさかのぼって開始されていたアニメのと中からはじまる。
animation-iteration-count CLICK
animation-direction CLICK
animation-fill-mode CLICK
アニメの実行前や実行後に適用するスタイルを指定。

normal…アニメで指定されたスタイルは、アニメの実行前や実行後には適用されない。

forwards…アニメの最後に適用された状態を維持する。通常は100%やtoのスタイルになる。※animation-directionが alternate、animation-iteration-count が偶数の場合は0%やfromのスタイルとなる。

backwards…0%やfrom キーフレームで定義された値を即座に適用し、animation-delay プロパティで指定した時間の間、その状態を維持する。

both…forwards と backwards の両方の規定に従う。なのでアニメの設定が実行前と実行後の両方に適用される。

animation-play-state CLICK

ページトップへ

top > css3研究 > 
animation-delay

例1のアニメ設定

■ 5s後に上に動くアニメ
【id=ani_test_01のbefore】

animation:ta_1 1s linear 5s 1;
animation-fill-mode:both;

■ カウントダウンアニメ
【id=ani_test_01のafter】

animation:ta_1cd 5s step-end 1s 1;
animation-fill-mode:both;

■ 5s後に上に動くアニメ
【id=ani_test_01bのbefore】

animation:ta_1 1s linear 5s 1;
※animation-fill-mode指定なし

■ カウントダウンアニメ
【id=ani_test_01bのafter】

animation:ta_1cd 5s step-end 1s 1;
※animation-fill-mode指定なし

例1のキーフレーム

【上に動く】
@keyframes ta_1{
0%{top:0px;}
100%{top:-40px;}
}

【縦移動カウントダウン】
@keyframes ta_1cd{
0%{top:0px;}
20%{top:-35px;}
40%{top:-70px;}
60%{top:-105px;}
80%{top:-140px;}
100%{top:-175px;}
}

例2のアニメ設定

【id=ani_test_02】の子要素である各divのclassで アニメ指定の共通するものを設定。
なので、ショートハンド記述ではなく、 各プロパティ中、共通のものを一つのclassに指定してます
[.ctbp]
animation-name:ta_2b;
animation-duration:10.5s;
animation-timing-function:ease;
animation-iteration-count:infinite;

一つだけ、長い文章を動かす演出の、違うアニメ設定をしたもの(こちらはショートハンド記述)
[.ctbpl]
animation:ta_2c 10.5s linear 7.5s infinite;
遅延設定部分のクラス
[.ct1]
animation-delay:0s;
[.ct2]
animation-delay:1.5s;
[.ct3]
animation-delay:3s;
[.ct4]
animation-delay:4.5s;
[.ct5]
animation-delay:6s;
[.ct7]
animation-delay:9s;

例2のキーフレーム

左に移動して途中で一旦拡大して左に抜ける感じ
@keyframes ta_2b{
0%{left:150px;transform:scale(1);}
5%{left:5px;transform:scale(1);}
8%{left:5px;transform:scale(1);}
10%{left:200px;transform:scale(2);}
12%,100%{left:-300px;transform:scale(2);}
}

速い動きで左に移動。
@keyframes ta_2c{
0%{left:150px;}
15%,100%{left:-650px;}
}

Positioning

top

right

bottom

left

offset-before offset-end offset-after offset-start

visibility

z-index

zoom

Multi-column layout

columns column-count column-gap column-rule column-rule-color column-rule-width column-width

Flexbox

flex flex-grow flex-shrink flex-basis

order

Transforms

perspective

perspective-origin

transform

transform-origin

SVG

fill fill-opacity

flood-color

lighting-color

marker-offset

stop-color stop-opacity

stroke stroke-dasharray stroke-dashoffset stroke-miterlimit stroke-opacity stroke-width

viewport-fill viewport-fill-opacity

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