内置模块 Built-In Modules

兼容性: Dart Sass since 1.23.0 | LibSass ✗ | Ruby Sass ✗

Sass 提供了许多内置模块,其中包含有用的函数(以及偶尔的 mixin)。 这些模块可以像任何用户定义的样式表一样使用 @use 规则 加载,并且它们的函数可以像任何其他模块成员一样。 所有内置模块 URL 都以 sass: 开头,表示它们是 Sass 本身的一部分。

⚠️ 注意!

在引入 Sass 模块系统之前,所有 Sass 函数在任何时候都是全局可用的。 许多函数仍然有全局别名(这些在它们的文档中列出)。 Sass 团队不鼓励使用它们,并最终会弃用它们,但目前它们仍然可以与旧的 Sass 版本和 LibSass(尚不支持模块系统)兼容。

即使在新的模块系统中,一些函数也只能在全局范围内使用,因为它们具有特殊的评估行为(if())或者因为它们在内置 CSS 函数(rgb() 和 hsl())之上添加了额外的行为。 这些不会被弃用,可以自由使用。

scss
Scss
scss
@use "sass:color";

.button {
  $primary-color: #6b717f;
  color: $primary-color;
  border: 1px solid color.scale($primary-color, $lightness: 20%);
}

Sass 提供以下内置模块:

Global Functions

hsl($hue $saturation $lightness)
hsl($hue $saturation $lightness / $alpha)
hsl($hue, $saturation, $lightness, $alpha: 1)
hsla($hue $saturation $lightness)
hsla($hue $saturation $lightness / $alpha)
hsla($hue, $saturation, $lightness, $alpha: 1) //=> color
Compatibility (Level 4 Syntax): Dart Sass since 1.15.0 | LibSass ✗ | Ruby Sass ✗

LibSass 和 Ruby Sass 仅支持以下签名: hsl($hue, $saturation, $lightness) hsla($hue, $saturation, $lightness, $alpha) 请注意,对于这些实现,如果使用函数名 hsla() 则需要 $alpha 参数,如果使用函数名 hsl() 则禁止使用。

Compatibility (Percent Alpha): Dart Sass ✓ | LibSass ✗ | Ruby Sass since 3.7.0

LibSass 和旧版本的 Ruby Sass 不支持指定为百分比的 alpha 值。

返回具有给定 色调、饱和度和亮度 和给定 alpha 通道的颜色。

色调是介于“0deg”和“360deg”(含)之间的数字,可以没有单位。 饱和度和亮度是介于“0%”和“100%”(含)之间的数字,可能_not_没有单位。 Alpha 通道可以指定为 0 到 1(含)之间的无单位数字,或 0% 到 100%(含)之间的百分比。

💡 有趣的事实:

您可以传递 特殊函数,例如 calc()var() 来代替 hsl() 的任何参数。 您甚至可以使用 var() 代替多个参数,因为它可能被多个值替换! 当以这种方式调用颜色函数时,它会使用与调用时相同的签名返回一个不带引号的字符串。

scss
Scss
scss
@debug hsl(210deg 100% 20% / var(--opacity)); // hsl(210deg 100% 20% / var(--opacity))
@debug hsla(var(--peach), 20%); // hsla(var(--peach), 20%)

⚠️ Heads up!

Sass’s special parsing rules for slash-separated values make it difficult to pass variables for $lightness or $alpha when using the hsl($hue $saturation $lightness / $alpha) signature. Consider using hsl($hue, $saturation, $lightness, $alpha) instead.

scss
Scss
scss
@debug hsl(210deg 100% 20%); // #036
@debug hsl(34, 35%, 92%); // #f2ece4
@debug hsl(210deg 100% 20% / 50%); // rgba(0, 51, 102, 0.5)
@debug hsla(34, 35%, 92%, 0.2); // rgba(242, 236, 228, 0.2)
css
if($condition, $if-true, $if-false)

如果 $conditiontruthy,则返回 $if-true,否则返回 $if-false
此函数的特殊之处在于它甚至不会评估未返回的参数,因此即使未使用的参数会引发错误,调用它也是安全的。

scss
Scss
scss
@debug if(true, 10px, 15px); // 10px
@debug if(false, 10px, 15px); // 15px
@debug if(variable-defined($var), $var, null); // null
scss
rgb($red $green $blue)
rgb($red $green $blue / $alpha)
rgb($red, $green, $blue, $alpha: 1)
rgb($color, $alpha)
rgba($red $green $blue)
rgba($red $green $blue / $alpha)
rgba($red, $green, $blue, $alpha: 1)
rgba($color, $alpha) //=> color

Compatibility (Level 4 Syntax): Dart Sass since 1.15.0 | LibSass ✗ | Ruby Sass ✗

Compatibility (Percent Alpha): Dart Sass ✓ | LibSass ✗ | Ruby Sass since 3.7.0

If $red, $green, $blue, and optionally $alpha are passed, returns a color with the given red, green, blue, and alpha channels.

每个通道都可以指定为 0 到 255(含)之间的 unitless 数字,或 0% 到 100%(含)之间的百分比。 Alpha 通道可以指定为 0 到 1(含)之间的无单位数字,或 0% 到 100%(含)之间的百分比。

💡 有趣的事实:

您可以传递 特殊函数,例如 calc()var() 来代替 rgb() 的任何参数。 您甚至可以使用 var() 代替多个参数,因为它可能被多个值替换! 当以这种方式调用颜色函数时,它会使用与调用时相同的签名返回一个不带引号的字符串。

scss
Scss
scss
@debug rgb(0 51 102 / var(--opacity)); // rgb(0 51 102 / var(--opacity))
@debug rgba(var(--peach), 0.2); // rgba(var(--peach), 0.2)

⚠️ Heads up!

Sass’s special parsing rules for slash-separated values make it difficult to pass variables for $blue or $alpha when using the rgb($red $green $blue / $alpha) signature. Consider using rgb($red, $green, $blue, $alpha) instead.

scss
Scss
scss
@debug rgb(0 51 102); // #036
@debug rgb(95%, 92.5%, 89.5%); // #f2ece4
@debug rgb(0 51 102 / 50%); // rgba(0, 51, 102, 0.5)
@debug rgba(95%, 92.5%, 89.5%, 0.2); // rgba(242, 236, 228, 0.2)

如果传递了 $color$alpha,这将返回带有给定 $alpha 通道的 $color 而不是其原始的 alpha 通道。

scss
Scss
scss
@debug rgb(#f2ece4, 50%); // rgba(242, 236, 228, 0.5);
@debug rgba(rgba(0, 51, 102, 0.5), 1); // #003366