2016-11-17 1 views
2

У меня есть этот подмешать:менее Смешение зацикливание классов, но с разными значениями

.myClass { 
     .nth(1); 
     .nth(2); 
    .nth(@i) { 
     &:nth-of-type(@{i}) { 
      transition-delay: 0.2s; 
     } 
    } 
} 

, что компилирует в чем-то вроде:

.myClass:nth-of-type(1) { 
    transition-delay: 0.2s; 
} 
.myClass:nth-of-type(2) { 
    transition-delay: 0.2s; 
} 

мой вопрос заключается в том, чтобы добавить различные значения для transition-delay, потому что в этом форма повторит то же значение, и мне нужно будет добавить разные значения и скомпилировать что-то вроде:

.myClass:nth-of-type(1) { 
    transition-delay: 0.5s; 
} 
.myClass:nth-of-type(2) { 
    transition-delay: 0.02s; 
} 

и т. Д.

+0

You 'd необходимо изменить ваш микшин, чтобы принять задержка, поскольку параметр (или) имеет ome math для вычисления задержки (например, 1-й элемент 1s, 2s для 2-го и т. д. будет означать @i * 1s). – Harry

+0

@ Харри Да, но я действительно не знаю, как это сделать :)) Возможно, используя индекс и разделив ... – BurebistaRuler

+0

Какой? Первый подход или последний? Имеет ли значение «задержка перехода» шаблон? – Harry

ответ

3

Поскольку вы не используете цикл, но просто вызываете mixin с требуемыми числами, вы можете добавить дополнительный параметр для значения задержки в определении mixin и использовать его, как в нижнем коде блок:

.myClass { 
    .nth(1; 0.2s); 
    .nth(2; 0.5s); 
    .nth(@i; @delay) { 
    &:nth-of-type(@{i}) { 
     transition-delay: @delay; 
    } 
    } 
} 

Или вы могли бы использовать цикл и массив, как в приведенном ниже блоке кода: (я рекомендую это только потому, что вам не нужно несколько вызовов подмешать.)

@delays: 0.2s, 0.5s, 0.75s; 
.myClass { 
    .nth-loop(@i; @delays) when (@i > 0){ 
    @delay: extract(@delays, @i); /* take the delay value corresponding to element number from array */ 
     &:nth-of-type(@{i}) { 
     transition-delay: @delay; 
     } 
    .nth-loop(@i - 1; @delays); 
    } 
    .nth-loop(3; @delays); 
}