Sass函數(shù)功能匯總

Sass自備了一系列的函數(shù)功能,大部分能通過普通的css語句直接調(diào)用。這篇文章會(huì)詳細(xì)介紹Sass的字符串函數(shù)、數(shù)字函數(shù)、列表函數(shù)、Introspection函數(shù)、三元函數(shù)等等,盡量將Sass函數(shù)方面的知識(shí)匯總

【Sass自定義函數(shù)】:http://www.itdecent.cn/p/7f879ce0cbb9

1. 字符串函數(shù)

  • unquote($string):刪除字符串中的引號(hào);
  • quote($string):給字符串添加引號(hào);
  • To-upper-case($string):將字符串小寫字母轉(zhuǎn)換為大寫字母
  • To-lower-case($string):將字符串大寫字母轉(zhuǎn)換為小寫字母
(1) unquote($string)

unquote函數(shù)主要功能是刪除字符串中的引號(hào):

  • 不管是雙引號(hào)還是單引號(hào)包裹的字符串,引號(hào)皆被去掉;
  • 只能刪除字符串最前邊和最后邊的引號(hào),沒法去掉中間的引號(hào);
  • 如果字符串沒有帶引號(hào),則返回原字符串;
  • 若引號(hào)中,有半個(gè)不成對(duì)的引號(hào)。
//SCSS
.demo1 { content: unquote('Hello Sass') ; }
.demo2 { content: unquote("Hello Sass"); }
.demo3 { content: unquote("Hello' Sass"); }
.demo4 { content: unquote("'Hello Sass'"); }
.demo5 { content: unquote('"Hello Sass"'); }
.demo6 { content: unquote(Hello Sass);}
//CSS
.demo1 { content: Hello Sass; }
.demo2 { content: Hello Sass; }
.demo3 { content: Hello' Sass; }
.demo4 { content: 'Hello Sass'; }
.demo5 { content: "Hello Sass"; }
.demo6 { content: Hello Sass; }
(2) quote($string)

quote函數(shù)主要功能是給字符串添加引號(hào):

  • 若字符串本身帶有引號(hào),就不添加;
  • 若字符串帶有單引號(hào),則跟換為雙引號(hào);
  • 若雙引號(hào)中有單引號(hào),則不變,單引號(hào)不受影響;
  • 若字符串中間有空格或者半塊的單引號(hào)、雙引號(hào)時(shí),需要用單引號(hào)或雙引號(hào)括起,不然編譯會(huì)報(bào)錯(cuò);
  • 碰到特殊符號(hào),比如: !、?、> 等,除中折號(hào) - 和下劃線_ 都需要使用雙引號(hào)括起,否則編譯器在進(jìn)行編譯的時(shí)候同樣會(huì)報(bào)錯(cuò):
//SCSS
.demo1 { content: quote('Hello Sass') ; }
.demo2 { content: quote("Hello Sass"); }
.demo3 { content: quote("Hello' Sass"); }
.demo4 { content: quote("'Hello Sass'"); }
.demo5 { content: quote('"Hello Sass"'); }
.demo6 { content: quote(HelloSass);}
//CSS
.demo1 { content: "Hello Sass"; }
.demo2 { content: "Hello Sass"; }
.demo3 { content: "Hello' Sass"; }
.demo4 { content: "'Hello Sass'"; }
.demo5 { content: '"Hello Sass"'; }
.demo6 { content: "HelloSass"; }

2. 數(shù)字函數(shù)

  • percentage($value):將不帶單位的數(shù)轉(zhuǎn)換成百分比值;
  • round($value):將數(shù)值四舍五入,轉(zhuǎn)換成一個(gè)最接近的整數(shù);
  • ceil($value):向上取整;
  • floor($value):向下取整;
  • abs($value):取數(shù)的絕對(duì)值;
  • min($numbers…):找出幾個(gè)數(shù)值之間的最小值;
  • max($numbers…):找出幾個(gè)數(shù)值之間的最大值;
  • random(): 獲取隨機(jī)數(shù)
    Sass的數(shù)字函數(shù)和JavaScript的Math對(duì)象方法基本相似:
//SCSS
.demo1 {
  width : percentage(.2); //轉(zhuǎn)換成百分比值
  height: percentage(2px / 10px);
  margin: percentage(2em / 10em);
}
.demo2 {
  width: round(12.3px); //四舍五入,兩邊單位不統(tǒng)一會(huì)報(bào)錯(cuò)
  height: round(2px / 3px);
  margin: round(2.2%);
}
.demo3 {
  width: ceil(2.3px); //向上取整
  height: ceil(2px / 3px);
  margin: ceil(2.8%);
}
.demo4 {
  width: floor(2.3px); //向下取整
  height: floor(2px / 3px);
  margin: floor(2.8%);
}
.demo5{
  width: abs(2.3px);  //絕對(duì)值
  height: min(1,2,1%,3,300%); //找出最小值
  margin: max(1px,5px); //找出最大值
  padding:random(); //隨機(jī)數(shù)
}
//CSS
.demo1 {
  width: 20%;
  height: 20%;
  margin: 20%; }

.demo2 {
  width: 12px;
  height: 1;
  margin: 2%; }

.demo3 {
  width: 3px;
  height: 1;
  margin: 3%; }

.demo4 {
  width: 2px;
  height: 0;
  margin: 2%; }

.demo5 {
  width: 2.3px;
  height: 1%;
  margin: 5px;
  padding: 0.4669285352; }

3. 列表函數(shù)

  • length($list):返回一個(gè)列表的長(zhǎng)度值;
  • nth($list, $n):返回一個(gè)列表中指定的某個(gè)標(biāo)簽值;
  • join($list1, $list2, [$separator]):將兩個(gè)列給連接在一起,變成一個(gè)列表;
  • append($list1, $val, [$separator]):將某個(gè)值放在列表的最后;
  • zip($lists…):將幾個(gè)列表結(jié)合成一個(gè)多維的列表;
  • index($list, $value):返回一個(gè)值在列表中的位置值。
//SCSS
.demo1 {
  width : length(10px);   //返回列表清單中有多少個(gè)值,空格隔開,不能使用逗號(hào)。
  height:  length(border 1px solid)  //同一個(gè)列表里,可以是不同類型、不同單位的值
}
.demo2 {
  width: nth((Helvetica,Arial,sans-serif),2);   //指定列表中某個(gè)位置的值,1是指列表中的第一個(gè)標(biāo)簽值,以此類推。
  height: nth((1px solid red) border-top green,1);
}
.demo3 {
  margin: join((10px 20px),(30px 40px));  //將兩個(gè)列表連接合并成一個(gè)列表,不同列表之間用逗號(hào)隔開。
  padding: append((10px,20px,20px),30px);  //將某個(gè)值插入到列表中,并且處于最末位
  border: zip(1px 2px 3px,solid dashed dotted) ;  //多個(gè)列表值轉(zhuǎn)成一個(gè)多維的列表,每個(gè)單一的列表個(gè)數(shù)值必須是相同
}
.demo4 {
  width: index(1px solid red, 1px);   //返回對(duì)應(yīng)的值在列表中所處的位置,第一個(gè)值就是1,以此類推。
  height:  index(1px solid red, yellow)  //如果指定的值不在列表中,那么返回的值將是false著作權(quán)歸作者所有。
}

//CSS
.demo1 {
  width: 1;
  height: 3;
}
.demo2 {
  width: Arial;
  height: 1px solid red;
}
.demo3 {
  margin: 10px 20px 30px 40px;
  padding: 10px, 20px, 20px, 30px;
  border: 1px solid, 2px dashed, 3px dotted;
}
.demo4 {
  width: 1;
}

4. Introspection函數(shù)

  • type-of($value):返回一個(gè)值的類型;
  • unit($number):返回一個(gè)值的單位;
  • unitless($number):判斷一個(gè)值是否帶有單位;
  • comparable($number-1, $number-2):判斷兩個(gè)值是否可以做加、* 減和合并.
//SCSS
.demo1 {
    content:type-of(100);  //判斷一個(gè)值是屬于什么類型
    content:type-of(100px);
    content:type-of(asdf);
    content: type-of(blue);
  }
.demo2 {
  content: unit(10px * 3em);  //獲取一個(gè)值所使用的單位
  content: unit(10px * 2em / 3cm / 1rem);
}
.demo3 {
  content: unitless(100px);  //判斷一個(gè)值是否帶有單位
  content:  unitless(1 /2 + 2 );
}
.demo3 {
  content: comparable(2px,1px);  //斷兩個(gè)數(shù)是否可以進(jìn)行加,減以及合并
  content: comparable(2px,1em);
}
//CSS
.demo1 {
  content: number;
  content: number;
  content: string;
  content: color;
}
.demo2 {
  content: "em*px";
  content: "em/rem";
}
.demo3 {
  content: false;
  content: true;
}
.demo3 {
  content: true;
  content: false;
}

5. 三元條件函數(shù)

if($condition,$if-true,$if-false);

判斷$condition,如果條件成立,則返回$if-true的結(jié)果,如果條件不成立,則返回$if-false的結(jié)果。

//SCSS
.demo1{width:if(true,8em,20em)}
.demo2{height:if(false,8em,20em)}
//CSS
.demo1 { width: 8em;}
.demo2 {height: 20em;}

6.Maps的函數(shù)

  • map-get($map,$key):根據(jù)給定的 key 值,返回 map 中相關(guān)的值;
  • map-has-key($map,$key):根據(jù)給定的 key 值判斷 map 是否有對(duì)應(yīng)的 value 值,如果有返回 true,否則返回 false。
  • map-keys($map):返回 map 中所有的 key。
  • map-values($map):返回 map 中所有的 value。
  • map-merge($map1,$map2):將兩個(gè) map 合并成一個(gè)新的 map。
  • map-remove($map,$key):從 map 中刪除一個(gè) key,返回一個(gè)新 map。
  • keywords($args):返回一個(gè)函數(shù)的參數(shù),這個(gè)參數(shù)可以動(dòng)態(tài)的設(shè)置 key 和 value。

Sass中map的形式如下:
用 $ 加上命名空間來聲明 map,后面緊接是一個(gè)小括號(hào) (),將數(shù)據(jù)以 key:value 的形式賦予,key 和 value 是成對(duì)出現(xiàn)。

$map: (
    $key1: value1,
    $key2: value2,
    $key3: value3
)

對(duì)應(yīng)的一些例子:

//SCSS
$colors: (//$map
        redColor: #FF2C60, // $key:value
        greenColor:#168009,
        blueColor:#7BA5FF
);

@if map-has-key($colors, meat) {  //當(dāng) $map 中有這個(gè) $key,則函數(shù)返回 true,否則返回 false。
  div {
    color: map-get($colors, redColor);   //根據(jù) $key 參數(shù),返回 $key 在 $map 中對(duì)應(yīng)的 value 值。
    color: map-get($colors, yellowColor);   //如果 $key 不存在 $map中,將返回 null 值,并且不會(huì)把css編譯出來。
  }
} @else {
  div {
    color: green
  }
}

.btn-#{nth(map-keys($colors),1)} {     //函數(shù)將會(huì)返回 $map 中的所有 key,并通過nth()獲取某值
  color: nth(map-values($colors), 2);   //函數(shù)將會(huì)返回 $map 中的所有 value,并通過nth()獲取某值
}

$div1: (
        text: #f36,
        link: #f35,
        border: #384
);
$div2: (
        width:300px,
        height:100px,
        z-index:3
);
$newMap: map-merge($div1, $div2);   //map-merge($map1,$map2) 函數(shù)是將 $map1 和 $map2 合并,然后得到一個(gè)新的 $map。
div {
  @each $x, $y in $newMap {
    #{$x}: #{$y};
  }
}

$newMap: map-remove($div1, link);   // 用來刪除當(dāng)前 $map 中的某一個(gè) $key,從而得到一個(gè)新的 map。其返回的值還是一個(gè) map。
div {
  @each $x, $y in $newMap {
    #{$x}: #{$y};
  }
}
//CSS
div {
  color: green;
}

.btn-redColor {
  color: #168009;
}

div {
  text: #f36;
  link: #f35;
  border: #384;
  width: 300px;
  height: 100px;
  z-index: 3;
}

div {
  text: #f36;
  border: #384;
}

7.顏色函數(shù)

  • rgb($red,$green,$blue):根據(jù)、藍(lán)三個(gè)值創(chuàng)建一個(gè)顏色;
  • rgba($red,$green,$blue,$alpha):根據(jù)、、藍(lán)透明度值創(chuàng)建一個(gè)顏色;
  • red($color):從一個(gè)顏色中獲取其中紅色值;
  • green($color):從一個(gè)顏色中獲取其中綠色值;
  • blue($color):從一個(gè)顏色中獲取其中藍(lán)色值;
  • mix($color-1,$color-2,[$weight]):把兩種顏色混合在一起。
//SCSS
.demo1 {
  color: rgb(100, 148, 210);   //根據(jù)紅、綠、藍(lán)三個(gè)值創(chuàng)建一個(gè)顏色,輸入的是三個(gè)0-255之間的數(shù)字值
  background-color: rgba(255, 43, 75, 0.8);   //根據(jù)紅、綠、藍(lán)和透明度值創(chuàng)建一個(gè)顏色

}
.demo2 {
  content: red(#f36);   //從一個(gè)顏色中獲取其紅色值
  @if red(#f36) > 50 {   //當(dāng)顏色的紅色值大于50使用白色,否則使用黑色
    color: #fff;
  } @else{
    color: #000;
  }
}
.demo3 {
  color:mix(#f00, #00f);   //把兩種顏色按照一定的比例混合在一起
  color: mix(#f00, #00f, 25%)
}
//CSS
.demo1 {
  color: #6494d2;
  background-color: rgba(255, 43, 75, 0.8);
}
.demo2 {
  content: 255;
  color: #fff;
}
.demo3 {
  color: purple;
  color: #4000bf;
}

8.自定義函數(shù)

考慮到Sass自定義函數(shù)用到地方比較多,并且后續(xù)需要單獨(dú)拿出來和Mixin、extend進(jìn)行比較,所以另開篇幅了
【Sass自定義函數(shù)】:http://www.itdecent.cn/p/7f879ce0cbb9

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • -------------------------一、控制指令--------------------------...
    夜幕小草閱讀 3,229評(píng)論 0 5
  • [1] 四、Sass的控制命令 [2] 4.1 @if @if是一個(gè)SassScript,它可以根據(jù)條件來處理樣式...
    沒汁帥閱讀 2,011評(píng)論 0 2
  • //Clojure入門教程: Clojure – Functional Programming for the J...
    葡萄喃喃囈語閱讀 4,021評(píng)論 0 7
  • 基礎(chǔ) 聲明變量 普通變量 默認(rèn)變量 變量覆蓋:只需要在默認(rèn)變量之前重新聲明下變量即可 變量的調(diào)用 局部變量和全局變...
    Jill1231閱讀 1,379評(píng)論 0 1
  • 二黑是一只狗,土凹村老王家的一只狗。是老王家孫女小梅的小伙伴,小梅的爸在工地被掉下來的磚頭砸死了,老板跑路了,一...
    南國(guó)雪閱讀 710評(píng)論 4 2

友情鏈接更多精彩內(nèi)容