2024.06.27

Sass

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

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

以下はhoverに対応しているデバイスを判定するmixinです。

// mixin.scss
@mixin is-hover() {
  @media (hover: hover) {
    @content;
  }
}

呼び出し側のscssは以下のように記述します。同じmixinを呼び出しますが、展開するスタイルセットは自由です。

// btn.scss
.c-btn-01 {
  background: #fff;
  color: #000;

  @include is-hover {
    background: #000;
    color: #fff;
  }
}

.c-btn-02 {
  background: #fff;
  color: #000;

  @include is-hover {
    opacity: .5;
  }
}

書き出しの結果は以下のようになります。

// btn.css
.c-btn-01 {
  background: #fff;
  color: #000;

  @media (hover: hover) {
    background: #000;
    color: #fff;
  }
}

.c-btn-02 {
  background: #fff;
  color: #000;

  @media (hover: hover) {
    opacity: .5;
  }
}

同様にブレイクポイントの判定にも利用できます。

// mixin.scss
@mixin is-mobile() {
  @media screen and (max-width: 768px;) {
    @content;
  }
}

関連記事

2024.08.02

Sass

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

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

2021.02.19

Sass

mixinでfont-sizeとletter-spacingを設定

htmlタグやbodyタグにfont-sizeの基準値を何も設定していない場合、1emを指定すると16pxで表示されます。20pxで表示したい場合は、20px …

2021.01.27

Sass

プロパティに変数でマイナス値を設定

プロパティに変数でマイナス値を設定するケースです。例えばマイナスmarginを設定する場合、値が単独の場合は以下のように記述すれば問題ありません。 ですがプロパ…

2022.05.11

Sass

Sassの@import

CSSの@importは以下のいずれかを記述します。 style.cssからabout.cssを読み込んでいるので、htmlではstyle.cssのみ読み込みま…

2025.07.05

Sass

mixinで@ifの条件分岐を利用して疑似要素を表示

mixinで@if(条件分岐)を利用して、疑似要素にグラデーションの点線ボーダーを表示します。mixinの設定は以下になります。 デフォルトの設定として要素の上…

上に戻る