CSSアニメーションの実装がこれで簡単に! Chrome 117でサポートされたCSSの6つの新しい機能とプロパティ
Post on:2023年9月21日
先週リリースされたChrome 117でサポートされた、CSSの6つの新しい機能とプロパティを紹介します。
今までのCSSでは不可能だったことやJavaScriptを使用しないとできなかったことが、数行のCSSで実装できるようになります。たとえば、アニメーションで変化する前のスタイルを設定したり、最上位レイヤーとの間で要素をアニメーションさせたり、本文テキストのレイアウトを自動で最適化したりできます。
下記は各ポイントを意訳したものです。
※元サイト様のライセンスに基づいて翻訳しています。基づいてというのは、貢献部分に関して同ライセンスも含みます。
- はじめに
- @starting-styleルール
- overlayプロパティ
- transition-behaviorプロパティ
- CSS Gridのsubgrid値
- text-wrap: pretty;
- contains-intrinsic-size: auto noneのサポート
はじめに
Chrome 117でサポートされたCSSの新機能を使用することで、開始アニメーションと終了アニメーションを簡単に追加し、ダイアログやポップオーバーなどの最上位レイヤーの非表示要素との間でスムーズなアニメーションを実装できます。
@starting-styleルール
@starting-style
ルールを使用すると、CSSのトランジションで変化する前のスタイルを適用することができます。
CSSのトランジションは要素の最初のスタイル更新時、またはdisplay
タイプがnone
から他に変更された時に、初期スタイルからのトランジションをトリガーできませんでした。これは初期スタイルからの予期せぬ遷移を避けるためです。
トランジションで変化する前のスタイルを適用するには、@starting-style
ルール内でスタイルを設定します。
たとえば、下記のCSSはdiv
の背景をライムグリーンにトランジションするCSSで、変化する前のスタイルを@starting-style
内に設定します。
1 2 3 4 5 6 7 8 9 10 |
div { transition: background-color 0.5s; background-color: lime; } @starting-style { div { background-color: green; } } |
デモを表示すると、背景色がグリーンからライムに変化します。繰り返し表示したい場合は、下部の「Return」をクリックしてください。
See the Pen
@starting-style rule by coliss (@coliss)
on CodePen.
参考:
overlayプロパティ
overlay
プロパティは、終了時のトランジションのために要素を最上位レイヤーに維持することを可能します。overlay
プロパティは要素が最上位レイヤーにあるかどうかを示すために追加され、none
とauto
の2つの値を取ることができます。
popover
やdialog
を最上位レイヤーからフェードアウトするには、トランジションのリストにoverlay
プロパティを追加します。
See the Pen
overlay, dialog, popover, backdrop by coliss (@coliss)
on CodePen.
参考:
transition-behaviorプロパティ
CSSのtransition-behavior
プロパティは、トランジションで個別のプロパティを使用できるようにするtransition
プロパティの省略形です。
transition-behavior
の値にallow-discrete
を設定すると、個別プロパティはアニメーションを開始し、50%で初期値から最終値へと反転します。display: none;
やcontent-visibility: hidden;
が初期値または最終値のいずれかであるトランジションでは、トランジションする間にわたってvisible
値が使用されます。
複数の個別プロパティを簡単にアニメーション化できます。
See the Pen
Fade out cards - Transition by coliss (@coliss)
on CodePen.
参考:
CSS Gridのsubgrid値
CSS Gridのsubgrid値が、grid-template-columns
とgrid-template-rows
の2つで設定できるようになりました。この値により、ネストされたグリッドは行、列、またはその両方に対して新しいトラック定義を作成するのではなく、その親で定義されたトラックを使用することができます。
text-wrap: pretty;
text-wrap
プロパティのpretty
値は、スピードよりもレイアウトを最適化します。この値は本文テキストを目的としており、複数行にも対応しています。
pretty
を使用することで、wrap
よりも遅いレイアウト方法を明示的に選択することになり、パフォーマンスが最適化されます。Chromeの現在の実装では、段落の最後に1つの単語だけが表示されないよう孤立に対して最適化されています。
デモをこのページで見るとテキストがちょうど収まっているため変化がないかもしれません。右上「Edit on CodePen」で別タブで表示するとテキストのレイアウトを最適化できると思います。
See the Pen
text-wrap: pretty by coliss (@coliss)
on CodePen.
contains-intrinsic-size: auto noneのサポート
既存のcontains-intrinsic-size
プロパティの構文を拡張して、auto && none
もサポートします。
参考:
sponsors