CSS Transitions
transition は CSS のプロパティで、 transition-property、 transition-duration、 transition-timing-function、 transition-delay、 transition-behavior の一括指定プロパティです。
対応ブラウザ
| 機能 | デスクトップ | モバイル | ||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Safari | Chrome Android | Safari iOS | |
| 26 | 12 | 16 | 9 | 26 | 9 | |
| DOM API | ||||||
| CSSTransition はWeb Animations API のインターフェイスで、CSS トランジションで使用される Animation オブジェクトです。 | 84 | 84 | 75 | 13.1 | 84 | 13.4 |
| transitionProperty は CSSTransition インターフェイスのプロパティで、トランジションの 展開されたトランジションプロパティ名 を返します。これは、トランジションが生成された個別指定の CSS プロパティです。 | 84 | 84 | 75 | 13.1 | 84 | 13.4 |
| transitioncancel イベントは、 CSS トランジションがキャンセルされたときに発生します。 | 87 | 87 | 53 | 13.1 | 87 | 13.4 |
| transitionend イベントは、 CSS トランジションが完了したときに発生します。トランジションが完了前に削除された場合、例えば transition-property が削除されたり、 display が none に設定されたりした場合、イベントは生成されません。 | 26 | 18 | 51 | 7 | 26 | 7 |
| transitionrun イベントは、 CSS トランジションが最初に生成されたとき、すなわち transition-delay が始まる前に発生します。 | 74 | 12 | 53 | 13.1 | 74 | 13.4 |
| transitionstart イベントは、 CSS トランジションが実際に始まったとき、すなわち transition-delay が終了した後に発生します。 | 74 | 12 | 53 | 13.1 | 74 | 13.4 |
| TransitionEvent インターフェイスは、トランジションに関する情報を提供するイベントを表します。 | 27 | 12 | 4 | 7 | 27 | 7 |
| TransitionEvent.elapsedTime は読み取り専用プロパティで、このイベントが発行された時にアニメーションが実行されていた秒数を float 型で返します。この値は transition-delay プロパティの影響を受けません。 | 2 | 12 | 4 | 6 | 18 | 6 |
| propertyName は TransitionEvent オブジェクトの読み取り専用プロパティで、このトランジションに関連する CSS プロパティの名前を格納した文字列です。 | 2 | 12 | 4 | 6 | 18 | 6 |
| TransitionEvent.pseudoElement は読み取り専用プロパティで、アニメーションが実行されている '::' で始まる擬似要素の名前が入っている文字列です。トランジションが擬似要素で実行されない場合は、要素は空文字列 ("") です。 | 2 | 79 | 23 | 6 | 18 | 6 |
| TransitionEvent() コンストラクターは新しい TransitionEvent オブジェクトを返します。これはトランジションに関するイベントを表します。 | 27 | 14 | 23 | 7 | 27 | 7 |
| その他 | ||||||
| CSS の transition-delay プロパティは、値が変更されたときにプロパティのトランジション効果が始まるまでの待ち時間を指定します。 | 26 | 12 | 16 | 9 | 26 | 9 |
| transition-duration は CSS のプロパティで、トランジションによるアニメーションが完了するまでの再生時間を秒数またはミリ秒数で指定します。既定値は 0s であり、これはアニメーションを実行しないことを示します。 | 26 | 12 | 16 | 9 | 26 | 9 |
| transition-property は CSS のプロパティで、トランジション効果を適用する CSS プロパティを指定します。 | 26 | 12 | 16 | 9 | 26 | 9 |
| CSS プロパティ | ||||||
IDENT value `IDENT`値 | 1 | 12 | 16 | 4 | 18 | 3 |
all | 1 | 12 | 4 | 3.1 | 18 | 2 |
none | 1 | 12 | 4 | 3.1 | 18 | 2 |
| その他 | ||||||
| transition-timing-function は CSS のプロパティで、トランジション効果の影響を受ける CSS プロパティにおいて、中間状態の値を算出する方法を設定するために使用されます。 | 26 | 12 | 16 | 9 | 26 | 9 |
| CSS プロパティ | ||||||
ease | 1 | 12 | 4 | 3.1 | 18 | 2 |
ease-in | 1 | 12 | 4 | 3.1 | 18 | 2 |
ease-in-out | 1 | 12 | 4 | 3.1 | 18 | 2 |
ease-out | 1 | 12 | 4 | 3.1 | 18 | 2 |
jump `steps()` の `jump-` キーワード | 77 | 79 | 65 | 14 | 77 | 14 |
linear | 1 | 12 | 4 | 3.1 | 18 | 2 |
step-end | 1 | 12 | 4 | 3.1 | 18 | 2 |
step-start | 1 | 12 | 4 | 3.1 | 18 | 2 |
all | 1 | 12 | 4 | 3.1 | 18 | 2 |
ease | 1 | 12 | 4 | 3.1 | 18 | 2 |
ease-in | 1 | 12 | 4 | 3.1 | 18 | 2 |
ease-in-out | 1 | 12 | 4 | 3.1 | 18 | 2 |
ease-out | 1 | 12 | 4 | 3.1 | 18 | 2 |
gradients can animate グラデーションをアニメーション化できる | | 12 | | Preview | | |
linear | 1 | 12 | 4 | 3.1 | 18 | 2 |
none | 1 | 12 | 4 | 3.1 | 18 | 2 |
step-end | 1 | 12 | 4 | 3.1 | 18 | 2 |
step-start | 1 | 12 | 4 | 3.1 | 18 | 2 |
- ベンダープレフィックス付きで対応: -webkit- (1)
- ベンダープレフィックス付きで対応: -webkit- (12)
- Firefox 57 より前では、色が指定された `text-shadow` から色が指定されていない `text-shadow` に遷移する場合、トランジションは機能しませんでした (バグ 726550 を参照)。
- Firefox 57 より前では、塗りつぶしアニメーション (たとえば、`animation-fill-mode: forwards` を設定した状態) をキャンセルすると、1 回だけではありますが、同じ要素に設定された遷移をトリガーできます (詳細については、バグ 1192592 とこれらのテスト ケースを参照してください)。
- Firefox 57 より前では、`background-position` プロパティは、異なる数の `<position>` 値を含む 2 つの値 (たとえば、`background-position: 10px 10px;` と `background-position: 20px 20px, 30px 30px;`) の間で移行することはできません (バグ 1390446 を参照)。
- ベンダープレフィックス付きで対応: -webkit- (49)
- ベンダープレフィックス付きで対応: -moz- (4)
- このバージョンで機能が削除されました (preview)
- ベンダープレフィックス付きで対応: -webkit- (3.1)
- ベンダープレフィックス付きで対応: -webkit- (18)
- ベンダープレフィックス付きで対応: -webkit- (2)
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (87)
- `ontransitioncancel` イベント ハンドラー プロパティはサポートされていません。 このイベントをリッスンするには、`element.addEventListener('transitioncancel', function() {});` を使用します。
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (87)
- `ontransitioncancel` イベント ハンドラー プロパティはサポートされていません。 このイベントをリッスンするには、`element.addEventListener('transitioncancel', function() {});` を使用します。
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (13.1)
- `ontransitioncancel` イベント ハンドラー プロパティはサポートされていますが、`transitioncancel` イベントは決して発生しません。
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (87)
- `ontransitioncancel` イベント ハンドラー プロパティはサポートされていません。 このイベントをリッスンするには、`element.addEventListener('transitioncancel', function() {});` を使用します。
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (13.4)
- `ontransitioncancel` イベント ハンドラー プロパティはサポートされていますが、`transitioncancel` イベントは決して発生しません。
- ベンダープレフィックス付きで対応: webkit (1)
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (18)
- `ontransitionend` イベント ハンドラー プロパティはサポートされていません。 このイベントをリッスンするには、`element.addEventListener('transitionend', function() {});` を使用します。
- ベンダープレフィックス付きで対応: webkit (79)
- ベンダープレフィックス付きで対応: webkit (4)
- ベンダープレフィックス付きで対応: webkit (18)
- ベンダープレフィックス付きで対応: webkit (3.2)
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (13.1)
- イベント ハンドラーは存在しますが、呼び出されることはありません。
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (13.4)
- イベント ハンドラーは存在しますが、呼び出されることはありません。
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (13.1)
- イベント ハンドラーは存在しますが、呼び出されることはありません。
- このブラウザでは部分的にしか実装されていません
- このバージョンで機能が削除されました (13.4)
- イベント ハンドラーは存在しますが、呼び出されることはありません。
- このバージョンで機能が削除されました (71)
- ベンダープレフィックス付きで対応: WebKit (2)
- ベンダープレフィックス付きで対応: WebKit (4)
- このバージョンで機能が削除されました (71)
- ベンダープレフィックス付きで対応: WebKit (18)
- ベンダープレフィックス付きで対応: WebKit (3)
- ベンダープレフィックス付きで対応: WebKit (6)
- ベンダープレフィックス付きで対応: WebKit (6)
- ベンダープレフィックス付きで対応: -webkit- (1)
- ベンダープレフィックス付きで対応: -webkit- (12)
- ベンダープレフィックス付きで対応: -webkit- (49)
- ベンダープレフィックス付きで対応: -moz- (4)
- このバージョンで機能が削除されました (126)
- ベンダープレフィックス付きで対応: -webkit- (4)
- ベンダープレフィックス付きで対応: -webkit- (18)
- ベンダープレフィックス付きで対応: -webkit- (2)
- ベンダープレフィックス付きで対応: -webkit- (1)
- ベンダープレフィックス付きで対応: -webkit- (12)
- ベンダープレフィックス付きで対応: -webkit- (49)
- ベンダープレフィックス付きで対応: -moz- (4)
- このバージョンで機能が削除されました (126)
- ベンダープレフィックス付きで対応: -webkit- (3.1)
- ベンダープレフィックス付きで対応: -webkit- (18)
- ベンダープレフィックス付きで対応: -webkit- (2)
- ベンダープレフィックス付きで対応: -webkit- (1)
- ベンダープレフィックス付きで対応: -webkit- (12)
- ベンダープレフィックス付きで対応: -webkit- (49)
- ベンダープレフィックス付きで対応: -moz- (4)
- このバージョンで機能が削除されました (126)
- ベンダープレフィックス付きで対応: -webkit- (3.1)
- ベンダープレフィックス付きで対応: -webkit- (18)
- ベンダープレフィックス付きで対応: -webkit- (2)
- ベンダープレフィックス付きで対応: -webkit- (1)
- ベンダープレフィックス付きで対応: -webkit- (12)
- ベンダープレフィックス付きで対応: -webkit- (49)
- ベンダープレフィックス付きで対応: -moz- (4)
- このバージョンで機能が削除されました (126)
- ベンダープレフィックス付きで対応: -webkit- (3.1)
- ベンダープレフィックス付きで対応: -webkit- (18)
- ベンダープレフィックス付きで対応: -webkit- (2)
- このバージョンで機能が削除されました (79)
基本構文
.button {
background-color: #3b82f6;
transition: background-color 0.2s ease, transform 0.2s ease;
}
.button:hover {
background-color: #2563eb;
transform: scale(1.05);
} ライブデモ
実務での使いどころ
-
ホバーエフェクト
ボタンやリンクのホバー時に色やサイズの変化を滑らかにする。
-
状態変化の視覚的フィードバック
フォーム入力のフォーカスやバリデーション結果を滑らかに表示する。
注意点
- display や visibility など、補間できないプロパティには transition が効かない。
- transition-duration が長すぎるとUIがもっさり感じるため、200〜400ms程度が推奨。
アクセシビリティ
- prefers-reduced-motion: reduce の場合は transition-duration を 0s にするなど配慮する。