2022.07.13

Sass

@extendのプレースホルダーセレクタを利用

@extend専用のプレースホルダーセレクタは「%セレクタ名」のように記述します。@extendのプレースホルダーセレクタはCSSとして生成されません。

以下のhtml構造でボタン用のCSS生成に、@extendのプレースホルダーセレクタを利用します。

<div class="c-btn">
  <a class="c-btn-link">リンクテキスト</a>
</div>

<div class="c-btn -black">
  <a class="c-btn-link">リンクテキスト</a>
</div>

<div class="c-btn -small">
  <a class="c-btn-link">リンクテキスト</a>
</div>

Sassは以下のように記述します。

.c-btn {
  &-link {
    @extend %button-style;

    .-black & {
      color: #000000;
      border: 1px solid #000000;
    }

    .-small & {
      font-size: 12rem;
    }
  }
}

%button-style {
  font-size: 24rem;
  font-weight: bold;
  color: #ff0000;
  display: inline-block;
  padding: 20px;
  border: 1px solid #ff0000;
}

コンパイル後のCSSは以下になります。プレースホルダーセレクタである「button-style」はCSSとして生成されていないのが確認できます。

.c-btn-link {
  font-size: 24rem;
  font-weight: bold;
  color: #ff0000;
  display: inline-block;
  padding: 20px;
  border: 1px solid #ff0000;
}

.-black .c-btn-link {
  color: #000000;
  border: 1px solid #000000;
}

.-small .c-btn-link {
  font-size: 12rem;
}

関連記事

2020.09.30

Sass

Koalaで発生したコンパイルエラーの対処法

Koalaで発生したコンパイルエラーの対処法です。発生したエラーはログから確認できますが、Koalaの起動を終了するとエラーログは消去されます。 Argumen…

2024.08.02

Sass

ローカル変数をスタイルセットの外側で使用

通常Sassのローカル変数はスタイルセットの外側で使用することができません。セレクタ名の一部で変数を使用する場合、以下のように記述すると定義されていない変数を参…

2021.07.24

Sass

16進数のRGB値に透明度を指定

CSSでは16進数のRGB値に透明度を指定することはできません。例えば以下のような指定はエラーになり、背景色が適用されません。 Sassではrgba();という…

2024.06.27

Sass

@contentを利用してmixinにスタイルセットを渡す

mixinの中で@contentを記述すると、呼び出し側から渡されたCSSの記述(スタイルセット)を@contentが書かれた場所で展開します。 以下はhove…

2021.01.26

Sass

インターポレーションの利用

インターポレーションは変数が参照できない場所でも使うことができるようにする機能です。通常Sassの変数はプロパティ値から参照して使用します。この場合インターポレ…

上に戻る