アニメーション部品
css3のみでアニメ部品作成
サンプル1 ローディング
1. ローディングdiv図形回転
div1個で図形作成。animationで回転。最初の2個はlinearで回転。後の2個はstep 8
2. ローディングdiv図形回転2
0.8s step 4コマ。右二つは0.4s 円が4つでstep 4。
3. ローディングdiv図形回転3
keyframeでbox-shadowを設定した例。後ろ2個つはopacity変化のアニメと組み合わせてみた
サンプル2 文字アニメ
4. 文字にアニメ演出
上:line-height、text-shadow、letter-spacing。
下:text-indent、letter-spacing。
5. 文字にアニメ演出2
上:color:rgba()とtext-shadowで文字をかすませる演出。
下:color:rgba()とtext-shadowで文字を光らせる演出。
6. 文字にアニメ演出3
上:scale(1)とscale(2)で文字拡大縮小アニメ。
下:perspectiveとtranslateZで文字拡大縮小アニメ。
サンプル3 spanタグ増殖
7. アニメ1個/spanごとに遅延
spanが8個。アニメは8s、0-10-20%で文字色が変化。:nth-of-type()で各spanの開始を1s遅らせる
8. アニメ1個/spanごとに遅延2
spanが8個。アニメは8s、0-10-20%で背景色が変化。偶数個目のspanはrotateZ(45deg)
9. アニメ1個/spanごとに遅延3
spanが8個。アニメはboxの背景色が白から黒へ steps(8,end) で変化
サンプル4 遅延・時間
10. ローディングアニメ4
div1個+before+box-shadowのkeyframe1個でローディング。※IE10は疑似要素で作っている斜めの影アニメが表示されない。
11. ローディングのコマ表示
10のアニメの0%,25%,50%,75%,100%をdivに指定した例。※このスタイルで各キーフレームを作りdivをbeforeよりも0.5s早めにanimationで動作させている。ie10は疑似要素(before等)のanimationが未サポート
14. ローディングアニメ4(改)
疑似要素のanimationが使えないieのために、divを2個使用。
サンプル5
13. 文字にアニメ演出4
line-heightで文字の位置を動かし、text-shadowで影
14. 文字にアニメ演出5
text-indent、letter-spacing、text-shadow等でアニメ
15. 文字にアニメ演出6
transformでアニメいろいろ
サンプル5 円の回転表示
16. 円の表示アニメ
親box、円、アニメ演出用BOXの3つのdivを使用
18. 円の表示アニメ2
divを4つも使ってしまった…
18. 円の表示アニメの種明かし
背景グレーから別の色に…3つのbefore&afterでアニメ
アニメーション部品の考察
spanタグやdivタグを大量に並べたHTMLソースを書いて、cssでアニメさせたローディングイメージを演出するぐらいなら、gifアニメ1個で簡単にできるのでは?などと言われがちな、今日この頃。
そもそもローディングをさせるのは、ページ内の大量の画像や逐次ページの記事をスクロールさせた時に読み込ませるなどのために、「ちょっとこれ見て待っててね」という演出で使うものかと思いますので、ローディングイメージが重い場合は本末転倒なことになるかもしれません。
cssでローディングイメージを作る場合、それっぽい図形を描いて回転させる方法や、box-shadow 指定自体をアニメで表現する方法などが考えられますのでとりあえず作ってみました。(→サンプル1参照)
span・div タグを大量配置するのは HTML5 ではあまり推奨されないのではないかと思いますが、javascript で innerHTML変更して HTMLタグソースを書き換えたりして、一時的に画面表示するだけなら HTMLソース上に最初は存在しない状態にすることもできますので、javascriptでソース作成するためのひな形と割り切れば、リストやキャプション、ラベルタグ等で言い訳的に意味づけする必要もないかと思ったりもしてます。(→ サンプル3はわざと span・div 増殖状態でアニメの遅延連携動作の実験として作ってみたものです)
また、このページでの、IE10の befor after の影アニメがうまく動かない問題については、現在少し忙しいので、調査保留中です…。
主なcssやテクニック
- data-…
- 独自データ属性(又は、カスタムデータ属性)。すべての HTML 要素に自分で設定した属性名と値を指定することができる仕様。
- content:attr(属性名)
- 属性名の値を表示
- position
- ボックスに背景画像の時は absolute を指定してtop,leftなどで位置指定
- top
- top位置
- left
- left位置
- animation
- アニメを指定するcssプロパティ
- @keyframes
- アニメのキーフレーム指定
- transform
- 要素の変形を指定するcssプロパティ
ページトップへ