Строка вывода цикла Sass вместо числа

#css #loops #math #sass

#css #циклы #математика #sass

Вопрос:

Я хочу создать цикл, который создаст 8 разных классов с одинаковым включением, но с другим значением. Вот мой код:

 @for $i from 1 through 8 {
  $baseDelay: 0.4;
  .fade-in-#{$i} {
    @include animationDelay(#{$baseDelay} ((#{$i}-1)/2)s);
  }
}
  

Я должен получить это в качестве вывода для первого класса:

 .fade-in-1 {
  -webkit-animation-delay: 0.9s;
  animation-delay: 0.9s;
}  
  

Но вместо этого я получаю это как первый вывод:

 .fade-in-1 {
  -webkit-animation-delay: 0.4 (1-0.5) s;
  animation-delay: 0.4 (1-0.5) s;
}
  

Кто-нибудь может мне помочь? Я думаю, что проблема вызвана тем, что Sass считает, что что-то в сумме является укусом.

Ответ №1:

Вы можете использовать этот код.

Вот как выглядит мой миксин

 @mixin animationDelay($var) {
  -webkit-animation-delay: $var;
  animation-delay: $var;
}
  

И вот как выглядит мой цикл for

 @for $i from 1 through 8 {
  $baseDelay: 0.4;
  .fade-in-#{$i} {
    @include animationDelay( ($baseDelay   ($i - 1)/2)   s); 
    // I did the calculation first before adding the s for seconds
  }
}
  

И вот результат

 .fade-in-1 {
  -webkit-animation-delay: 0.4s;
  animation-delay: 0.4s; }

.fade-in-2 {
  -webkit-animation-delay: 0.9s;
  animation-delay: 0.9s; }

.fade-in-3 {
  -webkit-animation-delay: 1.4s;
  animation-delay: 1.4s; }

 .fade-in-4 {
  -webkit-animation-delay: 1.9s;
  animation-delay: 1.9s; }

 .fade-in-5 {
  -webkit-animation-delay: 2.4s;
  animation-delay: 2.4s; }

 .fade-in-6 {
  -webkit-animation-delay: 2.9s;
  animation-delay: 2.9s; }

 .fade-in-7 {
  -webkit-animation-delay: 3.4s;
  animation-delay: 3.4s; }

 .fade-in-8 {
  -webkit-animation-delay: 3.9s;
  animation-delay: 3.9s; }