CSSツール

無料 ディスクリートトランジションジェネレーター

表示・非表示が切り替わる要素をアニメーションするCSSを生成します。

ツールを読み込み中...

ディスクリートトランジションジェネレーターとは

CSSは従来、display: noneとdisplay: blockの間を遷移できませんでした。transition-behavior: allow-discreteプロパティと@starting-styleルールにより、出現要素と消滅要素のスムーズな遷移が可能になりました。これはダイアログ、ポップオーバー、ツールチップ、開示パネルに不可欠です。

クイックアンサー

離散トランジションは、要素がDOMに出入りする際のdisplay:noneやその他の離散的プロパティのCSSトランジションを可能にします。@starting-styleを使用して、要素が表示される前の初期状態を定義します。

Last updated: 2026-05-25

制限事項

  • displayの離散トランジションにはChrome 117以上またはSafari 17.5以上が必要です。Firefoxは2026年初頭時点でフラグの背後にあります。
  • @starting-styleはエントリアニメーションに必須です。これがないと、要素はトランジションを開始する前に最終状態にスナップします。
  • 離散トランジションはdisplayが変更されるエントリと終了のみをアニメーション化します。離散プロパティの中間値間の遷移はサポートされていません。

Sources:MDN Web Docs · W3C Specifications · jquery.app on GitHub

使い方

  1. アニメーション化する要素タイプ(dialog、popover、開示パネル)を選択します。
  2. opacityやtransformなどの出現・消滅アニメーションプロパティを設定します。
  3. ツールが@starting-styleとトランジションCSSを生成します。
  4. CSSをコピーして、ダイアログ、ポップオーバー、またはdetails要素に適用します。

主な用途

  • ダイアログモーダルが開くときにフェードイン効果を追加する。
  • 開示パネルにスライドダウンアニメーションを作成する。
  • ポップオーバーのスムーズな出現・消滅アニメーションを構築する。

用途

使用例

ダイアログのフェードインアニメーション

ダイアログが@starting-styleを使用してopacityと0.9から1へのスケールアップでフェードインします。閉じる際は同じトランジションでフェードアウトします。

ポップオーバーのスライドトランジション

ポップオーバーが上部からスムーズなトランジションでスライドインし、閉じる際にフェードアウトします。overlayとtransition-behavior: allow-discreteを使用します。

よくあるミス

  • トランジション要素にtransition-behavior: allow-discreteを追加するのを忘れる。
  • ダイアログとポップオーバーのトランジションでoverlayプロパティを考慮しない。
  • アニメーションが遅すぎてユーザーをイライラさせる。

検証

  1. ChromeまたはSafariでエントリと終了のトランジションをテストし、アニメーションが両方向で再生されることを確認します。
  2. ブラウザコンソールで、離散プロパティに関連するCSSトランジション警告がないか確認します。

FAQ

ディスクリートトランジションジェネレーターのFAQ

transition-behavior: allow-discreteは何をしますか?

displayやoverlayなど、通常は遷移できないプロパティのトランジションを有効にします。

@starting-styleは必要ですか?

はい。要素が表示される前の初期状態(opacity: 0やtransform値など)を定義します。これがないと、要素は最初に最終状態で表示されてしまいます。

通常は離散的で遷移できないCSSプロパティは?

display、overlay、content-visibility、mix-blend-modeの初期値への遷移などが離散的プロパティの例です。これらには中間状態がなく、要素は表示されるかされないかのどちらかです。transition-behavior: allow-discreteルールは、ブラウザにトランジション期間の終了まで状態の切り替えを待機するよう指示し、開始時に即座に切り替えるのを防ぎます。

display: noneとdisplay: blockの間を遷移できますか?

はい。transition-behavior: allow-discreteと@starting-styleを使用します。@starting-styleで初期の非表示状態(opacity: 0やtransform)を設定し、通常のルールで表示状態を設定します。transition-behavior: allow-discreteにより、トランジションが終了するまでdisplayの切り替えが待機されます。要素はdisplay: noneが適用される前にフェードアウトし、display: blockが設定された後にフェードインします。

関連ツール

その他のcssツール

こちらもお試しください

こちらもお試しください