2016-12-14 56 views
0

我已經搜索了互聯網並嘗試了多個代碼,但無法找出這一個。希望你能成爲助手。減少後衛不能使用mixin的多個參數

問題:當mixin有多個值時,不會觸發Guard。

Button.less

/* CTA Box */ 
    &ctabox { 
    .inline-box(@lightergrey); 

    &__header { 
     display: inline-block; 
     margin: 5px 0; 
     .font(@size: 18px, @weight: 700); 
    } 

    &__button { 
     .button(@style: @orange); 
     .button-icon-right(); 
    } 

    } 

正如你可以看到我用按鈕()混入,@style:@orange作品,並觸發這個後衛:

.button(@style) when (@style = @orange) { 
    /* Rendered mixin: Button @style when @orange */ 
    color: #FFF; 

    &:hover, &:focus { 
    background: @lightorange; 
    color: #FFF; 
    } 

} 

但是,當我使用這個:

&__button { 
    .button(@style: @orange, @width: 100%); 
    .button-icon-right(); 
} 

警衛不再被觸發,儘管按鈕@style仍然是@橙色。 任何人都可以解釋這種行爲?

+0

只是爲了證明,代碼運行沒有任何錯誤從終端。 –

+0

查看[Mixins with Multiple Parameters]的最後一段(http://lesscss.org/features/#mixins-parametric-feature-mixins-with-multiple-parameters)。 –

回答

0

好的,經過一番挖掘,似乎提到mixin函數的所有參數都是要走的路。而不是僅僅.button(@style),我將它改爲.button(@style,@width),現在守衛正常運行。

.button(@style, @width) when (@style = @orange) { 
    /* Rendered mixin: Button @style when @orange */ 
    color: #FFF; 

    &:hover, &:focus { 
    background: @lightorange; 
    color: #FFF; 
    } 

}