読者です 読者をやめる 読者になる 読者になる

CSSでくるくる回るアニメーション

新人の真崎です。 ネタ探しが大変です… 今日も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だけでアニメーションを実装しました。