0Pricing
CSS Academy · レッスン

ネイティブCSSネスティング

プリプロセッサを使わず、ネイティブCSSネスティング仕様に従ってCSSルールをネストします。

「ネイティブCSSネスティング」はCoddyKit上の無料CSS Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCSS Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 CSS Academyコースには全4レッスンが含まれています。

CSS Nestingとは

ネイティブCSS Nesting(2024年のBaseline、すべてのモダンブラウザで利用可能)を使うと、以前はSassやLessのプリプロセッサでしか利用できなかったネスト構文で、あるルールの内側に別のCSSルールを書けます。ネストされたルールは、親セレクターのコンテキストを自動的に継承します。

基本的なネスト構文

親ルールのブロック内に子セレクターを書きます。ブラウザが親セレクターと子セレクターを自動的に組み合わせます。ネストセレクターである&を使うと、モディファイアや疑似クラスで親セレクターを明示的に参照できます。

<div class="card is-active">
  <div class="title">Nested Card Title</div>
  <p>Card body text.</p>
</div>

&ネストセレクター

&は、ネストされたルール内で親セレクターを明示的に表します。疑似クラス(&:hover)、疑似要素(&::before)、モディファイアクラス(&.active)、属性セレクター(&[disabled])に使用します。&を付けないネストされたルールは、子孫セレクターになります。

疑似要素のネスト

親の内側に疑似要素のルールを自然にネストできます:.button { &::before { content: ""; } &::after { content: ""; } }。これにより、ボタンに関するすべてのスタイルを同じ場所にまとめられ、フラットなCSSで必要だったセレクターの繰り返しを避けられます。

at-ruleのネスト

メディアクエリなどのat-ruleは、ルールの内側にネストできます(Chrome 112以降、Firefox 117以降):.card { padding: 1rem; @media (min-width: 768px) { padding: 2rem; } }。レスポンシブスタイルを、ファイル末尾の独立したメディアクエリブロックではなく、影響を受ける要素と同じ場所に置けます。

セレクターの詳細度

ネストしても詳細度のルールは変わりません。結合されたセレクターの詳細度は、フラットに記述した場合と同じです。.card .titleをネストして書いてもフラットに書いても、詳細度は同じ(0,2,0)です。Nestingは構文を便利にするものであり、詳細度を変えるものではありません。

暗黙の子孫セレクターと明示的な&

&を使わないネストされたセレクターは、子孫セレクターを作成します:.card { .title {} }は.card .titleにコンパイルされます。&を使う場合:.card { &.active {} }は.card.activeにコンパイルされます(空白がないため、子孫ではなくモディファイアクラスです)。

ネイティブNestingでのBEM

ネイティブNestingはBEMにはあまり適していません。.block__elementや.block--modifierのセレクターは文字列であり、&だけではそれらを組み立てられないためです。BEMの文字列連結(引き続きプリプロセッサが必要)ではなく、疑似クラスやネストされたコンポーネント構造にNestingを使用してください。

Sassからの移行

SassのNesting構文のほとんどは、ネイティブCSSのNestingと同じです。例外として、Sassでは&-modifierによる文字列連結が可能ですが、ネイティブCSSではできません。&-や&__のパターンを確認し、それらに該当するルールだけをフラット化し、その他のNestingは維持して移行します。

ブラウザ対応

ネイティブCSS Nestingは、Chrome 112以降、Firefox 117以降、Safari 16.5以降でサポートされています。古いブラウザにも対応する場合は、PostCSSとpostcss-nestingを使って、ビルド時にネイティブNesting構文をフラットなCSSへ変換できます。これにより、現在からネイティブNestingで記述し始められます。

DevToolsとNesting

Chrome DevToolsでは、Stylesパネルにネストされたルールがネストされた形式で表示されます。ネストされたルールをクリックすると、Sourcesパネルの正しいソース位置に移動します。モダンなDevToolsでは、ネストされたCSSのデバッグもフラットなCSSと同じように分かりやすく行えます。

理解度チェック

&セレクターを使う場合と使わない場合で、Nestingにはどのような違いがありますか?

まとめ

ネイティブCSS Nestingを使うと、通常のCSSでSassのようなネスト構文を利用できます。&セレクターは、疑似クラス、疑似要素、モディファイアの複合セレクターを作成します。ネストされた@mediaクエリによって、レスポンシブスタイルを対象の要素と同じ場所にまとめられます。PostCSSを使えば、古いブラウザ向けにネイティブNestingを変換できるため、現在から段階的に導入できます。

よくある質問

「ネイティブCSSネスティング」レッスンは無料ですか?

はい。「ネイティブCSSネスティング」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、CSS Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 CSS Academyコースには全4レッスンが含まれています。

「ネイティブCSSネスティング」で何を学びますか?

プリプロセッサを使わず、ネイティブCSSネスティング仕様に従ってCSSルールをネストします。 ブラウザで直接実行するハンズオンコードでCSS Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

CSS Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCSS Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「ネイティブCSSネスティング」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCSS Academyレッスンでコードを書いて実行できますか?

はい。すべてのCSS Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ネイティブCSSネスティング
  2. :has()関係擬似クラス
  3. スコープ付きスタイルのための@scope
  4. View Transitions API
← CSS Academyに戻る