1. 程式人生 > 其它 >Scss----混合指令和函式指令

Scss----混合指令和函式指令

技術標籤:Scsssass

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;
}