2013-08-28 91 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