- 大まかにロジック、レスポンシブ、詳細度制御、ネイティブ化、レイアウト支援の5つに整理できます。
新しいCSSは範囲が広く、そのまま追うと混乱します。まずは役割別に整理すると、構造が見えてきます。
以下より5つに区分けした項目をひとつづつ、解説します。
- 1.まずはこれ、ロジックを持ち始めたCSSの一覧
たとえば疑似クラスのhas()は、CSSのIF文。『もしも子要素に小見出しがあるならマージンを小さく!』というような条件分岐が可能です。フォーム入力支援や状態判定なども含め、CSSは明確に“考える領域”へ踏み込んでいます。
※ ロジック(処理の内容や手順、論理的な構造)
- 2.レスポンシブ支援 線から面へ
これまでレスポンシブとは大きい画面のPCと小さい画面のスマホを区分けするための考え方でした。しかし、近年は折り畳みスマホやピクセル解像度の進化でPCとの区別がつかなくなり、PC=大きい画像、スマホ=小さい画像という観念が崩れ去りました。現在、画面横幅の違いだけではレスポンシブの設計は困難になっています。
そのためCSSは、画面のアスペクト比という環境そのものを捉える設計へと進化しています。
- 3.CSSの詳細度を制御し始めた
詳細度というのはあまり馴染みのない言葉ですが、CSSのスタイルの優先順位のことです。その領域にも新たに切り込んできたのが:where()、:is()などの疑似クラスです。特に:where()はもっとも地味な存在にみえて、これこそが革命と呼ぶにふさわしい存在です。
これまでのセレクタの長い積み重ねの呪縛から解放してくれる魔法の呪文です。
- 4.あと、ネイティブ化
フォーム入力関連は昔からある:checked + labelをはじめ:disabled、:valid / :invalidなど、JSが必須だったバリデーションがCSSだけで完結。さらに:focus-visibleや:placeholder-shownなど。
さらに、デザイン面においても、color-mix(), color-schemeなどの登場により、これまで手作業やJSが必須だった作業がCSSだけで完結、いわゆるネイティブ化が進んだといえます。
- 5.最後にレイアウト支援 主にグリッド関連
もともとグリッドはそれまでの(flex系など)線で制御していたレイアウトを面に進化させた画期的な機能でしたが、さらに設計しやすく進化しました。また、自動でコラムを生成するcolumns, writing-modeなど、もはやプロパティというよりエンジンと呼べるようなものまで登場してます。
- ブラウザの判定も新しい
新しい機能にはブラウザが対応していないことも多いです。その判定を機能で選別できるように登場した@supportsも、自然の流れなんでしょう。