keyframesの中でeasingを設定する

CSSのkeyframesでイージングを個別に設定できることを知らなかったので、方法をメモしておきます。

サンプルコード

ボールがバウンドするようなアニメーションを実装してみます。
まずは対応前のコードです。

HTML

<div class="ball"></div>

CSS

.ball {
	position: relative;
	top: 100px;
	left: 100px;
	width: 40px;
	height: 40px;
	border-radius: 20px;
	background: #000;

	animation: ball 2s linear infinite;
}
@keyframes ball {
	0% {
		transform: translateY(-50px);
	}
	20% {
		transform: translateY(0px);
	}
	38% {
		transform: translateY(-32px);
	}
	56% {
		transform: translateY(0px);
	}
	72% {
		transform: translateY(-12px);
	}
	88% {
		transform: translateY(0px);
	}
	100% {
		transform: translateY(0px);
	}
}

animation-timing-functionで一定の速度で動くlinearを指定して、keyframesの割合で調整しています。
対応前のデモページ

keyframes内でanimation-timing-functionが指定できるので、個別に設定してみます。

CSS

.ball {
	position: relative;
	top: 100px;
	left: 100px;
	width: 40px;
	height: 40px;
	border-radius: 20px;
	background: #000;

	animation: ball 2s linear infinite;
}
@keyframes ball {
	0% {
		transform: translateY(-50px);
		animation-timing-function: ease-in;
	}
	20% {
		transform: translateY(0px);
		animation-timing-function: ease-out;
	}
	38% {
		transform: translateY(-32px);
		animation-timing-function: ease-in;
	}
	56% {
		transform: translateY(0px);
		animation-timing-function: ease-out;
	}
	72% {
		transform: translateY(-12px);
		animation-timing-function: ease-in;
	}
	88% {
		transform: translateY(0px);
	}
	100% {
		transform: translateY(0px);
	}
}

これで個別にイージングが設定され、最初のサンプルよりボールのバウンドのような動きになりました。
対応後のデモページ
 

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年12月
1234567
891011121314
15161718192021
22232425262728
293031