CSSバウンスイージングエフェクト(オーバーシュート付き)

cubic-bezierのオーバーシュート値を使用してバウンスエフェクトを作成します。アニメーションがターゲットを超えてからスナップバックし、遊び心のあるエネルギッシュな感触を生み出します。

Bounce Effects

詳細な説明

cubic-bezierでバウンスを作成

バウンスまたはオーバーシュートエフェクトは、y2の値が1を超える(またはy1が0未満になる)ときに発生します。アニメーションは一時的にエンドポイントを超えてから落ち着きます。

transition-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1.275);

これは古典的なeaseOutBackカーブです。キーはy2 = 1.275で、アニメーションが全体の変化量の約27.5%だけターゲットを超えてから戻ります。

オーバーシュートの仕組み

標準的なcubic-bezierでは、両方のy値は0から1の間にあります。y2が1を超えると、アニメーションの終盤で進行関数が100%を超える値を出力します。translateX(0)からtranslateX(100px)へのトランジションでは、要素が一瞬約translateX(127.5px)まで移動してからtranslateX(100px)に落ち着きます。

y2値によるオーバーシュート量

y2値 オーバーシュート 特性
1.1 約10% 控えめなバウンス
1.275 約27.5% 適度なバウンス
1.5 約50% 顕著なバウンス
1.7 約70% 誇張されたバウンス

コード例

.notification {
  transform: scale(0);
  transition: transform 500ms cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
.notification.show {
  transform: scale(1);
}

要素が0から1にスケールし、一瞬scale(1)を超えてから落ち着き、満足感のある「ポップ」エフェクトを作り出します。

注意点

オーバーシュートするプロパティがレイアウトに影響する場合(widthheightなど)、レイアウトの問題が発生する可能性があります。リフローを避けるためにtransform(scaletranslate)や非レイアウトプロパティ(opacitybox-shadow)を優先してください。

ユースケース

バウンス/オーバーシュートイージングは注目を集める要素に使用します。通知バッジ、トーストメッセージ、成功インジケーター、遊び心とエネルギーを感じさせたいオンボーディングツールチップなどに適しています。

試してみる — CSS Easing Function Editor

フルツールを開く