携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第11天,点击查看活动详情
SASS/SCSS拥有自己的内置函数,和CSS函数不同,SASS/SCSS函数可使用变量,这意味着可以不必指明参数的顺序来声明函数。参数的语法是$name: value。
SASS/SCSS内置函数大体可分为数值函数、颜色函数、列表函数,本篇我们逐一介绍它们的语义与用法。
1 数值函数
| 数值函数 | 描述 |
|---|---|
| abs($number) | 取绝对值 |
| ceil($number) | 向上取整 |
| comparable(number2) | 返回number1和nunber2是否能比较 |
| floor($number) | 向下取整 |
| precentage($number) | 将小数转为百分数 |
| round($number) | 将number转成最接近的整数 |
| unit($number) | 返回number的单位 |
| unitless($number) | 返回number是否没有单位 |
数值函数中有三个是将结果转化为整数,不同于其他编程语言,Sass中将两个数相除时的结果通常是一个小数而不是一个整数,那么我们需要得到整数的时候就需要使用ceil(number)向下取整数,round($number)四舍五入取整数。
abs(number)接收一个小数(例如0.3,0.44,2.3),返回其百分数(30%,44%,2.3变为230%)。
comparable(number2)返回这两个数字能否相加和比较。例如,comparable(12in, 7cm)返回true,因为两者的单位可以相互转换;但是comparable(10px, 10%)将返回false,因为像素和百分率不是一个度量标准。
unit(number)返回true,否则返回false。
总体来说,SASS/SCSS的数值函数处理的都是较普通的数学操作,而SASS/SCSS颜色函数则更加丰富一些。
2 颜色函数
| 颜色函数 | 描述 |
|---|---|
| alpha(color) | 返回alpha通道 |
| blue($color) | 返回蓝色通道 |
| green($color) | 返回绿色通道 |
| red($color) | 返回红色通道 |
| hue($color) | 返回色度属性 |
| lightness($color) | 返回亮度属性 |
| saturation($color) | 返回饱和度属性 |
| adjust($color,...) | 按照给定的颜色成份值,调整color的各个属性 |
| complement($color) | 返回色环与互补 |
| grayscale($color) | 返回灰度版本 |
| invert($color) | 返回反相版本 |
| mix(color2,[$weight]) | 按照$weight的百分比,返回color1和color2混合一起的颜色 |
| sacle($color,...) | 按照百分比调整color的各个属性 |
| set($color,...) | 将color的各个属性设置为固定值 |
一般来讲,所有的颜色以RBG和HSL值来表示,颜色函数中的信息函数可以让你直接获取这些单独的值:红、蓝、绿、色度、饱和度和亮度,以及alpha通道。信息函数以颜色值组成部分来命名:red(color)、green(color)、saturation(color)和alpha(color))。这些函数都返回值同rgb()和hsl()函数的参数值:red()、blue()、green()返回0到255之间的整数,hue()返回一个0deg到359deg之间的数,saturation()和lightness()返回0%到100%之间的数,而alpha()返回一个0.0到1.0之间的数。
转换函数可以快速而简单地生成漂亮的颜色主题,最常用的两个函数是adjust(color)。这两个函数都接受一个颜色作为第一个参数,后面的参数是一列描述如何转换该颜色的关键字。adjust(color, alpha: -0.5)将color, hue: 10deg)将亮度增加15%,并将色度增加10度。scale(color,color的亮度增加30%。如果初始的亮度数值较高,scale()比adjust()要更好:例如一个颜色已经有了80%的亮度,adjust()会使得该颜色变为纯白(亮度为100%),而scale()只会使亮度变为86%。
set(color, color的红色值设置为100,仅此而已。
mix(color2, [weight越接近100%,使用的weight越接0%,使用的$color2越多。
最后,我们还要提及一些非常方便的颜色函数。grayscale(color的饱和度设置为0%,从而将颜色变为灰度。complement(color)翻转变换所有的RGB成分,从而返回原色的反相版本。
3 列表函数
| 列表函数 | 描述 |
|---|---|
| length($list) | 它返回$list列表中项目的个数 |
| nth(n) | 返回列表中的一个单独项目(第n个) |
| join(list2, [$separator]) | 用来创建新的列表。它将两个列表连接起来 |
length(list列表中项目的个数,如length(3 4 5)为3,length(fun)为1。
nth(n),返回列表中的第n个成员,不同其他编程语言,Sass列表中的成员从1开始计数,如,nth(red blue blue, 2)返回blue,nth(5 6 7, 1)返回5。
join(list2, [list1, separator参数用来决定列表的类型,一般是空格或者逗号。如果没有指明list1的类型。
以上就是SASS/SCSS的大部分内置函数的介绍,SASS/SCSS内置函数应用场景较为广泛,但并不能保证能够处理所有数值或颜色的操作。因此,SASS/SCSS允许用户定义自己的函数,大家可以移步这里:
SCSS的极简教程-函数与控制指令(二) - 掘金 juejin.cn/post/712718…
谢谢~