transition-timing-functionプロパティは、変化のタイミング・進行割合を指定する際に使用します。
変化が継続している際に、その変化速度の割合を変更して調整することで動きを滑らかにすることができます。
これは一般的にイージング機能と呼ばれるもので、
グラフィックソフトで曲線を描く際などに利用されるベジェ曲線と呼ばれる数学的な関数を使います。
transition-timing-functionプロパティでは、変化の進行割合を3次ベジェ曲線で指定します。
3次ベジェ曲線は、以下の図のような4つのコントロールポイント(P0、P1、P2、P3)で定義されます。
P0が変化の開始ポイント、P3が変化の完了ポイントで、
横軸が変化継続時間がどこまで経過したのか、縦軸が変化がどの程度実行されたのかを表します。
仮にP0→P3までが直線なら、変化は一定の割合で進行することになります。
P0(開始ポイント)とP3(完了ポイント)は固定なので、
transition-timing-functionプロパティでは、P1とP2の値を指定することで変化の進行割合を調整します。
transition-timing-functionプロパティの値には、
ease、linear、ease-in、ease-out、ease-in-outのいずれかのキーワード、または、
cubic-bezier関数(3次ベジェ関数)でP1とP2それぞれのXとYの値を指定します。
cubic-bezier関数で指定できる値は0~1の範囲内で、その範囲外の場合には無効となります。
div.sample {
background-color:blue; width:200px; height:50px;
transition-property: background-color, width, height;
transition-duration:1s;
transition-timing-function:ease-in-out;
}
div.sample:hover {
background-color:aqua; width:300px; height:100px;
}
<html>
<head>
<link rel=”stylesheet” href=”sample.css” type=”text/css”>
</head>
<body>
<div class=”sample”>transitionの使用例</div>
</body>
</html>
div.prefix_sample {
background-color:blue; width:200px; height:50px;
-moz-transition-property: background-color, width, height;
-webkit-transition-property: background-color, width, height;
-o-transition-property: background-color, width, height;
-ms-transition-property: background-color, width, height;
-moz-transition-duration:1s;
-webkit-transition-duration:1s;
-o-transition-duration:1s;
-ms-transition-duration:1s;
-moz-transition-timing-function:ease-in-out;
-webkit-transition-timing-function:ease-in-out;
-o-transition-timing-function:ease-in-out;
-ms-transition-timing-function:ease-in-out;
}
div.prefix_sample:hover {
background-color:aqua; width:300px; height:100px;
}
<html>
<head>
<link rel=”stylesheet” href=”sample.css” type=”text/css”>
</head>
<body>
<div class=”prefix_sample”>transitionの使用例</div>
</body>
</html>