我的最终目标是创建一个模板文件,我可以为不同的页面修改。
我的方法是创建template.scss
和modifier.scss
在template.scss
中设置了
$background: green;
background: $background
在modifier.scss
中设置了
@import 'template';
$background: red;
并期望背景改变,但没有任何反应 显然这是错误的方法,我应该怎么做?
答案 0 :(得分:1)
这是正确的,因为这种方法不起作用。想想如何解释这些文件。
示例强>
template.scss
$background: green;
background: $background
modifier.scss
@import 'template';
$background: red;
在这种情况下,你基本上是这样做的:
$background: green;
background: $background
$background: red;
最终效果background
设置为green
,$background
变量最终重新定义为red
。
您需要在background: $background
内再次定义modifier.scss
,以便让您当前的设置正常工作。
不同的方法
一种方法是在一个文件中定义基本样式,在另一个文件中定义修改器样式,然后在最终文件中设置CSS属性。像这样:
template.scss
$background: green;
modifier.scss
$background: red;
styles.scss
background: $background;
答案 1 :(得分:0)
variables-template.css (仅包含变量)
$background: green;
variables-modifier.css (仅包含变量)
$background: red;
styles-template.css (包含您的样式)
body { background-color: $background; }
main.css (包含您的输入逻辑)
@import 'variables-template.css';
@import 'variables-modifier.css';
@import 'styles-template.css';
已经为这种情况创造了草莓!
请参阅StrawberrySass。
答案 2 :(得分:0)
您可以在!default
中将该变量设为 template.scss
,然后在modifier.scss
中以不同的顺序导入后一个文件。
Variable Defaults: !default (Sass参考)
在template.scss
$background: green !default;
background: $background;
然后在modifier.scss
$background: red;
@import 'template';
绿色不应该分配给变量,如果它已经设置为红色,modifier.scss
就是这种情况(编辑:s /不会/不应该我还没有测试它谐音)