最近のCSSは進化が早い! モダンCSSの新機能、ブラウザのサポートが充実した機能のまとめ

最近のCSSは進化が早く、またブラウザはエバーグリーン(自動で最新版にアップデートするブラウザ)になり月一ペースでアップデートされ、モダンCSSの機能もたくさんサポートされました。

CSSの新機能をはじめ、ブラウザのサポートが充実した機能を紹介します。2024年はこれらのモダンCSSを使用する機会が増えますね。

モダンCSSの新機能、ブラウザのサポートが充実した機能のまとめ

:has()疑似クラスがすべてのブラウザにサポートされました

まずは、:has()疑似クラスがすべてのブラウザにサポートされました。今まではFirefoxを除くすべてのブラウザにサポートされていましたが、2023年12月19日にリリースされたFirefox 121(リリース情報)で、:has()疑似クラスがサポートされました。

今年は、:has()疑似クラスを使用する機会も増えそうです。

CSSの:has()疑似クラスの便利な使い方を徹底解説

CSSの:has()疑似クラスの便利な使い方を徹底解説

:has()疑似クラスを使用するとさまざまなセレクタを条件式のように記述できます。

詳しくは、CSSの:has()疑似クラスの便利な使い方のまとめをご覧ください。

ほかにも、いろいろ便利なスタイルを:has()疑似クラスで定義できます。

CSS :has()擬似クラスを使った便利なセレクタ、子の数に基づいて親要素のスタイルを定義

知っておくと便利なCSSのセレクタ! :has()疑似クラスを使用すると、子の数に基づいて親要素のスタイルを定義できる

CSSのコンテナクエリ

CSSのコンテナクエリが登場したのは2022年ですが、2023年2月にすべてのモダンブラウザの安定版でサポートされました。

コンテナクエリは今までのメディアクエリのスクリーンベースではなく、親コンテナをベースにして子要素のスタイルを定義できます。レイアウトやコンポーネントだけでなく、レスポンシブ対応のフォントサイズにも大活躍です。

CSSのコンテナクエリが主要ブラウザにサポート、ポリフィルも大幅にアップデート

CSS コンテナクエリの準備はできてる? 安定版のブラウザにサポート、ポリフィルも大幅にアップデートされました

コンテナクエリで実装する最初のステップは、containerプロパティを追加することです。コンポーネントは親の幅に応じて変化するので、ページ全体ではなく、影響を受けるエリアのみを再描画するようにブラウザに伝える必要があります。

CSS コンテナクエリ(@container)の基礎知識と便利な使い方を解説

CSS コンテナクエリ(@container)の基礎知識と便利な使い方を解説

さらにコンテナクエリは、:has疑似クラスを使用すると強力になります。

CSSのスタイルクエリ

コンテナクエリだけでなく、CSSのスタイルクエリも2023年にすべてのモダンブラウザの安定版でサポートされました。スタイルクエリとは、親要素のスタイルに応じて子要素のスタイルを設定できる新機能です。

親要素のサイズによるクエリはコンテナクエリですが、スタイルクエリは親要素のスタイル値によるクエリになるため、たとえば複数のバリエーションを持つ再利用可能なコンポーネントが簡単に実装できます。

スタイルクエリの基礎知識と使い方を解説

CSSのスタイルクエリの基礎知識と使い方を解説、親要素の「スタイル」に応じて子要素のスタイルを適用

スタイルクエリを使用したUIコンポーネントの実装例などは、下記をご覧ください。

CSS スタイルクエリ(@container style())の基礎知識と便利な使い方を解説

CSS スタイルクエリ(@container style())の基礎知識と便利な使い方を解説

CSSのネスト

そして、CSSのネストもすべてのモダンブラウザの安定版でサポートされました。

ネストはSassなどのCSSプリプロセッサですでに使用している人も多いと思いますが、CSSのネストは仕様が少し異なります。とは言え、CSSでネストが使用できるようになるのは、嬉しいことですね。

CSSのネストは、セレクタを繰り返す必要性を減らし、関連する要素のスタイルルールを同じ場所に配置することで、デベロッパーを支援します。

CSSのネストの基礎知識、便利な使い方を詳しく解説

CSSのネストがついにブラウザで使用できるようになった! 基礎知識、便利な使い方を詳しく解説

また、Chrome 120でCSSネストがより分かりやすい構文もサポートされ、記述方法が簡単になりました。

CSSネストの記述方法がより簡単になります

朗報! これでCSSネストの記述方法がより簡単になります

CSSの@scopeはセレクタの適用範囲を設定できる

CSSのネストもこれまでの記述方法が大きく変わるものですが、@scopeも記述方法に大きな影響を与える新機能です。

たとえば、下記のHTMLにはimgが2つあります。@scopeを使用すると、1つ目の.media-object直下のimgにのみスタイルを適用できます。.content内のimgはターゲットにされません。

セレクタの適用範囲を設定できる、@scopeの基礎知識と使い方

CSSの新機能@scopeが便利すぎる! セレクタの適用範囲を設定できる、@scopeの基礎知識と使い方

上記のように上限と下限があるスコープは、ドーナツスコープ〔donut scope〕と呼ばれます。また、@scopeで使用するセレクタの詳細度は、含まれるセレクタの詳細度に影響を受けません。詳しくは、下記をご覧ください。

CSS @scopeの基礎知識と使い方を解説

CSS @scopeの基礎知識と使い方を解説、セレクタの適用範囲を設定できる

CSSで三角関数が使用できるようになった

2023年、CSSの大きな話題の一つが三角関数が使用できるようになったことです。今まではcalc()関数をはじめ、min(), max(), clamp()などの関数でしたが、ついに三角関数もChrome, Edge, Safari, Firefoxのすべてにサポートされました。

CSSで使用できる三角関数は、sin(), cos(), tan(), asin(), acos(), atan(), atan2()です。

2023年はCSSで三角関数「sin(), cos(), tan()」が主要ブラウザのすべてで使用できるようになるぞ!

2023年はCSSで三角関数「sin(), cos(), tan()」が主要ブラウザのすべてで使用できるようになるぞ!

CSSで三角関数をどこに使うのか。たとえば、今まではかなり複雑なCSSやJavaScriptが必要だった斜めのレイアウトがシンプルなCSSで実装できます。ほかにも、要素を円軌道で移動させたり、メビウスの輪なんかも実装できます。また、かなり高度になりますが、CSSの三角関数でスクリーンサイズやフォントサイズを取得することもできます。

CSSの三角関数(sin(), cos(), tan())の基礎知識と基本的な使い方を解説

CSSの三角関数(sin(), cos(), tan())の基礎知識と基本的な使い方を解説

スクロールをトリガーにしたアニメーションの実装が大きく変わる

スクロールをトリガーにしたアニメーションは、Appleの新製品発表ページをはじめ多くのランディングページで見かけます。このスクロールをトリガーにしたアニメーションの実装方法が、Chrome 115で実装されたScroll-driven Animationsで大きく変わりました。

スクロールすると要素がアニメーションで表示されたり、スクロール量で変化するインジケーター、背景が変化するパララックスなど、実装がそれなりに手間がかかりましたが、数行のコードで実装できるようになります。

スクロールをトリガーにしたアニメーションを実装する方法

CSSでの実装が大きく変わる! Scroll-driven Animations スクロールをトリガーにしたアニメーションを実装する方法

Scroll-driven Animationsの実装に役立つツールやさまざまな実装方法の解説がリリースされています。

スクロールをトリガーにしたCSSアニメーションを視覚化し、デバッグが簡単にできるデベロッパーツールの機能拡張 -Scroll-Driven Animations Debugger

スクロールをトリガーにしたCSSアニメーションを視覚化し、デバッグが簡単にできるデベロッパーツールの機能拡張

今までは面倒だったことが簡単に実装できるようになった新機能

今までは面倒だったことがCSSで簡単に実装できるようになった新機能もたくさんあります。

CSSのサブグリッド(subgrid)を使用すると、下記のように子要素(画像・見出し・テキスト)の水平グリッドも簡単に揃えることができます。

デモのキャプチャ

CSSのsubgridがすべてのブラウザにサポートされたので、カード内の見出しやテキストを簡単に揃えることができます

新しい関数light-dark()を使用すると、ライトモードとダークモードのスタイルを簡単に定義できるようになります。

CSSの新しい関数「light-dark()」ライトモードとダークモードのスタイルを簡単に定義できる

CSSでライトモードとダークモードのスタイルを簡単に定義できる、新しい関数「light-dark()」が便利すぎる!

テキストが複数行のときに、行ごとの文字数を同じにしてバランスを自動調整するCSSの新機能「text-wrap: balance;」も便利です。

テキストの行のバランスを調整するCSSの新機能「text-wrap: balance;」の基礎知識と使い方

CSSの新機能! テキストの行のバランスを自動調整する「text-wrap: balance;」の基礎知識と使い方

今まではJavaScriptを使用しないとできなかったことが、たった1行のCSSで簡単に実装できるようになりました。フォームのtextareaに文字を入力すると、その文字量に合わせてサイズを自動で変更してくれます。

CSSの新しいプロパティ「form-sizing: content;」が便利! フォームのサイズを入力された文字量に合わせて自動変更

CSSの新しいプロパティ「form-sizing: content;」が便利! フォームのサイズを入力された文字量に合わせて自動変更

知っておくと便利なCSSの知識とテクニック

CSS フクロウセレクタの効果的な使い方、要素を積み重ねる時のマージンにかなり便利

CSSの知っておくと便利なフクロウセレクタの使い方! 要素を積み重ねる時のマージンにかなり便利です

CSSの相対角丸のテクニック、ネストされた外側の角丸と内側の角丸を美しいバランスで実装

CSSで角丸を美しく実装するテクニック、ネストされた外側と内側を相対角丸の美しいバランスで実装

論理プロパティを徹底解説

CSSの論理プロパティの使い方を徹底解説、margin-block-start, margin-inline-endなど

CSS Flexboxの8年越しのバグがようやく修正されます

朗報! CSS Flexboxの8年越しのバグがようやく修正されます

CSSのセレクタ「.a .b .c」と「.a :is (.b . c)」は同じように見えるけど実は違います

CSSって難しい! セレクタ「.a .b .c」と「.a :is (.b . c)」は同じに見えるけど実は違う、ブラウザはセレクタを右から左に読む

CSS Flexboxで左と右の両端揃えにする実装テクニック

CSS Flexboxでアイテムを左と右の両端揃えにする実装テクニック

CSSのみで、フォームの入力時にフロートする入力欄のラベルを実装するテクニック

CSSのみで、フォームの入力時にフロートする入力欄のラベルを実装するテクニック

CSSのかなり高度なテクニック -Expert CSS: The CPU HackCSSのかなり高度なテクニック -Expert CSS: The CPU Hack

CSSはこんなにも進化していたのか! CSSのかなり高度なテクニック -Expert CSS: The CPU Hack

HTML関連も少しだけ

HTMLページのhead内に記述する要素の総まとめ

2023年最新版: HTMLのheadの書き方、head内に記述する要素の総まとめ

フォームのセレクトボックスで区切り線にhrを使用できるようになりました

地味だけど嬉しい新機能! フォームのセレクトボックスで区切り線にhrを使用できるようになりました

ボタンの実装について知っておくべきすべてのこと

divはボタンではない、ボタンの実装について知っておくべきすべてのこと

sponsors

top of page

©2024 coliss