css3の@keyframesでポップアップなアニメーション

ぽよーんとなるアニメーションをcss3で作ってみました。

もぶcss3アニメーションだいすきーヽ('ω')ノ わー

css3 @keyframesとは

cssでキーフレームのアニメーションが指定できるものです。そのままですね。

詳しくはこちらのリファレンスで!

http://www.htmq.com/css3/animation-name.shtml

 

DEMOのソースを見ながら解説をばー

HTML

<div class="main_area">
    <a href="#" class="btn">pop up!</a>
</div>
<div class="pop_box">
    //~pop up window
</div>

ボタンとポップアップのdivがあるだけ。

CSS

-webkit-animation-duration: 1.4s;
-webkit-animation-timing-function: ease-in;
-webkit-animation-iteration-count: 1;
-webkit-transform-origin: bottom center;

このプロパティがcss3アニメーションの基本の指定になります。

アニメの秒数や、動きの基準地点などを設定できます。

 

@-webkit-keyframes animation_on {
  20% {-webkit-transform: scale(1.2);}
  30% {-webkit-transform: scale(1);}
  40% {-webkit-transform: scale(1.06);}
  0%, 50%, 60%, 80%, 100% {-webkit-transform: scale(1);}
}

で、こちらはキーフレームの指定。-moz-は省いて記載しています。

「animation_on」という名前のアニメ―ションにしました。

全体のアニメの長さを100%として、そいつを%で区切ることでtransform(変形)のタイミングと内容を決めます。

今回はぽよーんとscaleだけのアニメですね。

 

.on{
  display: block;
  -webkit-animation-name: animation_on;
  -moz-animation-name: animation_on;
}

 "on" は「どのキーフレームアニメーションを付加するか」を指定しています。

さっきの「animation_on」を指定しているので、『onってクラスが付いたらanimation_onをさせるよ~』てことです。

ポイントはここ!

このanimation-nameの指定なんですが、通常はCSSの最初にでてきたdurationあたりに含めていることが多いのです。

click したときに "on" を付けて「表示 / 非表示」だけ切り替えればええやん(^ω^)

と思うところ。実は…

それだとFire Foxでは動きません!

 

なんでanimation-nameを同時に書くと動かないの?

ページを読み込んだときにアニメーションが走ってしまいます。

なので、正確には動かないとは少し違っていますが…

 

display:noneにしてても対象の要素が存在していると、アニメーションしてしまうようですね。

ボタンをクリックする度にぽよーんができなくなってしまうということです。

今回のようにモーダルだとページ表示してボタン押すまでに1.4秒なんて過ぎてしまうので、アニメーションがないみたいに見えます。

 

ChromeSafariの場合はこの点、display:noneにしている要素は「存在しない」ものとして見てくれるらしく、一緒に指定していてもその度にアニメーションします。

というわけで

都度、アニメーションをつけるためには”on”と一緒にアニメーションをしてやると良いでしょう。

逆にこっちにdurationとかもまとめちゃってもいいんですけどね。

「アニメーションする要素」と「アニメーションの内容」が分かれてるほうが見やすいのでもぶはこうします。

 

以上、ぽよーんcssでした(((・ω・)))

 

Top