新人のMです。 ネタ探しが大変です… 今日もCSSについて書こうと思います。 CSSアニメーションが簡単にアニメーションを表現できそうで興味があるので、試しに簡単なインジケータをCSSの@keyframesを使って作ってみたいと思います。
@keyframes
ある時点での状態を指定したキーフレームを複数用意することでアニメーションを表現します。
@keyframes 名前 { 0% {} 100% { transform: rotate(360deg); } }
くるくる回るインジケータ
<html> <head> <style type="text/css"> @-webkit-keyframes anime { 0% {} 100% { -webkit-transform: rotate(360deg); } } .indicator { display: inline-block; position: relative; background: pink; margin-left: 50px; width: 20px; height: 100px; -webkit-border-radius: 5px; -webkit-animation: anime 3s infinite linear; } .indicator:before, .indicator:after{ content: ""; width: 20px; height: 100px; position: absolute; background: pink; opacity: 0.3; -webkit-border-radius: 5px; -webkit-transform: rotate(-60deg); } .indicator:after { opacity: 0.7; -webkit-transform: rotate(60deg); } </style> </head> <body> <div class="indicator"></div> </body> </html>
単調にオブジェクトが1回転するアニメーションを定義し、それを3秒で1回行うように設定しました。残像を表現したくて、バーの前後に薄いバーを追従させるようにしてみたのですが、同じスピードで回してるからか、残像ぽくないですね…(色をピンクにしたら、花が回ってるようでかわいいので、これはこれでありですが) ※Chrome以外で試すときは、ベンダープリフィックス(-webkit-)を各ブラウザのものに書き換えてください。
まとめ
CSS3の@keyframesを使うことで、CSSだけでアニメーションを実装しました。