CSSでheight: 0をheight: autoにアニメートする。

CSSのトランジションは、インタラクティブ性を生み出す良い方法です。, transition のような要素の固有変数の遷移をアニメーション化します。 auto は、何十年もの間、ウェブ開発者にとっての問題であり、唯一の選択肢は、JavaScriptを使って動的に高さを計算することだった。


もう1つの課題は、要素が最初のスタイルを受け取ったときにトランジションを開始することです。 display-の価値 none この記事では、以下のような新しいCSS関数を使ってこの問題を解決する方法を説明する。 calc-size(), interpolate-size, @starting-styletransition-behavior はマスターできる。

解決策 calc-size()

DOM要素が閉じた状態(height: 0)からオープン状態(height: auto)、アニメーションは通常実行されません。 transition-これは、ブラウザが次のような固有変数に遷移を設定しないためです。 auto 新しい calc-size()-関数は、これらの固有変数の計算を可能にし、したがって遷移も可能にする。:

f95f6dcb193aa903adc84ce47bc4a296

について calc-size()-関数はまだすべてのブラウザで利用可能ではありません。 フォールバックは、元の height: auto-と宣言した。

解決策 interpolate-size

について interpolate-size-プロパティによって、ブラウザの補間動作を定義し、次のようなキーワードの間に使用するかどうかを決めることができる。 auto デフォルトでは、補間は数値間のみで行われる。 allow-keywords しかし、キーワード間のトランジションを有効にすることができます。:

f95f6dcb193aa903adc84ce47bc4a296

による interpolate-size: allow-keywords に対する :root-要素を使用すると、ページ全体の新しい動作が有効になります。

からの移行 display:none

もう一つの問題は display:none を見える状態にする。 display がアニメーション可能なプロパティでない場合、アニメーションはありません。 新しい CSS 関数がここで役立ちます。 @starting-styletransition-behavior:

f95f6dcb193aa903adc84ce47bc4a296

transition-behavior: allow-discrete アニメーションが display-の価値 block オン none これらのルールにより、最初のスタイル更新中でもトランジションを実行できる。 @starting-style-ルールは、最初のスタイル更新時にアニメーションが正しく実行されるようにします。

ブラウザサポート

新しい物件は現在建設中である。 calc-size()interpolate-size のサポートは、まだすべてのブラウザでサポートされているわけではありません。 Chromeでは、実験フラグに隠れて利用可能ですが、SafariとFirefoxではまだサポートされていません。 transition-behavior ChromeとEdgeでは使えるが、SafariとFirefoxでは使えない。

バック