本文介绍Sass自备的字符串函数、数字函数、列表函数、Introspection函数、三元函数等等。
/* 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; }
/* 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"; }
/* scss */
.demo { content: to-upper-case('Hello Sass'); }
/* css */
.demo { content: "HELLO SASS"; }
/* scss */
.demo { content: to-lower-case('Hello Sass'); }
/* css */
.demo { content: "hello sass"; }
/* scss */
.demo {
width : percentage(.2);
height: percentage(2px / 10px);
margin: percentage(2em / 10em);
}
/* css */
.demo {
width: 20%;
height: 20%;
margin: 20%;
}
/* scss */
.demo {
// 四舍五入,两边单位不统一会报错
width: round(12.3px);
height: round(2px / 3px);
margin: round(2.2%);
}
/* css */
.demo {
width: 12px;
height: 1;
margin: 2%;
}
/* scss */
.demo {
width: ceil(2.3px);
height: ceil(2px / 3px);
margin: ceil(2.8%);
}
/* css */
.demo {
width: 3px;
height: 1;
margin: 3%;
}
/* scss */
.demo {
width: floor(2.3px);
height: floor(2px / 3px);
margin: floor(2.8%);
}
/* css */
.demo {
width: 2px;
height: 0;
margin: 2%;
}
/* scss */
.demo {
width: abs(2.3px);
height: abs(-2.3px);
}
/* css */
.demo {
width: 2.3px;
height: 2.3px;
}
/* scss */
.demo {
height: min(1,2,1%,3,300%);
}
/* css */
.demo {
height: 1%;
}
/* scss */
.demo {
margin: max(1px,5px);
}
/* css */
.demo {
margin: 5px;
}
/* scss */
.demo {
padding:random();
}
/* css */
.demo {
padding: 0.4669285352;
}
/* scss */
$arr: 1, 2, 3, 4;
$arr2: 1 2 3 4;
$arr3: (border 1px solid);
.demo {
content: length($arr);
content: length($arr2);
content: length($arr3);
}
/* css */
.demo {
content: 4;
content: 4;
content: 3;
}
/* scss */
$arr: 1px, 2px;
.demo {
width: nth($arr, 1);
height: nth($arr, 2);
}
/* css */
.demo {
width: 1px;
height: 2px;
}
/* scss */
.demo {
margin: join((10px 20px),(30px 40px));
}
/* css */
.demo {
margin: 10px 20px 30px 40px;
}
/* scss */
.demo {
padding: append((10px,20px,20px),30px);
}
/* css */
.demo {
padding: 10px, 20px, 20px, 30px;
}
/* scss */
.demo {
border: zip(1px 2px 3px,solid dashed dotted);
}
/* css */
.demo {
border: 1px solid, 2px dashed, 3px dotted;
}
/* scss */
.demo {
// 返回对应的值在列表中所处的位置,第一个值就是1,以此类推。
width: index(1px solid red, 1px);
// 如果指定的值不在列表中,那么返回的值将是false
height: index(1px solid red, yellow)
}
/* css */
.demo {
width: 1;
}
/* scss */
.demo {
content:type-of(100);
content:type-of(100px);
content:type-of(abcd);
content: type-of(blue);
}
/* css */
.demo {
content: number;
content: number;
content: string;
content: color;
}
/* scss */
.demo {
content: unit(10px);
content: unit(10px * 3em);
content: unit(10px * 2em / 3cm / 1rem);
}
/* css */
.demo {
content: "px";
content: "em*px";
content: "em/rem";
}
/* scss */
.demo {
content: unitless(100px);
content: unitless(100);
}
/* css */
.demo {
content: false;
content: true;
}
/* scss */
.demo {
content: comparable(2px, 1px);
content: comparable(2px, 1em);
}
/* css */
.demo {
content: true;
content: false;
}
/* scss */
.demo {
width: if(true, 8em, 20em);
height: if(false, 8em, 20em);
}
/* css */
.demo {
width: 8em;
height: 20em;
}
/* scss */
$map: ( a: hello, b: world );
.demo {
content: map-get($map, a);
}
/* css */
.demo { content: hello; }
/* scss */
$map: ( a: hello, b: world );
.demo {
content: map-has-key($map, a);
content: map-has-key($map, c);
}
/* css */
.demo {
content: true;
content: false;
}
/* scss */
$map: ( a: hello, b: world );
.demo {
content: map-keys($map);
}
/* css */
.demo {
content: a, b;
}
/* scss */
$map: ( a: hello, b: world );
.demo {
content: map-values($map);
}
/* css */
.demo {
content: hello, world;
}
/* scss */
$map: ( padding: 10px, margin: 10px );
$map2: ( font-size: 14px );
.demo {
@each $key, $value in map-merge($map, $map2) {
#{$key}: $value;
}
}
/* css */
.demo {
padding: 10px;
margin: 10px;
font-size: 14px;
}
/* scss */
$map: (
padding: 10px,
margin: 10px,
font-size: 14px
);
.demo {
@each $key, $value in map-remove($map, padding) {
#{$key}: $value;
}
}
/* css */
.demo {
margin: 10px;
font-size: 14px;
}
函数可以说是一个动态创建 map 的函数。可以通过混合宏或函数的参数变创建 map。参数也是成对出现,其中 a r g s 变 成 k e y ( 会 自 动 去 掉 args 变成 key(会自动去掉 args变成key(会自动去掉符号),而 $args 对应的值就是value。
/* scss */
@mixin map($args...){
@debug keywords($args);
}
@include map(
$dribble: #ea4c89,
$facebook: #3b5998,
$github: #171515,
$google: #db4437,
$twitter: #55acee
);
// sh
DEBUG: (dribble: #ea4c89, facebook: #3b5998, github: #171515, google: #db4437, twitter: #55acee)
/* scss */
.demo1 {
color: rgb(100, 148, 210);
background-color: rgba(255, 43, 75, 0.8);
}
.demo2 {
content: red(#f36);
@if red(#f36) > 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;
}