2025.07.05

Sass

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

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

@mixin grd-dotted-line($top: false, $bottom: true) {
  position: relative;
  z-index: 0;

  &::before,
  &::after {
    display: block;
    position: absolute;
    z-index: -1;
    inset: 0;
    background: linear-gradient(90deg, #0016A7 -0.28%, #007FF9 99.93%);
    mask-image: repeating-linear-gradient(90deg, #fff 0 4px, transparent 4px 8px);
    mask-size: 100% 2px;
    mask-repeat: no-repeat;
  }

  @if $top {
    &::before {
      content: "";
      mask-position: top;
    }
  }

  @if $bottom {
    &::after {
      content: "";
      mask-position: bottom;
    }
  }
}

デフォルトの設定として要素の上部のボーダーは無し($top: false)、下部のボーダーは有り($bottom: true)です。@ifの条件分岐でtrueの場合のみcontentプロパティとmask-positionプロパティを出力します。

mixinの読み込みの記述は以下になります。クラス名products__list-itemの最初の要素のみ上部と下部のボーダーを表示し、他の要素は下部のボーダーのみ表示します。@includeで引数を指定しなければ、mixinで設定した初期値が適用されます。

.products__list {
  &-item {
    @include grd-dotted-line;

    &:first-child {
      @include grd-dotted-line($top: true, $bottom: true);
    }
  }
}

関連記事

2021.03.29

Sass

@at-rootによるルートへの書き出しと@keyframes

通常通りSassをコンパイルした場合、ネストされたルールセットをルートに書き出すことはできません。 コンパイル後のCSSは以下のようになります。 クラス名con…

2021.07.24

Sass

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

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

2021.01.27

Sass

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

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

2021.01.26

Sass

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

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

2022.07.13

Sass

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

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

上に戻る