2013-08-28 60 views
0

我試圖採用較1.4擴展功能,我的代碼庫擴展用途的混入,卻發現它會輸出所有mixin秒。例如:如何讓LESS忽略輸出

.DefaultFont { 
    font: 12px/1.5 sans-serif; 
} 
.NoPaddingMargin { 
    padding: 0; 
    margin: 0; 
} 

body:extend(.DefaultFont all, .NoPaddingMargin all) { 

} 

這產生

.DefaultFont, 
body { 
    font: 12px/1.5 sans-serif; 
} 
.NoPaddingMargin, 
body { 
    padding: 0; 
    margin: 0; 
} 

但我不想在輸出.DefaultFont.NoPaddingMargin

我試圖使.DefaultFont.NoPaddingMargin作爲參數混合(.DefaultFont() {}body:extend(.DefaultFont() all) {})來避免輸出,但似乎解析器不能識別它。

在手寫筆中有%用於此目的。有什麼方法可以在LESS中做同樣的事情嗎?由於提前

回答

1

眼下LESS不支持你想要的東西,它的延伸只能使用而不是參數混合(參見https://github.com/less/less.js/issues/1177)。 因此,您必須接受CSS輸出中的dummy.DefaultFont/.NoPaddingMargin選擇器,或者回退到保守的mixin擴展而不是擴展。

1

如果你定義一個類時,你可以重複使用另一個規則集內的類:

.DefaultFont { 
    font: 12px/1.5 sans-serif; 
} 

通過調用它像這樣用在另一個規則集:

.DefaultFont();

如果你想以防止.DefaultFont被編譯爲一個css規則集本身,然後在末尾添加()

.DefaultFont() { 
    font: 12px/1.5 sans-serif; 
} 

您仍然以相同的方式使用它,但這不會被編譯爲規則集。

編輯:

http://lesscss.org/#-parametric-mixins

聲明中混入與()將防止它被編譯。沒有參數或缺省值的mixin不要求使用mixin來僅需要混合的聲明。

您還可以使用不帶參數的參數混合。如果你想隱藏的CSS輸出的規則集這 是有用的,但 想在其他規則集的屬性:

+0

THX,但'體:延伸(。DefaultFont()all){}'無法編譯 – xiaoyi

+0

我在說聲明它,而不是用法。另外我實際上並不知道你從哪裏得到':extend',因爲它不是LESS文檔的一部分。 – Phill

+1

LESS落後於文檔。 'extend()'特性在1.4版本的beta測試中增加了,這裏給出了一些文檔:https://github.com/less/less.js/blob/master/CHANGELOG.md#140-beta- 1--2。 – ScottS

0

您正在嘗試錯誤地使用:extend,因爲該功能的全部要點是擴展原始選擇器的聲明。如果你只是想body有類的屬性,你需要包括他們到它通過正常的mixin:

body { 
    .DefaultFont; 
    .NoPaddingMargin; 
} 
+0

謝謝,這是對問題的示範。不尋找替代解決方案。 – xiaoyi