Scss----混合指令和函式指令
阿新 • • 發佈:2020-12-25
2020.12.24 15:56
文章目錄
01.混合指令
混合指令(Mixin)用於定義可重複使用的樣式,避免了使用無語意的 class,比如 .float-left。混合指令可以包含所有的 CSS
規則,絕大部分 Sass 規則,甚至通過引數功能引入變數,輸出多樣化的樣式。
注意:這不是函式!沒有返回值!!
1.定義混合指令
混合指令的用法是在 @mixin 後新增名稱與樣式,以及需要的引數(可選)。
/*格式:*/
@mixin name {
樣式....
}
@mixin color {
font{
size: 15px;
font-weight: bold;
}
color: black;
}
2.引用混合樣式
使用 @include 指令引用混合樣式,格式是在其後新增混合名稱,以及需要的引數(可選)。
格式:
@include name;
注:無引數或引數都有預設值時,帶不帶括號都可以*/
3.引數
格式:按照變數的格式,通過逗號分隔,將引數寫進Mixin名稱後的圓括號裡
支援預設值;支援多引數;支援不定引數;支援位置傳參和關鍵詞傳參
a. 位置傳參
@mixin mp($width) {
margin : $width;
}
body {
@include mp(300px);
}
b.關鍵詞傳參
@mixin mp($width) {
margin: $width;
}
body {
@include mp($width: 300px);
}
c.引數預設值
@mixin mp($width: 500px) {
margin: $width;
}
body {
@include mp($width: 300px);
// or
@include mp(300px);
}
和函式引數預設值類似,傳引數就用傳的,不傳就用預設的
d.不定引數
官方:Variable Arguments
譯文:引數變數
有時,不能確定混合指令需要使用多少個引數。這時,可以使用引數變數 … 宣告(寫在引數的最後方)告訴 Sass 將這些引數視為值列表處理
@mixin mar($value...) {
margin: $value;
}
4.向混合樣式中匯入內容
在引用混合樣式的時候,可以先將一段程式碼匯入到混合指令中,然後再輸出混合樣式,額外匯入的部分將出現在 @content 標誌的地方
可以看作引數的升級版
@mixin example {
html {
@content;
}
}
@include example{
background-color: red;
.logo {
width: 600px;
}
}
// compile:
html {
background-color: red;
}
html .logo {
width: 600px;
}
02.函式指令----內建函式
a. 字串函式
函式名和引數型別 | 函式作用 |
---|---|
quote($string) | 新增引號 |
unquote($string) | 除去引號 |
to-lower-case($string) | 變為小寫 |
to-upper-case($string) | 變為大寫 |
str-length($string) | 返回$string 的長度(漢字算一個) |
str-index($string,$substring) | 返回$substring 在$string 的位置 |
str-insert($string, $insert, $index) | 在$string 的$index 處插入$insert |
str-slice($string, $start-at, $end-at) | 擷取$string 的$start-at 和$end-at 之間的字串 |
b. 數字函式
函式名和引數型別 | 函式作用 |
---|---|
percentage($number) | 轉換為百分比形式 |
round($number) | 四捨五入為整數 |
ceil($number) | 數值向上取整 |
floor($number) | 數值向下取整 |
abs($number) | 獲取絕對值 |
min($number...) | 獲取最小值 |
max($number...) | 獲取最大值 |
random($number?:number) | 不傳入值:獲得0-1的隨機數;傳入正整數n:獲得0-n的隨機整數(左開右閉) |
c. 陣列函式
函式名和引數型別 | 函式作用 |
---|---|
length($list) | 獲取陣列長度 |
nth($list, n) | 獲取指定下標的元素 |
set-nth($list, $n, $value) | 向$list 的$n 處插入$value |
join($list1, $list2, $separator) | 拼接$list1和list2;$separator 為新list 的分隔符,預設為auto,可選擇comma、space |
append($list, $val, $separator) | 向$list 的末尾新增$val;$separator 為新list 的分隔符,預設為auto,可選擇comma、space |
index($list, $value) | 返回$value 值在$list 中的索引值 |
zip($lists…) | 將幾個列表結合成一個多維的列表;要求每個的列表個數值必須是相同的 |
d. 對映函式
函式名和引數型別 | 函式作用 |
---|---|
map-get($map, $key) | 獲取$map 中$key 對應的$value |
map-merge($map1, $map2) | 合併$map1 和$map2 ,返回一個新$map |
map-remove($map, $key) | 從$map 中刪除$key ,返回一個新$map |
map-keys($map) | 返回$map 所有的$key |
map-values($map) | 返回$map 所有的$value |
map-has-key($map, $key) | 判斷$map 中是否存在$key ,返回對應的布林值 |
keywords($args) | 返回一個函式的引數,並可以動態修改其值 |
e. Introspection函式
函式名和引數型別 | 函式作用 |
---|---|
type-of($value) | 返回$value 的型別 |
unit($number) | 返回$number 的單位 |
unitless($number) | 判斷$number 是否帶單位,返回對應的布林值 |
comparable($number1, $number2) | 判斷$number1 和$number2 是否可以做加、減和合並,返回對應的布林值 |
f. 顏色函式
函式名和引數型別 | 函式作用 |
---|---|
rgb($red, $green, $blue) | 返回一個16進位制顏色值 |
rgba($red,$green,$blue,$alpha) | 返回一個rgba ;$red,$green 和$blue 可被當作一個整體以顏色單詞、hsl、rgb或16進位制形式傳入 |
red($color) | 從$color 中獲取其中紅色值 |
green($color) | 從$color 中獲取其中綠色值 |
blue($color) | 從$color 中獲取其中藍色值 |
mix($color1,$color2,$weight?) | 按照$weight 比例,將$color1 和$color2 混合為一個新顏色 |
HSL函式
函式名和引數型別 | 函式作用 |
---|---|
hsl($hue,$saturation,$lightness) | 通過色相(hue)、飽和度(saturation)和亮度(lightness)的值建立一個顏色 |
hsla($hue,$saturation,$lightness,$alpha) | 通過色相(hue)、飽和度(saturation)、亮度(lightness)和透明(alpha)的值建立一個顏色 |
saturation($color) | 從一個顏色中獲取飽和度(saturation)值 |
lightness($color) | 從一個顏色中獲取亮度(lightness)值 |
adjust-hue($color,$degrees) | 通過改變一個顏色的色相值,建立一個新的顏色 |
lighten($color,$amount) | 通過改變顏色的亮度值,讓顏色變亮,建立一個新的顏色 |
darken($color,$amount) | 通過改變顏色的亮度值,讓顏色變暗,建立一個新的顏色 |
hue($color) | 從一個顏色中獲取亮度色相(hue)值 |
Opacity函式
函式名和引數型別 | 函式作用 |
---|---|
alpha($color)/opacity($color) | 獲取顏色透明度值 |
rgba($color,$alpha) | 改變顏色的透明度 |
opacify($color, $amount) / fade-in($color, $amount) | 使顏色更不透明 |
transparentize($color, $amount) / fade-out($color, $amount) | 使顏色更加透明 |
03.函式指令----自定義函式
Sass 支援自定義函式,並能在任何屬性值或 Sass script 中使用
Params: 與Mixin一致
支援返回值
基本格式:
@function fn-name($params...) {
@return $params;
}
// example:
@function fn-name($params...) {
@return nth($params, 1);
}
p {
height: fn-name(1px);
}
// compiled:
p {
height: 1px;
}