Можно ли динамически использовать имена переменных в каждом цикле SASS?

Это упрощенный пример. Я хотел бы использовать элементы в массиве для вывода значений переменных, которые я создал ранее. Синтаксис ниже, который пытается создать переменную путем конкатенации '$', явно неверен, но я использую его, чтобы прояснить, что я пытаюсь сделать.

$puma-width: 100px;
$slug-width: 200px;

@each $animal in puma, slug {
  .#{$animal}-title {
    width: $+#{$animal}-width;
  }
}

Желаемый результат:

.puma-title {
   width: 100px;
}
.slug-title {
   width: 200px;
}

2 ответа

Это то, что я хотел и в SASS, но после прочтения их дискуссионного списка я пришел к выводу, что этот тип интерполяции переменных еще не поддерживается.

Я не пробовал Less, но их документация предполагает, что это будет возможно с синтаксисом @@.

Альтернативой является передача карты вместо списка элементов для директивы @each. Следующее будет работать:

@each $animal, $width in (puma, 100px),
                         (slug, 200px) {
  .#{$animal}-title {
    width: #{$width};
  }
}
Другие вопросы по тегам