Скобки примешивания необязательны при вложении?

Учтите следующее:

.flashing {

    .flashKeyFrames(fade-in;{
        0%, 100% {opacity: 1;}
        50% {opacity: 0;}
        });

    .flashing(fade-in linear infinite alternate; 1s)

}

.flashKeyFrames(@name; @arguments) {
    @-moz-keyframes @name { @arguments(); }
    @-webkit-keyframes @name { @arguments(); }
    @keyframes @name { @arguments(); }
}

.flashing(@arguments, @duration) {
    -webkit-animation: @arguments;
    -moz-animation: @arguments;
    animation: @arguments;

    -webkit-animation-duration: @duration;
    -moz-animation-duration: @duration;
    animation-duration: @duration;
}

Какие скобки обязательно после @arguments? Я думал, скобки необязательны при использовании в качестве примесей? Итак, я предполагаю, что @arguments не определяется как миксин, но тогда что это?


person user6237576    schedule 04.05.2016    source источник


Ответы (1)


Нет, @arguments, используемый в .flashKeyFrames, не миксин. Это аргумент, который передается миксину. Набор значений, установленный для этого аргумента, представляет собой отдельный набор правил и для работы отдельного вызова набора правил скобки () в конце являются обязательными. Ниже приводится выдержка с веб-сайта Less:

Круглые скобки после вызова отдельного набора правил являются обязательными. Вызов @detached-ruleset; НЕ будет работать.

Скобки необязательны только при вызове миксина, а не набора правил.

person Harry    schedule 04.05.2016