transition-timing-functionの値を変えることにより、アニメーションの変化のタイミングを変えることができますが、実際に見てみたいので見れるようにしました。

サンプルコード

html


	<div id="ease">ease</div>
	<div id="linear">linear</div>
	<div id="ease-in">ease-in</div>
	<div id="ease-out">ease-out</div>
	<div id="ease-in-out">ease-in-out</div>
	<div id="step-start">step-start</div>
	<div id="step-end">step-end</div>
	<div id="steps-5-start">steps(5,start)</div>
	<div id="steps-5-end">steps(5,end)</div>

css


ease {
	width:			14%;
	height:			30px;
	padding:		8px 0 0 4px;
	margin-bottom:		10px;
	background-color:	#1f0;
	-webkit-transition:	all 2s ease;
	transition:		all 2s ease;
}
ease:hover {
	width:			100%;
}

実際の動作では、transitionの「ease」の部分を色々変えています。緑色のボックスの横幅を14%から100%に変えるアニメーションです。

実際の動作

それぞれ緑色のボックスにマウスを重ねると動きます。

ease

ease

easeはデフォルト値で、最初と最後が滑らかです。

linear

linear

最初から最後まで一定です。

ease-in

ease-in

最初がゆっくりです。

ease-out

ease-out

最後がゆっくりです。

ease-in-out

ease-in-out

最初と最後がゆっくりです。

step-start

step-start

終了地点に一気にジャンプします。

step-end

step-end

開始地点に居続け、最後に終了地点にジャンプします。

steps(5,start)

steps(5,start)

5ステップ変化しますが、開始地点で最初のステップが発生します。

steps(5,end)

steps(5,end)

5ステップ変化しますが、終了地点で最後のステップが発生します。

おまけ

最後に同時に動かします。マウスをボックスに乗せてください。

ease
linear
ease-in
ease-out
ease-in-out
step-start
step-end
steps(5,start)
steps(5,end)

同時だと違いがよくわかりますね。

cubic-bezier()を使用すればオリジナルのタイミングを作ることができますが、これについては、また別の機会に書きたいと思います。