Newly available 条件付きOK。Chrome 117+・Safari 17.4+・Firefox 129+・Edge 117+ で利用可能。

概要

従来、display や visibility などの離散的(discrete)プロパティにはトランジションを適用できなかった。transition-behavior: allow-discrete を指定すると、これらのプロパティの変化にもトランジションが効くようになる。@starting-style と組み合わせることで、要素の表示・非表示にスムーズなアニメーションを実現する。

対応ブラウザ

デスクトップ

Chrome 117+
Edge 117+
Safari 17.4+
Firefox 129+

モバイル

Chrome Android 117+
Safari iOS 17.4+
Firefox Android 129+

基本構文

CSS
.popover {
  transition: opacity 0.3s ease,
              display 0.3s ease allow-discrete;
  opacity: 1;
}

.popover:not(:popover-open) {
  opacity: 0;
}

@starting-style {
  .popover:popover-open {
    opacity: 0;
  }
}

実務での使いどころ

  • Popover のアニメーション

    Popover API で表示されるポップオーバーに、displayの遷移を含むスムーズなアニメーションを適用する。

注意点

  • @starting-style との組み合わせが前提となるケースが多い。
  • 離散プロパティの遷移はアニメーション中間値ではなく、タイミングの切り替えとなる。

アクセシビリティ

  • 表示・非表示のアニメーションは prefers-reduced-motion に対応し、即座に切り替わるようにする。