Задать вопрос
@ffklffkl

Как использовать ссылку на родительский селектор в миксине, не компилируя в каскад?

Есть миксин:
=notification-color($elem-class
  @each $color-postfix in green, yellow, red
    .#{$elem-class}_#{$color-postfix}
      color: $color-postfix

который используется так
.widget-content__icon
  font-size: 3em
+notification-color(".widget-content__icon")

На выходе получается следующее
.widget-content__icon {
  font-size: 3em; }

.widget-content__icon_green {
  color: green; }

.widget-content__icon_yellow {
  color: yellow; }

.widget-content__icon_red {
  color: red; }

А хотелось бы, чтобы получалось так же без прямой передачи аргумента-строки в миксин. Возможно ли это?(например с помощью +notification-color(&) компилируется с использованием каскада)
.widget-content__icon {
  font-size: 3em; }
  .widget-content__icon .widget-content__icon_green {
    color: green; }
  .widget-content__icon .widget-content__icon_yellow {
    color: yellow; }
  .widget-content__icon .widget-content__icon_red {
    color: red; }
  • Вопрос задан
  • 76 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Профессиональная вёрстка на HTML и CSS
    3 месяца
    Далее
  • GB (GeekBrains)
    Профессия Фронтенд-разработчик
    9 месяцев
    Далее
  • Хекслет
    Разработчик на Ruby on Rails
    5 месяцев
    Далее
Решения вопроса 1
bob_cody
@bob_cody
Используйте директиву @at-root в миксине:
@mixin notification-color($elem-class) {
  @each $color-postfix in green, yellow, red {
    @at-root #{$elem-class}_#{$color-postfix} {
      color: $color-postfix;
    }
  }
}

.widget-content__icon {
  font-size: 3em;
  @include notification-color(&);
}


На выходе получится:
.widget-content__icon {
  font-size: 3em;
}
.widget-content__icon_green {
  color: green;
}
.widget-content__icon_yellow {
  color: yellow;
}
.widget-content__icon_red {
  color: red;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы