引用一个类/混入没有完全导入LESS文件

我正在使用wordpress的根主题: https : //github.com/retlehs/roots/

它已经提供了一个预编译的bootstrap.css,并build议使用app.css进行任何自定义。 由于我没有select通过HTML或JavaScript将button添加到button,所以我想使用LESS来源来引用一个CSS类,例如,我想给一个提交button的引导button样式:

input#submit{ .btn; .btn-primary; } 

如果我使用@ @import 'bootstrap.less'; 它将整个bootstrap css添加到app.css中。 我怎样才能使用bootstrap.less作为编译的参考?

你问的核心问题是

“我怎么才能用bootstrap.less作为编译的参考?

截至LESS 1.5版

对于LESS 1.5,现在可以纯粹导入一个文件作为参考。 像这样:

 @import (reference) 'bootstrap.less'; 

没有实际的代码将从该文件输出为CSS,但所有可用作混合。

原始答复(保留所有评论的上下文)

[免责声明:目前还不确定这是否会在1.3.3版本中起作用,但是我相信这个原始的答案在后续版本中也有一些用处。 但是,为了真正获得OP所需的内容,build议使用LESS 1.5中的新function。]

LESS(1.3.3)的当前版本可以通过使用名称空间来适应这一点。 像这样:

 #bootstrapRef() { @import: 'bootstrap.less': } input#submit{ #bootstrapRef > .btn; #bootstrapRef > .btn-primary; } 

通过使命名空间混入(名称后面加上括号),它仍然会导入文件(我知道没有办法在没有导入的情况下从外部访问它),但它不应该将实际的引导代码编译到最终的CSS文件输出 。 这种技术应该做的是允许你通过命名空间调用#bootstrapRef >来访问引导的类,混合等等,这样就可以在你自己定义的类中使用这些类。

我还没有完全testing,如果有任何错误,这应该只是在理论上工作。

在LESS中做这件事有点棘手,但可以这样做:

 #bootstrap() { .btn() { @import "bootstrap/variables.less"; @import "bootstrap/mixins.less"; @import "bootstrap/buttons.less"; } } input#submit{ #bootstrap > .btn; } 

导致一些额外的类从mixins.less和variables.less声明。 大部分只是.clearfix ,然后所有的.btn类被添加到input#submit

看到这里的长输出:

http://pastebin.com/ZBAZZ3kS

我不确定在外部文件中是否有一个只导入当前引用CSS规则的工具,但Boostrap有一个非常有组织的结构,所以检查你正在寻找的样式是否在mixins.less ,所以你不必须导入整个bootstrap.less文件。

此外,检查这个相关的问题 ,有一些很好的自定义Boostrap最佳实践。

编辑:如@PavloMykhalovbuild议,也许是更好地看buttons.less

注意:这将是一个真棒工具这种事情。 有一天我会努力的

不知道是什么让你相信LESS目前支持这一点,为了这个可能,这个选项必须更加明确,目前它只是简单地导入,parsing,保存块,执行块到输出文本。

除非没有明确的停止这个顺序,否则不会有任何不同。

我刚刚在LESS下login了一个function请求,不知道这个请求是否已经被请求过了,search什么也没有发现,希望我不要被重复的打耳光!

https://github.com/cloudhead/less.js/issues/1169

更新问题原来是重复的,问题打开在这里: https : //github.com/cloudhead/less.js/issues/622