概要
CSS
のanimation-timeline
プロパティは、アニメーションの実行タイミングを制御するために使用されるプロパティです。このプロパティを使うと、アニメーションを特定のタイムラインに同期させたり、複数のアニメーションを連携させて実行することが可能になります。animation-timeline
は、ウェブデザインやインタラクティブなコンテンツでタイミングを精密に制御したい場合に非常に有用です。
animation-timelineの基本的な使い方
animation-timeline
プロパティを使用することで、アニメーションが特定のタイムラインに従って実行されます。通常、アニメーションは即座に開始しますが、このプロパティを設定することで、異なるタイミングやトリガーに従ってアニメーションを開始させることができます。
.element {
animation: fade-in 2s forwards;
animation-timeline: scroll-timeline; /* カスタムタイムラインにアニメーションを同期 */
}
この例では、.element
のアニメーションがscroll-timeline
というカスタムタイムラインに従って実行されます。
animation-timelineの値
animation-timeline
には以下の値があります。これらの値がアニメーションの実行タイミングにどのように影響するかを説明します。
none
デフォルトの設定で、アニメーションはすぐに実行されます。animation-timeline
が設定されていない場合と同じです。
.element {
animation: slide-in 3s infinite;
animation-timeline: none;
}
タイムライン名
カスタムタイムラインの名前を指定します。この名前に基づき、アニメーションがそのタイムラインに従って実行されます。タイムラインはJavaScriptやCSS
で定義できます。
.element {
animation: move 5s infinite;
animation-timeline: custom-timeline;
}
使用例
スクロールタイムラインを使ったアニメーション制御
以下の例では、scroll-timeline
を使ってスクロールに連動したアニメーションを実現しています。ユーザーがスクロールするたびに、要素のアニメーションが進行します。
<div class="scroll-animation"></div>
<style>
@keyframes fade-in {
0% {
opacity: 0;
transform: translateY(20px);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
.scroll-animation {
width: 100px;
height: 100px;
background-color: coral;
animation: fade-in 2s forwards;
animation-timeline: scroll-timeline;
/* scroll-timelineの定義はJavaScriptなどで行う必要があります */
}
</style>
この例では、スクロール動作に応じてアニメーションが再生されます。タイムラインの設定により、ユーザーインタラクションとアニメーションをシームレスに同期できます。
JavaScriptでのカスタムタイムラインの設定
以下の例では、animation-timeline
を使ってJavaScriptでカスタムタイムラインを作成し、それをCSS
アニメーションにリンクさせています。
<div class="animated-box"></div>
<style>
@keyframes move-right {
0% {
transform: translateX(0);
}
100% {
transform: translateX(300px);
}
}
.animated-box {
width: 50px;
height: 50px;
background-color: lightblue;
animation: move-right 3s forwards;
animation-timeline: custom-timeline;
}
</style>
<script>
document.timeline = new ScrollTimeline({
source: document.scrollingElement,
orientation: 'block',
scrollOffsets: [`CSS`.percent(0), `CSS`.percent(100)],
});
</script>
この例では、ScrollTimeline
を使用してスクロールに基づくタイムラインを定義し、それをアニメーションにリンクしています。
注意点
animation-timeline
は、タイムラインの設定や制御に依存するため、他のCSS
プロパティやJavaScriptとの連携が不可欠です。タイムラインの設定を理解し、適切に同期する必要があります。- 現在
animation-timeline
は一部のブラウザでのみサポートされています。使用する際はブラウザの互換性を確認し、必要に応じてフォールバック処理を実装しましょう。 - タイムラインの制御が複雑になると、アニメーションのデバッグも困難になる可能性があります。設計時にはシンプルな構造を心がけ、適切にタイムラインを管理することが重要です。
まとめ
animation-timeline
プロパティは、CSS
アニメーションの実行タイミングを高度にカスタマイズするための強力なツールです。これを活用することで、ユーザーのインタラクションや特定のイベントに同期したアニメーションを作成でき、より魅力的でインタラクティブなウェブデザインが実現します。タイムラインの設定や制御を理解し、効果的にアニメーションを活用しましょう。