SASS 遮蔽和流控制详细介绍

2021年3月16日16:34:54 发表评论 838 次浏览

遮蔽和流量控制是更改值的方法变量。当我们使用SASS库时, 这两种方法非常有用。我们将一一讨论。

阴影:

可以使用与全局变量相同的名称声明局部变量。如果这样做, 则该变量在本地范围内的值将是该变量在本地范围内的值, 而不是全局值。请参阅以下示例:

SASS文件:

$global_local: global-value;

ul {
    $global_local: local-value;
    width: $global_local; 
}

span {
    width: $global_local;
}

编译的CSS文件:

ul {
  width: local-value;
}

span {
  width: global-value;
}

现在, 如果要在条件执行的某个时刻或出于任何原因更改全局变量的值, 该怎么办? SASS允许我们在局部变量声明之后使用!global来执行此操作。这个概念叫做"阴影"因为使用!global更改全局变量值会反映在整个文档中, 而不仅仅是在!global表达式之后。

SASS文件:

$global_local: global-value;

ul {
    $global_local: local-value !global;
    width: $global_local; 
}

span {
    width: $global_local;
}

编译的CSS文件:

ul {
  width: local-value;
}

span {
  width: local-value;
}

注意:!global只能用于已经声明的变量, 否则在编译时会产生错误。

用法:当你使用SASS库并且要更改在该库中声明的全局变量的值时, 将使用它。

流控制

你可以使用流控制编译来更改变量的值。在这里, 变量的值将在流控制块之后更改。之前的变量值将保持不变。请参阅以下示例:

SASS文件:

// This is default mode
$background-color-alpha: 0.5;


@mixin flow-control($dark-mode) {

  // If you want to have dark mode then 
  // use flow-control to make the color dark
  @if $dark-mode {
    $background-color-alpha: 1 !global;
  }

  background-color: rgba(250, 0, 100, $background-color-alpha);
  display: block;
  border-radius: 15px;
  color: white;

}

.button {
  @include flow-control(true);
}

编译的CSS文件:

.button {
  background-color: #fa0064; // rgba(250, 0, 100, 1);
  display: block;
  border-radius: 15px;
  color: white;
}

用法:当我们编写自己的SASS库并且希望允许用户使用条件编译来更改全局变量值时, 这特别有用。


木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: