CSS Transition完全ガイド!基本から応用まで徹底解説

CSSを使ってアニメーションを作成する方法が知りたい
TransitionとAnimationの違いが知りたい
Transitionの使い方について知りたい

「CSS Transition」という名前は知っているけど、使い方はわからない方もいらっしゃるでしょう。

Transitionの使い方を覚えることで、自身のサイトにさまざまなアニメーションを追加できます。

この記事ではCSS Transitionの基本から応用技術、サンプルコードまで具体的に解説します。

  • Transitionの基礎知識
  • Transitionの使い方
  • Transitionの具体的なサンプルコード
目次

Transitionプロパティとは

CSSのTransitionを使えば、ある状態から別の状態への変化を滑らかに表現できます。

たとえば、ボタンにマウスを乗せたとき、色がゆっくりと変わる効果を加えられます。

これにより、ユーザーにとって視覚的に魅力的で理解しやすいインターフェースを作ることが可能です。

実際の例として、Appleのウェブサイトでは、製品画像にマウスを乗せると、画像が大きくなり、同時に他の要素が透明になる効果を確認できます。

この滑らかなアニメーションは、Transitionプロパティを使って作られています。

この機能を活用することで、あなたのウェブサイトもよりユーザーフレンドリーなものになるでしょう。

TransitionとAnimationの違い

Transitionはある状態から別の状態への変化を滑らかにするのに対し、Animationは連続したアニメーションを作成するためのものです。

Transitionは主に単純な効果に適しており、Animationはより複雑な動きを表現する際に力を発揮します。

たとえば、ボタンにマウスを乗せたときにゆっくりと色が変わる効果はTransitionで、ぐるぐる回るローディングアイコンはAnimationを使って作ります。

実例として、Facebookのローディング画面では小さな円がくるくると回っているのが見られます。これはAnimationを使って作られています。

この違いを理解することで、あなたはより効果的にウェブサイトをデザインできるようになります。

どちらを使うべきかを判断し、ウェブページに活用してみてください。

Transitionの使い方

Transitionを使って、より洗練されたデザインを実現するための応用的な使い方を解説します。

具体的なコード例とともに、複数プロパティへの適用やホバー時の演出、Transformプロパティを用いたアニメーションについて学びましょう。

  • 複数プロパティへのTransitionの適用
  • Hover時の色や透明度の変化
  • Transformプロパティを使ったアニメーション

複数プロパティへのTransitionの適用

Transitionは一つの要素に対して複数のプロパティに適用することが可能です。

例えば、widthとheight、background-colorを同時に変化させることで、よりダイナミックなアニメーションを実現できます。

以下のコードは、HTMLとCSSを含んでおり、要素がマウスオーバー時に色とサイズの変化をアニメーションさせる例です。

See the Pen
Untitled
by 田村大斗 (@ntxuvnvh-the-lessful)
on CodePen.0

このコードでは、.boxというクラス名を持つ要素に対して、transitionプロパティを使用して2つのプロパティ(background-colorとtransform)に対するトランジションを指定しています。

マウスが要素上に移動すると、要素の背景色が変化し、サイズも変更されます。変化はアニメーション化され、0.3秒かけて変化します。

この例を使って、複数のプロパティに対するTransitionの適用方法を理解できるでしょう。必要に応じてプロパティや値をカスタマイズして、さまざまなアニメーション効果を作成できます。

Hover時の色や透明度の変化

マウスが要素の上に来たとき(ホバー時)に、色や透明度を変化させることで、ユーザーに対して視覚的なフィードバックを提供できます。

この効果は、リンクやボタンなどのインタラクティブな要素に特に有効です。

以下のコードは、HTMLとCSSを含み、マウスが要素上にホバーすると背景色が変わり、透明度も変化する例です。

See the Pen
Untitled
by 田村大斗 (@ntxuvnvh-the-lessful)
on CodePen.0

このコードでは、.boxというクラス名を持つ要素に対して、transitionプロパティを使用して2つのプロパティ(background-colorとopacity)に対するトランジションを指定しています。

マウスが要素上に移動すると、背景色が変化し、要素が少し透明になります。変化はアニメーション化され、0.3秒かけて変化します。

この例を使用して、マウスホバー時に要素の色や透明度を変更する方法を学ぶことができます。

必要に応じてプロパティや値を調整して、好みのホバーエフェクトを作成できます。

Transformプロパティを使ったアニメーション

transformプロパティを用いると、要素を回転、拡大、縮小、移動させられます。これにTransitionを組み合わせることで、滑らかなアニメーションを実現できます。

以下のコードは、HTMLとCSSを含んでおり、要素がクリックされると回転と拡大縮小のアニメーションが適用される例です。

See the Pen
Untitled
by 田村大斗 (@ntxuvnvh-the-lessful)
on CodePen.

このコードでは、.boxというクラス名を持つ要素に対して、transformプロパティに対するトランジションを指定しています。

要素がマウスホバーされたときに、rotate(45deg)とscale(1.2)の変換が適用され、要素が45度回転し、1.2倍に拡大されます。変化はアニメーション化され、0.3秒かけて変化します。

この例を使って、transformプロパティを使用して要素にアニメーション効果を追加する方法を理解できるでしょう。

必要に応じてプロパティや値を調整して、さまざまなアニメーション効果を作成できます。

Transitionが可能なプロパティと条件

CSS Transitionを利用することで、プロパティの変化を滑らかに表現することができます。

ここでは、Transitionを適用する際の主要なプロパティとそれらの条件について詳しく説明します。

  • Transition-property
  • Transition-duration
  • Transition-delay
  • Transition-timing-function

Transition-property

transition-propertyプロパティは、Transition効果を適用したいCSSプロパティを指定します。

例えば、widthやopacityなどのプロパティ名を指定します。

また、全てのプロパティにTransitionを適用したい場合は、allと指定します。

ただし、全てのプロパティに対してTransitionを適用すると、パフォーマンスの低下が起こる可能性があるため、必要なプロパティだけを指定することが推奨されます。

特定の要素やスタイルに対してアニメーションを適用したい場合に、対象のプロパティを指定します。

例えば、ボタンの背景色やリンクの色を滑らかに変化させる際に、それらのプロパティを指定します。

Transition-duration

transition-durationプロパティは、プロパティの変化が完了するまでの時間を指定します。

この値は秒(s)またはミリ秒(ms)で設定します。例えば、0.5sや300msのように指定できます。

適切な時間を設定することで、ユーザーにとって自然で心地よいアニメーションを実現できるでしょう。

アニメーションの速さや滑らかさを調整する際に、適切な時間を指定しましょう。

短い時間は速いアニメーションを、長い時間はゆっくりとしたアニメーションを表現するのに役立ちます。

Transition-delay

transition-delayプロパティは、Transitionが始まるまでの遅延時間を設定します。この時間も秒(s)またはミリ秒(ms)で指定します。

遅延時間を設定することで、特定のイベントが発生してからアニメーションが始まるように調整することができます。

要素が特定のアクション(例: クリック、ホバー、読み込み完了など)の後にアニメーションを開始する場合に、遅延時間を指定します。

Transition-timing-function

transition-timing-functionプロパティは、アニメーションの進行速度を制御するための関数を指定します。

代表的な関数には、linear、ease、ease-in、ease-out、ease-in-outなどがあります。

これらを適切に選択することで、自然で滑らかなアニメーションを実現できます。

使いどころ: アニメーションの進行速度をカスタマイズする際に、適切なタイミング関数を指定します。

例えば、イーズイン(始まりがゆっくり)やイーズアウト(終わりがゆっくり)など、コンテンツに合わせた関数を選択します。

Transitionが効かない時の注意点

Transitionは便利ですが、うまく動作しないこともあります。

特定の状況下では、Transitionが効かないことがありますので、注意が必要です。

ここでは、よくある問題点とその解決策について詳しく説明します。

  • DisplayプロパティにTransitionを設定している場合
  • 疑似クラスにTransition設定をしている時
  • インライン要素にTransformのアニメーションを指定している場合
  • Transition記述の位置が不適切な場合

DisplayプロパティにTransitionを設定している場合

displayプロパティにTransitionを適用しても、要素を表示から非表示に切り替えるアニメーションはできません。

なぜなら、displayプロパティは非表示と表示の間で中間ステップを持たないからです。

代わりに、要素の透明度(opacity)や高さ(height)など、Transitionが適用できるプロパティを使用しましょう。

これにより、要素を滑らかに表示/非表示にすることが可能です。

疑似クラスにTransition設定をしている時

疑似クラス(:hover、:activeなど)にTransitionを設定した場合、その状態に適用されることを確認しましょう。

例えば、:hoverに設定したTransitionは、マウスが要素にホバーしたときに発動します。

正確なトリガーを設定する必要があります。

インライン要素にTransformのアニメーションを指定している場合

インライン要素(例: <span>, <a>, <em>など)に対しては、デフォルトではtransformプロパティが効かないことがあります。

transformを適用するには、要素をブロックレベルまたはフレックスレベルに変更するスタイル(display: inline-block;やdisplay: inline-flex;など)を適用する必要があります。

Transition記述の位置が不適切な場合

Transitionを適用するプロパティを選択する前に、アニメーションが必要なプロパティを明確にしましょう。

適切なプロパティを指定しないと、アニメーションが機能しない可能性があります。

他にも、Transitionプロパティ(プロパティ、時間、タイミング関数、遅延など)は、CSSルール内で適切な位置に配置する必要があります。

また、ブラウザ間の互換性を確保するためにベンダープレフィックスを追加することも忘れないでください。

【サンプルコード有】Transitionを使ったアニメーションの例

CSS Transitionは様々な場面で利用することができ、ウェブサイトのインタラクティブ性を高めます。

ここでは実際のコード例を通して、Transitionの使い方を学びます。

  • Hoverやクラス変化時のTransition
  • Menuにハイライトを入れるTransition

Hoverやクラス変化時のTransition

マウスを要素の上に乗せた時(Hover)にスムーズな変化を付けることで、ユーザーの注目を引きやすくします。

See the Pen
Untitled
by 田村大斗 (@ntxuvnvh-the-lessful)
on CodePen.

上記の例では、.hover-box要素の背景色がマウスオーバー時にスムーズに変化します。

Menuにハイライトを入れるTransition

ウェブサイトのナビゲーションメニューにハイライト効果を加えることで、どのセクションが選択されているのかを明確に示すことができます。

See the Pen
Untitled
by 田村大斗 (@ntxuvnvh-the-lessful)
on CodePen.

上記の例では、メニュー項目がマウスオーバーされた際、または.activeクラスが適用された項目がスムーズにハイライトされます。

JavaScriptを用いたTransitionの利用例

CSS Transitionをさらに柔軟に活用するために、JavaScriptと組み合わせると、より複雑なアニメーションやインタラクティブなエフェクトを作成できます。

本章では、以下の例について解説していきます。

  • JavaScriptでのTransitionの制御
  • Transitionの開始と完了の検出

JavaScriptでのTransitionの制御

JavaScriptを使用すると、イベントや条件に応じてTransitionを動的に変更したり、トリガーすることができます。

See the Pen
Untitled
by 田村大斗 (@ntxuvnvh-the-lessful)
on CodePen.

上記の例では、ボタンをクリックすると#box要素が右に100px移動するアニメーションが開始されます。

Transitionの開始と完了の検出

Transitionの開始と終了を検出することで、アニメーションのライフサイクルを細かく制御し、別の処理を連動させることが可能になります。

See the Pen
Untitled
by 田村大斗 (@ntxuvnvh-the-lessful)
on CodePen.

上記のコードでは、#box要素のTransitionが開始されたときと終了したときにコンソールにメッセージが表示されます。

まとめ

CSS Transitionを用いることで、ウェブページの要素にスムーズなアニメーションを加えることができます。

適切にプロパティを設定することで、複数の変更に対しても自然な遷移を実現し、ユーザーインターフェースの魅力を高めます。

ただし、適用できるプロパティや条件を理解し、特定の状況でTransitionが効かない場合の注意点を把握しておく必要があります。

具体的なコード例やJavaScriptを利用した制御方法を学ぶことで、より高度なアニメーションを実装することが可能です。

このガイドを通じてCSS Transitionの概念をしっかりと理解し、ウェブデザインのスキルを向上させましょう。

この記事を書いた人

1998年生まれ、北海道在住のフリーランスのコンテンツディレクター。

3年間SEOライターとして活動し、幅広いジャンルで200本以上の記事を執筆。「読者に寄り添ったコンテンツの作成」をモットーにしています。
andymoriと村上春樹が好き。

目次