8192.jp

【CSS】transitionで使えるtiming-functionまとめ+cubic-bezierの設定例も紹介

Web制作 2022/07/18 2022/07/18

transitionとかanimationの実行中に「どのように値を変化させるか」を指定できる〇〇-timing-functionですが、指定できる値が多い上に一部理解しにくいものもあるので、一覧をサンプル付きでまとめました。

後半にはcubic-bezierの設定例も載せておきますんで、コピペで使ってくださいな。

目次

    基本形

    まずは一番よく使うであろう基本形の挙動を見てみます。

    See the Pen transition-timing-function_1 by Leo_8192 (@Leo_8192) on CodePen.

    ease
    (少しだけ)ゆっくり始まり、ゆっくり終わる。初期値
    ease-in
    最初だけゆっくり。
    ease-out
    最後だけゆっくり。
    ease-in-out
    ゆっくり始まり、ゆっくり終わる。
    easeと似ているが、あちらと違い始まりと終わりの速度が同じ。
    linear
    速度が常に一定。

    凝ったことをしないのであれば、この中から選んでおけば間違いありません。

    steps( n, <jumpterm>)

    steps(n,<jumpterm>)を使えば、ストップモーションアニメのような効果を付けることが可能です。ただ、停止位置の挙動が少し理解しにくいかも。

    See the Pen transition-timing-function_2 by Leo_8192 (@Leo_8192) on CodePen.

    steps(n, jump-start)
    最初のトランジションを含めて、n個の停止位置を持つ。
    nが4だと変化するタイミングは「0%, 25%, 50%, 75%」になる。
    steps(n, jump-end)
    最後のトランジションを含めて、n個の停止位置を持つ。
    nが4だと変化するタイミングは「25%, 50%, 75%, 100%」になる。
    steps(n, jump-none)
    最初と最後のトランジションを含めて、n個の停止位置を持つ。
    nが4だと変化するタイミングは「0%, 33.33%, 66.66%, 100%」になる。
    steps(n, jump-both)
    最初と最後のトランジションを含めないn個の停止位置を持つ。
    nが4だと変化するタイミングは「0%, 20%, 40%, 60%, 80%, 100%」になる。

    これ使ったことないんですが、もし使うとしたらjump-nonejump-bothが分かりやすいかなぁ…

    cubic-bezier(p1,p2,p3,p4)

    3次ベジェ曲線を使った小難しい指定方法です。これ説明するの難しいんで、どういう仕組なのか気になる人は視覚的に覚えることが出来るジェネレーターツールを使いましょう。多分、数値を適当にいじるだけでは理解できません。

    とりあえずすぐに使えそうな設定値を量産しといたので、気に入ったものがあればコピペして使ってみてね!

    ease-in-out系

    See the Pen transition-timing-function_4 by Leo_8192 (@Leo_8192) on CodePen.

    ease-in系,ease-out系

    See the Pen transition-timing-function_3 by Leo_8192 (@Leo_8192) on CodePen.

    特殊系

    See the Pen transition-timing-function_5 by Leo_8192 (@Leo_8192) on CodePen.

    最後のは使い道がなさそうですが、ease系は普通に指定するより滑らかに動かすことが出来るので、痒いところに手が届きます。

    最後に

    今回cubic-bezierの設定例は全て0.25刻みというキリのいい数値で作っているので、こだわりたい人は数値を微調整したほうがいいかも。

    あと、duration(変化に掛かる時間)によって受けるイメージが変わる、という事もよくあるので、そこらへんの調整もいい感じに頑張りましょう(適当)。