引用一个类/混入没有完全导入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
看到这里的长输出:
我不确定在外部文件中是否有一个只导入当前引用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