続いて、先ほどのtransitionと同じように、背景色と同時に幅も変更するようにします。ボタンにマウスオーバしたBの状態に「width:200px;」を加え、キーフレームの設定にも幅の指定を追加します。
/*ボタンに対して何もしていない状態(A)*/
a{
display:inline-block;
color:#fff;
width:100px;
padding:10px;
text-align:center;
background:blue;
text-decoration:none;
}
/*ボタンに対してマウスオーバした状態(B)*/
a:hover{
/*アニメーション指定*/
animation:btn 2s ease-out 0s 1 normal;
background:red;
width:200px;
}
@keyframes btn {
0% {background:blue; width:100px;}
100% {background:red; width:200px;}
}
また、このアニメーションに対応するブラウザやそのバージョンを広げるため、animationプロパティを使って設定しているものは、ベンダプレフィックスを付けてコピーします。
/*ボタンに対して何もしていない状態(A)*/
a{
display:inline-block;
color:#fff;
width:100px;
padding:10px;
text-align:center;
background:blue;
text-decoration:none;
}
/*ボタンに対してマウスオーバした状態(B)*/
a:hover{
/*アニメーション指定*/
-moz-animation:btn 2s ease-out 0s 1 normal;
-webkit-animation:btn 2s ease-out 0s 1 normal;
-o-animation:btn 2s ease-out 0s 1 normal;
animation:btn 2s ease-out 0s 1 normal;
background:red;
width:200px;
}
@-moz-keyframes btn {
0% {background:blue; width:100px;}
100% {background:red; width:200px;}
}
@-webkit-keyframes btn {
0% {background:blue; width:100px;}
100% {background:red; width:200px;}
}
@-o-keyframes btn {
0% {background:blue; width:100px;}
100% {background:red; width:200px;}
}
@keyframes btn {
0% {background:blue; width:100px;}
100% {background:red; width:200px;}
}
これで設定完了です。
transitionとanimationとで、同じアニメーション内容に設定したものを用意しましたので、以下からサンプルページをご覧ください。
これらで1点異なるのは、マウスをボタンから離したときの動作です。transitionではBの状態からAの状態へと反転しながら戻るのに対し、animationではパッと元のAの状態に切り替わります(animationでも設定を重ねれば反転して戻すこともできますが、あくまで基本的な設定での比較です)。
アニメーションとしては、transitionの方がリッチに感じられていいように思いますが、場合によっては、animationの動作の方が小気味良いと評価するケースもあるでしょう。
先ほど、設定できるアニメーションの複雑さ、設定の容易さで比較しましたが、小さなことながら、こうした違いもユーザー体験に関わってきますので、どちらで設定するかの判断に加えたいものです。
内田 順一(Chime of Shigan)
アートディレクター。広告、販促物の企画・制作を中心に「コサインスタジオ」名義でフリーランスとして長らく活動後、2007年に株式会社Chime of Shiganを立ち上げ。企業や商品のブランド構築を支援しながら、パンフやポスターなどの紙媒体から、ムービー、Webサイト制作まで幅広くサポート。
Copyright © ITmedia, Inc. All Rights Reserved.