SASS: добавить псевдокласс к амперсанду дедушки и бабушки - PullRequest
0 голосов
/ 10 мая 2018

Этот код SASS ...

@mixin test
{
  @at-root #{selector-replace(&, '.class1', '.class1:nth-child(odd)')}
  {
    color:red;
  }
}

.class1
{
  .class2
  {
     @include test;
  }
}

... компилируется в:

.class1:nth-child(odd) .class2
{
  color: red;
}

Возможно ли это, если не использовать селектор-заменить (потому что я не знаю, какclass1 называется)?

Я просто хочу добавить селектор n-го ребенка к прародителю.

Мне разрешено изменять только миксин, а не исходный код.

1 Ответ

0 голосов
/ 10 мая 2018

Хорошо, это поможет:

@mixin test
{

  // Find the first selector
  $parent : nth(nth(&, 1), 1);

  // Defines a list for the rest of the selectors
  $rest : ();

  // For each selector of &, starting from the second
  @for $i from 2 through length(nth(&, 1)) {

    // Adds the selector to the list of the "rest of the selectors"
    $rest: append($rest, nth(nth(&, 1), $i));

  }

  // Adds the selector at root
  @at-root #{$parent}:nth-child(odd) #{$rest} {
    color: red;
  }

}

.class1
{
  .class2
  {
    @include test;
  }
}

Это компилируется в:

.class1:nth-child(odd) .class2 {
  color: red;
}

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...