0Pricing
CSS Academy · レッスン

Extendとプレースホルダーセレクター

@extendとサイレントプレースホルダーセレクターを使って、セレクター間でスタイルを共有します。

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

Sass の @extend

@extend を使用すると、あるセレクターが別のセレクターのすべてのスタイルを継承できます。コードを重複させる代わりに、コンパイル後の CSS に共有ルールセットが作成されます。

<div class="error">Error message</div>
  <div class="critical-error">Critical error message</div>

プレースホルダーセレクター

プレースホルダーセレクター(% が接頭辞)は、単独ではコンパイルされず、拡張された場合にのみ使用されるスタイルブロックを定義します。何かに拡張されない限り、CSS は生成されません。

<div class="product-card">Product card</div>
  <div class="profile-card">Profile card</div>

クラスよりプレースホルダーを使う理由

実際のクラスを拡張すると、そのクラスが置かれているセレクターコンテキスト全体がコンパイル後の出力に追加されます。プレースホルダーの方がすっきりしており、拡張元のセレクターだけをグループ化して出力します。

@extend のコンパイル結果

複数のセレクターが同じプレースホルダーを拡張すると、Sass はそれらをカンマ区切りのルールにまとめます:

<div class="product-card">Product card</div>
  <div class="profile-card">Profile card</div>

@extend の注意点

@extend には重要な注意点があります:

  • メディアクエリ内では使用できません
  • 拡張の連鎖が発生すると、予期しない大きなグループ化セレクターが生成されることがあります
  • コンパイル後の CSS を元のソースファイルまで追跡しにくくなります

@extend とミックスインのトレードオフ

比較:

  • @extend:CSS が小さくなります(ルールを共有)が、複雑なセレクターの連鎖やメディアクエリの制限があります
  • @mixin:宣言が重複しますが、より予測しやすく、メディアクエリ内でも使用できます

通常はミックスインの方が適しています

現在の Sass では、一般的に @extend よりもミックスインが推奨されます。HTTP/2 と gzip 圧縮により宣言の重複がそれほど問題にならない一方、ミックスインのデバッグしやすさは CSS サイズのわずかな違いを上回ります。

@extend が適している場合

@extend(プレースホルダーとの組み合わせ)が適しているのは、次のような場合です:

  • 複数のセレクターが同じ意味上の状態(エラー状態など)を本当に共有している
  • メディアクエリの内部ではない
  • 基になるスタイルが安定していて、明確に定義されている

プレースホルダーとテーマ設定

プレースホルダーは、複数のコンポーネントが継承するリセットに近いユーティリティセットに適しています:

<a href="#" class="skip-link">Skip to content</a>
  <span class="sr-label">Screen reader label</span>

非推奨化に関する考慮事項

複雑さや、発生する可能性のあるセレクターの肥大化を理由に、@extend を完全に禁止しているスタイルガイドやチームもあります。トレードオフを理解し、チームの規約に従ってください。

確認問題

通常のクラスを拡張する場合と、プレースホルダーセレクター(%)を拡張する場合の違いは何ですか?

まとめ

@extend を使用すると、セレクターが別のセレクターのスタイルを継承し、コンパイル後の CSS でセレクターがグループ化されます。プレースホルダー(%name)は拡張されるまで何もコンパイルされないため、実際のクラスを拡張するよりもすっきりします。メディアクエリ内での @extend は避けてください。現在の Sass では、予測しやすくデバッグしやすいミックスインが、一般的に @extend よりも推奨されます。

よくある質問

「Extendとプレースホルダーセレクター」レッスンは無料ですか?

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

「Extendとプレースホルダーセレクター」で何を学びますか?

@extendとサイレントプレースホルダーセレクターを使って、セレクター間でスタイルを共有します。 ブラウザで直接実行するハンズオンコードでCSS Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「Extendとプレースホルダーセレクター」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. 変数、ネスト、パーシャル
  2. ミックスインとインクルード
  3. Extendとプレースホルダーセレクター
  4. Sassの関数と制御フロー
← CSS Academyに戻る