ホームページ  >  記事  >  ウェブフロントエンド  >  セレクターの末尾にアンパサンド(&)を使用する場合にSASS Mixinで親セレクターを拡張するにはどうすればよいですか?

セレクターの末尾にアンパサンド(&)を使用する場合にSASS Mixinで親セレクターを拡張するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-28 12:52:02968ブラウズ

How to Extend Parent Selectors in SASS Mixins When Using the Ampersand (&) at the End of a Selector?

SASS セレクターのアンパサンド (&): 親スコープの拡張

SASS では、アンパサンド (&) 記号は、親セレクターを拡張します。これにより、親セレクター自身のクラス名を含む方法で、ミックスイン内にルールをネストすることができます。ただし、セレクターの末尾にアンパサンドを使用すると、特有の課題が生じます。

問題は、セレクターに呼び出し元のクラス名が含まれていることを確認することにあります。次の Sass ミックスインについて考えてみましょう:

<code class="sass">@mixin button-variant($color, $background, $border) {
    ...
    .foreverAlone {
        ...
    }

    .iThink .illNeverWork&amp; {
        color: $pinkUnicornRainbow;
        ...
    }
}</code>

このミックスインが別の CSS クラス内で呼び出される場合、生成されたコードには呼び出し元のクラス名が含まれません。代わりに、

<code class="css">.foreverAlone {
    ...
}

.iThink .illNeverWork.callerClass {
    color: #123ABC;
    ...
}</code>

この問題を解決するには、次のテクニックを利用できます:

Sass バージョン 3.2 以前:

  • 複数のセレクターの使用: アンパサンド (&) が一貫して使用されるように、各セレクターをコンマで区切ります。
<code class="sass">@mixin button-variant($color, $background, $border) {
    ...
    .foreverAlone,
    .iThink &amp;.illNeverWork {
        color: $pinkUnicornRainbow;
        ...
    }
}</code>

Sass バージョン 3.3:

  • ハイフン付き構文: ハイフン付き構文を使用して親セレクターを拡張します。
<code class="sass">@mixin button-variant($color, $background, $border) {
    ...
    .iThink &amp;-illNeverWork {
        color: $pinkUnicornRainbow;
        ...
    }
}</code>

Sass バージョン 3.4:

  • アットルート ルール: 親セレクターを保持する変数を定義し、@at-root ルールを使用してそれを拡張します。
<code class="sass">@mixin button-variant($color, $background, $border) {
    ...
    $parent: &amp;;
    @at-root .iThink#{&amp;} {
        color: $pinkUnicornRainbow;
        ...
    }
}</code>

これらの手法を実装すると、ミックスイン内の親セレクターを効果的に拡張でき、生成されたコードに呼び出し元のクラス名が含まれるようになります。

以上がセレクターの末尾にアンパサンド(&)を使用する場合にSASS Mixinで親セレクターを拡張するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。