我可以使用伪元素作为 scss mixin 的参数吗?

Can I use psuedo elements as an argument to a scss mixin?

我有一个 mixin,我引用 "element" 作为参数。

@mixin themeParent ($child) {
    &--blue #{$child} {
        color: getColour("theme", "bluehighlight");
    }

    &--green #{$child}  {
        color: getColour("theme", "greenhighlight");
    }

    &--purple #{$child}  {
        color: getColour("theme", "purplehighlight");
    }

    &--gossamer #{$child}  {
        color: getColour("theme", "gossamerhighlight");
    }

    &--black #{$child}  {
        color: getColour("theme", "black");
    }
}

例如,如果我引用 ap,这会很好用

HTML

<div class="div--blue">
    <a>blue link</a>
</div>

SCSS

div {
    @include themeParent(a);
}

但我还想将 mixin 用于伪元素,例如

div {
    @include themeParent(a:hover);
}

 div {
        @include themeParent(>a:hover);
    }


 div {
        @include themeParent(&:first-child);
    }

这可能吗? 为什么我正在做的事情让 SCSS 不开心:-(

你只需要将你的参数放在一个字符串中。

DEMO

@mixin themeParent($child) {
    &--blue #{$child} {
        color: blue;
    }
}

.cool {
  @include themeParent('a:hover');
  @include themeParent('&:first-child');
}