テック技報最新号へ →
CSS

@starting-style で popover を display:none からフェードイン

@starting-style で「表示直前の初期値」を与えると、JSなしで popover を開くときにトランジションが効く。

@sanyampunia · 2026-10-09
#アニメーション#popover#starting-style

どんな時に使う?

popover や dialog は閉じている間 display: none なので、開いた瞬間には「アニメーション開始時の値」が存在せず、transition が発火しない。@starting-style で開始値を宣言すると、開くときにそこから通常値へ遷移する。

コード

css
.menu {
  transition: opacity 0.3s, translate 0.3s;
}

@starting-style {
  .menu:popover-open {
    opacity: 0;
    translate: 0 -8px;
  }
}
  • 閉じるときもアニメーションさせたい場合は、transition に display 0.3s allow-discrete, overlay 0.3s allow-discrete を追加し、閉状態のスタイル(opacity: 0 など)も定義する。

注意点・対応状況

  • @starting-style は主要ブラウザで対応済み(比較的新しい)。allow-discrete による閉じアニメーションの対応はブラウザ差があるので確認する。

出典

X の元の投稿を開く