概要
animation-rangeは、CSS
でアニメーションの再生範囲をカスタマイズするためのプロパティです。これにより、アニメーションの開始位置や終了位置を細かく設定でき、特定の範囲だけを再生することが可能になります。例えば、アニメーション全体の一部分だけをループさせたい場合や、特定のタイミングでアニメーションを始めたいときに有効です。ただし、animation-rangeは実験的なプロパティであり、現時点でのブラウザサポートは限られています。
animation-rangeの基本
構文
animation-range: <start> <end>;
start
アニメーションの再生を開始する位置を指定します。値はパーセンテージ(%)や時間(秒: s、ミリ秒: ms)で指定できます。end
アニメーションの再生を終了する位置を指定します。こちらもパーセンテージや時間で指定可能です。
使用例
基本的な使用例 - アニメーションの再生範囲を設定
以下の例では、アニメーションの再生を50%の位置から開始し、80%の位置で終了します。
@keyframes slide {
0% {
transform: translateX(0);
}
50% {
transform: translateX(50px);
}
100% {
transform: translateX(100px);
}
}
.box {
width: 100px;
height: 100px;
background-color: #3498db;
animation: slide 3s infinite;
animation-range: 50% 80%;
}
この設定により、slideアニメーションは50%の位置から開始され、80%の位置で終了するため、指定した範囲内でのみアニメーションが再生されます。
特定の範囲でループするアニメーション
animation-rangeを使用することで、アニメーションの一部分だけをループさせることも可能です。
@keyframes bounce {
0% {
transform: translateY(0);
}
50% {
transform: translateY(-50px);
}
100% {
transform: translateY(0);
}
}
.ball {
width: 50px;
height: 50px;
background-color: #e74c3c;
border-radius: 50%;
animation: bounce 2s infinite;
animation-range: 20% 80%;
}
このコードでは、bounceアニメーションの20%から80%の範囲のみがループ再生されます。これにより、アニメーションの全体ではなく、中央の部分だけを繰り返す効果を実現しています。
注意点
- ブラウザのサポート状況
animation-rangeは実験的なプロパティであり、現時点では多くのモダンブラウザでサポートされていません。実際に使用する際は、ブラウザの互換性を確認することが重要です。 - 代替手段の検討
現在のブラウザ環境でanimation-rangeがサポートされていない場合、@keyframesを工夫するか、JavaScriptを使ってアニメーションの範囲を制御する方法があります。例えば、JavaScriptでアニメーションの再生開始・終了位置を制御することで、同様の効果を得られます。 - パフォーマンスの考慮
アニメーション範囲を指定することで、パフォーマンスが向上する場合もありますが、複雑なアニメーションや範囲指定が多いと逆にパフォーマンスに悪影響を与えることもあるため、適切な範囲設定が求められます。
animation-rangeの対応ブラウザ
- Chrome: 非サポート
- Firefox: 非サポート
- Safari: 非サポート
- Edge: 非サポート
- Opera: 非サポート 現時点では、ほとんどのブラウザでanimation-rangeがサポートされていないため、実際のプロジェクトでは使用を控えるべきです。仕様が標準化されるまで、他の方法でアニメーションをカスタマイズすることをおすすめします。
まとめ
animation-rangeは、アニメーションの再生範囲を自由にカスタマイズできるプロパティですが、現在のブラウザサポート状況を考えると実用性はまだ低いです。アニメーションの一部をループさせる、特定の範囲だけ再生するなど、使い方次第で高度な表現が可能ですが、現時点では他の手段で同様の効果を得ることが必要です。今後のCSS
の進化に注目しながら、最適なアニメーション表現を追求していきましょう。