有什么方法可以使用全局变量来设置 scss 属性吗?

Is there any ways to use global variables to set scss properties?

@mixin background-color($color) {
    background-color: $color;
}
$color:green;
.unit{
    &.red
    {
        $color:red !global;
    }
    &.blue
    {
        $color: blue !global;
    }
    @include background-color($color);
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 1px;
 }

大家好, 我正在为我的项目使用 SCSS。以上是代码。我正在创建具有多个 class 名称“.unit”和颜色的多个 div 元素。例如

<div classname="unit red">
1
</div>
<div classname="unit">
2 
</div>

我希望它能正常工作。unit 属性和背景颜色为红色,第一个和第二个为绿色。但是,它不是那样工作的,而是将 $color 属性 设置为最后设置的蓝色,忽略选择器。请帮忙解决这个问题。提前致谢。

首先,你应该为变量的第一个定义设置一个!default。之后,您应该为所有状态设置背景色。

html:

<div class="unit red">1</div>

<div class="unit">2</div>

css:

@mixin background-color($color) {
  background-color: $color;
}

$color: green !default;

.unit {
  @include background-color($color);
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 1px;
  
  &.red {
    $color: red;
    @include background-color($color);
  }
  
  &.blue {
    $color: blue;
    @include background-color($color);
  }
 }

此代码应该有效。