Могу ли я использовать элементы psuedo в качестве аргумента для scss mixin? - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть миксин, на который я ссылаюсь как «элемент» в качестве аргумента.

@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");
    }
}

Это прекрасно работает, если я ссылаюсь на a или p, например,

HTML

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

SCSS

div {
    @include themeParent(a);
}

Но я хочу также использовать миксин для псевдоэлементов, например.

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

или

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


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

это возможно?Почему то, что я делаю, делает SCSS недовольным: - (

1 Ответ

0 голосов
/ 23 ноября 2018

Вам просто нужно поместить свой аргумент в строку.

DEMO

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

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