Sass 函数指令
1. 前言
在之前的章节我们学习过 Sass 提供的各种各样的函数,那么如果我们需要自定定义函数来使用就需要用到函数指令 @function了。本节内容我们来学习 Sass 函数指令的语法和使用,在 Sass 中自定义函数是必须要掌握的!
2. 什么是 Sass 函数指令
3. 语法详情
函数指令是通过 @function 来定义,它的写法是 @function name(arguments…){},@function 后面跟函数名,然后是一个 () ,() 里面是这个函数接收的参数,可以接收也可以不接收,最后是 {} 中放的是你的逻辑代码。函数名将连字符和下划线视为相同,也就是说 a_b 和 a-b 是同一个函数。我们举例看下:
3.1 函数的参数
// 有默认值的参数
@function a($arg: ) {
@return $arg;
}
// 无默认值的参数
@function b($arg) {
@return $arg;
}
.p {
font: a();
font: b();
}
上面的代码转换为 CSS 如下:
.p {
font: ;
font: ;
}
要注意的是,为参数设置的默认值,也可以引用前面的参数或者是任何表达式。
3.2 接收任意数量的参数
@function fonts($familys) {
@return $familys;
}
.p {
font: fonts("one", "two", "three")
}
上面这段代码转换为 CSS 如下:
.p {
font: "one", "two", "three";
}
3.3 @return
在前面的代码中,可以看到很多次我们在函数指令中使用了 @return。@return 指令表示作为函数调用结果的值,说的简单点就是这个函数的返回值,这和在 javascript 的函数中使用 return 很类似。
在 Sass 中 @return 指令只能在 @function 中使用,并且每个 @function 都必须以 @return 结尾! 在 @function 的逻辑代码中,如遇到 @return 会立即结束函数并返回其结果,这在一些 @if 判断的情况下很有用。我们举例看下:
@function a($str: "a") {
@if $str == "a" {
@return px;
} @else if $str == "b" {
@return px;
} @else if $str == "c" {
@return px;
} @else {
@return px;
}
}
p {
padding: a();
width: a("f");
height: a("c");
margin: a("b");
}
p {
padding: px;
width: px;
height: px;
margin: px;
}
4. 实战经验
在实际的项目中使用函数指令是必不可少的,我们会定义很多函数来帮助我们解决逻辑问题,一般我们会独立抽出来一个 function.scss 文件来管理整个项目中的函数指令,一般这些函数都是根据你的项目特性以及样式需要封装出来的。