主题
function 函数
定义函数
使用 @function 关键字定义一个函数。函数可以接受参数,并返回一个值。示例如下:
scss
@function calculate-margin($value) {
@return $value * 1.5;
}调用函数
函数定义好之后,可以在样式表中使用,类似于变量的方式:
scss
.container {
margin: calculate-margin(10px);
}参数
函数可以接受多个参数,包括默认值。默认值在没有传递参数时使用。
scss
@function add-values($a, $b: 10) {
@return $a + $b;
}
.result {
width: add-values(5px); // 返回 15px
}返回值
函数必须有一个 @return 语句,用于返回计算后的值。
scss
@function double($number) {
@return $number * 2;
}内置函数
Sass 提供了许多内置函数,涵盖颜色操作、字符串操作、数值操作、列表操作等。例如:
lighten($color, $amount): 使颜色变亮darken($color, $amount): 使颜色变暗percentage($number): 将数值转换为百分比
嵌套函数
函数可以调用其他函数,从而实现复杂的计算。
scss
@function multiply($a, $b) {
@return $a * $b;
}
@function square($number) {
@return multiply($number, $number);
}递归函数
Sass 支持递归函数,但要注意避免无限递归。
scss
@function factorial($n) {
@if $n == 0 {
@return 1;
} @else {
@return $n * factorial($n - 1);
}
}使用场景
Sass 函数常用于以下场景:
- 复杂的数学运算
- 动态生成 CSS 属性值
- 颜色处理
- 字符串处理
- 代码抽象和重用
实例
以下是一个实际使用 Sass 函数的例子,计算元素的黄金比例宽度:
scss
@function golden-ratio($base) {
$ratio: 1.618;
@return $base * $ratio;
}
.box {
width: golden-ratio(100px); // 返回 161.8px
}内置模块
Sass 提供了一系列内置模块,包含许多有用的函数和混合器,可以帮助开发者简化和增强样式代码的编写。以下是一些常用的内置模块:
sass:color
作用: 提供颜色操作的函数,用于调整、比较和转换颜色。
常用函数:
scale-color(): 按比例调整颜色的属性。adjust-color(): 调整颜色的个别属性。change-color(): 改变颜色的个别属性。mix(): 混合两种颜色。invert(): 反转颜色。
示例:
scss@use 'sass:color'; $primary: #3498db; $darker: color.scale($primary, $lightness: -20%);
sass:list
作用: 提供列表操作的函数,用于创建、合并和操作列表。
常用函数:
append(): 将一个值添加到列表的末尾。index(): 返回列表中值的索引。length(): 返回列表的长度。nth(): 返回列表中指定位置的值。
示例:
scss@use 'sass:list'; $colors: red, green, blue; $colors: list.append($colors, yellow); // red, green, blue, yellow
sass:map
作用: 提供映射操作的函数,用于创建、合并和操作映射。
常用函数:
get(): 获取映射中指定键的值。set(): 设置映射中指定键的值。merge(): 合并两个映射。keys(): 返回映射的所有键。
示例:
scss@use 'sass:map'; $theme: ( primary: #3498db, secondary: #2ecc71, ); $primary-color: map.get($theme, primary); // #3498db
sass:math
作用: 提供数学操作的函数,用于执行基本数学运算。
常用函数:
abs(): 绝对值。ceil(): 向上取整。floor(): 向下取整。round(): 四舍五入。min(),max(): 最小值和最大值。
示例:
scss@use 'sass:math'; $number: -10.6; $absolute: math.abs($number); // 10.6
sass:string
作用: 提供字符串操作的函数,用于创建、操作和格式化字符串。
常用函数:
quote(),unquote(): 添加或移除引号。to-upper-case(),to-lower-case(): 转换为大写或小写。str-length(): 返回字符串的长度。slice(): 提取字符串的子字符串。
示例:
scss@use 'sass:string'; $greeting: 'Hello, world!'; $upper: string.to-upper-case($greeting); // "HELLO, WORLD!"
sass:meta
作用: 提供 Sass 元编程的函数,用于操作 Sass 语言的核心特性。
常用函数:
variable-exists(): 检查变量是否存在。global-variable-exists(): 检查全局变量是否存在。function-exists(): 检查函数是否存在。mixin-exists(): 检查混合器是否存在。
示例:
scss@use 'sass:meta'; @if meta.variable-exists(primary-color) { .element { color: $primary-color; } }
