Стилус: итерация нескольких селекторов для одного правила

Я хочу перебрать селектор с другим номером, чтобы создать несколько селекторов, разделенных запятыми, назначенными одному правилу.

Я сделал поиск, но не нашел подобного примера в документации.

Я пытался с помощью следующего кода:

for num in (1..6)
  .foo-{num}
    color #dfd

Но получите несколько правил тоже.

Я хотел бы добиться следующего:

.foo-1,
.foo-2,
.foo-3,
.foo-4,
.foo-5,
.foo-6 {
  color: #dfd;
}

3 ответа

Решение
join(range)
  str = ''
  for n in range
    str += ',.foo-' + n

{join(1..5)}
  color: #dfd

http://stylus-lang.com/docs/iteration.html

РЕДАКТИРОВАТЬ: решение проблемы, указанной в комментарии

multisize(sizes, before, after)
  str = ''
  for size in sizes
    str += before + size + after + ','

{multisize(xs sm lg, 'cs.btn-', '.btn-blue:hover')}
  color: #dfd

Если вы используете @extend Вы получаете селекторы, разделенные запятой, вы можете использовать селектор-заполнитель для правил:

стилус

$rules
  color #dfd

for num in (1..6)
  .foo-{num}
    @extend $rules

Выход

.foo-1,
.foo-2,
.foo-3,
.foo-4,
.foo-5,
.foo-6 {
  color: #dfd;
}

Этого также можно добиться с помощью +cache(key), где key уникальная строка

      for num in (1..6)
  .foo-{num}
    +cache('foo')
      color #f00
      .foo-1,
.foo-2,
.foo-3,
.foo-4,
.foo-5,
.foo-6 {
  color: #f00;
}
Другие вопросы по тегам