2015-02-09 73 views
0

我已经继承了一大堆CSS的项目,并被分配了修改它的任务,因此可以很容易地更改调色板。“减少”一个CSS颜色主题

我已经立即想到使用CSS预处理器,尝试减少和轻松地切换变量的颜色,所以我只需要定义基本颜色,并可以切换颜色主题。

问题是,每次切换颜色主题时,我必须用新颜色设置覆盖colors.less,或者在大量文件中修改colors.less导入。

我想要的是带有大量导入的单个文件(基本上每个组件或一组组件),并在该文件导入colors.red.less而不是颜色blue.less例如,在使用红色调色板之后立即导入所有组件,以便编译的主题是红色而不是蓝色。

我遇到的问题是组件文件没有得到颜色定义的“全局变量”,所以我无法编译导入这些文件的基本文件。

我读过有可能使用“partials”(以_开头的文件不会独立编译,而是导入并编译),但我的编译器似乎忽略了这个功能,而eclipse插件我用于编辑和验证较少的文件也抱怨没有在这些部分上定义的颜色变量。

我怎样才能得到部分工作?有没有更好的方法来完成这项任务?

+1

当使用更少的创建主要是一个一个的项目文件。该项目文件导入您的其他文件(由您调用的部分)。你只能将你的项目文件编译成CSS。编译哪些文件取决于您的构建过程。以bootstrap为例,只有'bootstrap.less'文件将被编译。 – 2015-02-09 21:44:18

+0

是的,只有所有导入单独编译,然后放在一个输出CSS上,而不是放在一起然后编译。这就是为什么我的项目没有编译:我需要在导入的文件上声明的变量对所有以下导入都可见。 – NotGaeL 2015-02-09 21:49:24

+0

较少使用延迟加载和最后一次声明获胜,因此您可以在之后定义变量,请参阅:http://lesscss.org/features/#variables-feature-lazy-loading – 2015-02-09 22:05:34

回答

1

Stil,它们将不会在导入的文件上定义,只是在主文件上,所以>编译将在导入的文件上中断。你明白我的意思吗?

不是吗?例如:

mixins.less:

.mixin() 
{ 
    color: @color; 
} 

variables.less:

@color: orange; 

project.less:

@import "mixins"; 
@import "variables"; 
p { 
.mixin(); 
} 

现在运行lessc project.less输出:

p { 
color:orange; 
} 

现在我改变的project.less内容如下:

@import "mixins"; 
@import "variables"; 
p { 
.mixin(); 
} 
@color: red; 

然后运行lessc project.less输出:

p { 
color:red; 
} 
+0

棒极了!事实证明这是编译器的eclipse插件设置中的一个问题。不知何故该插件编译的不仅仅是主文件,所以它在编译主文件之前停止了错误,这就是为什么我根本没有编译输出(我仍然要弄清楚如何避免编辑器给我一个未定义的错误在每一行我使用这些变量的每个部分文件,但我可以忍受这一点)。非常感谢您的耐心;-) – NotGaeL 2015-02-10 16:55:51