Sass 编译为CSS时如何覆盖SCSS变量

Sass 编译为CSS时如何覆盖SCSS变量,sass,compass-sass,jqtouch,Sass,Compass Sass,Jqtouch,我尝试使用基于SASS和COMPASS的jqtouch主题。我有一个文件custom.scss,其中包含最简单的代码、一个导入和一个要覆盖的变量: @import 'jqtouch'; // Override variables $base-color: #fe892a;/* The default base which is later used for toolbar, list, and button backgrounds.*/ 当我现在将scss文件编译成css时,它基本上只会用我

我尝试使用基于SASS和COMPASS的jqtouch主题。我有一个文件custom.scss,其中包含最简单的代码、一个导入和一个要覆盖的变量:

@import 'jqtouch';

// Override variables
$base-color: #fe892a;/* The default base which is later used for toolbar, list, and button backgrounds.*/
当我现在将scss文件编译成css时,它基本上只会用我的文件名生成jqtouch css。虽然根据文档()和jqtouch.scss文件(我导入该文件是为了进行成本优化),该变量确实是正确的,但颜色规范仍然不见踪影

我正在Windows计算机上运行Sass 3.2.9和Compass 0.12.2

我尝试了更多的变量和不同的文件导入,但结果总是,我的覆盖值没有合并

compass的ruby配置文件似乎没有什么可疑之处

是否有人知道在这个过程中出现了什么错误,从而忽略了我的覆盖值?

您正在设置已经使用过的颜色。基本上,你要做的是:

$color: red;

.foo {
    background: $color;
}

$color: green;
根据jqtouch的编写方式,您可能根本无法修改颜色。您需要将变量设置为默认值,以便提前覆盖它们:

$color: green;
$color: red !default; // red is only used if $color is not already set

.foo {
    background: $color; // color is green
}
因此,您的代码应该这样编写:

// Override variables
$base-color: #fe892a;/* The default base which is later used for toolbar, list, and button backgrounds.*/

@import 'jqtouch';

不幸的是,这不是它,当然你的设置是我如何开始的,但它也不适合我。正如在导入文件(jqtouch.scss)中所证明的那样,变量的值被硬编码为颜色值。因此,它们不能被覆盖。我只是注释了硬编码的值,然后可以设置我自己的值。我们是在看同一个源吗?因为我看到的那个使用默认值:不,我们没有。谢谢你。我自己也没有找到来源,也不知道有人在摆弄它。但是看看“apple”src文件。在这里重写$base color将导致与我处理的问题相同的问题:没有导入_apple.scss文件。Jqtouch.scss导入包括/core,后者依次导入动画、基础和骨架。正如导入文件(Jqtouch.scss)中所示,变量的值被硬编码为颜色值。因此,它们不能被覆盖。我只是注释了硬编码的值,然后可以设置自己的值。我有一个类似的问题,并提出了自己的解决方案: