//SCSS
.test1 {
content: unquote('Hello Sass!') ;
}
.test3 {
content: unquote("I'm Web Designer");
}
.test4 {
content: unquote("'Hello Sass!'");
}
.test5 {
content: unquote('"Hello Sass!"');
}
.test6 {
content: unquote(Hello Sass);
}
编译后的 css 代码:
//CSS
.test1 {
content: Hello Sass!; }
.test3 {
content: I'm Web Designer; }
.test4 {
content: 'Hello Sass!'; }
.test5 {
content: "Hello Sass!"; }
.test6 {
content: Hello Sass; }
//SCSS
.test1 {
content: quote('Hello Sass!');
}
.test2 {
content: quote("Hello Sass!");
}
.test3 {
content: quote(ImWebDesigner);
}
.test4 {
content: quote(' ');
}
编译出来的 css 代码:
//CSS
.test1 {
content: "Hello Sass!";
}
.test2 {
content: "Hello Sass!";
}
.test3 {
content: "ImWebDesigner";
}
.test4 {
content: "";
}
//SCSS
.test {
text: to-upper-case(aaaaa);
text: to-upper-case(aA-aAAA-aaa);
}
编译出来的 css 代码:
//CSS
.test {
text: AAAAA;
text: AA-AAAA-AAA;
}
//SCSS
.test {
text: to-lower-case(AAAAA);
text: to-lower-case(aA-aAAA-aaa);
}
编译出来的 css 代码:
//CSS
.test {
text: aaaaa;
text: aa-aaaa-aaa;
}
>> width:round(12.3)-----//12
>> width:round(12.5)-----//13
>> width:round(1.49999)-----//1
>> width:round(2.0)-----//2
>> width:round(20%)-----//20%
>> width: round(2.2%)-----//2%
>> width:round(1px / 3px)-----//0
>> width:round(3px / 2em)-----//报错
.footer {
width:ceil(6.0); //----6
width:ceil(12.3px);//----13px
width:ceil(2.6);//----3
width: ceil(2.3%);//---3%
width:ceil(2px / 3px);//---1
width:ceil(2% / 3px);//-----报错
width:ceil(1em / 5px)//-----报错
}
.footer {
width:floor(2.1); //----2
width:floor(12.3px);//----12px
width:floor(2.8);//----2
width:floor(3.5%);//---3%
width:floor(2px / 10px)//---0
width: floor(3px / 1em);//-----报错
}
.footer {
width:abs(12.3px); //----12.3px
width:abs(-12.3px);//---- 12.3px
width:abs(-1px / 2px);//----2
width:abs(-.5%);//--- 0.5%
}
.footer {
width:max(10px,23px,10,2);
height:min(10px,23px,10,2);
}
编译成css
.footer {
width: 23px;
height: 2;
}
$list: (50,45px,299px,93);
.footer {
width:max($list...);
height:min($list...);
}
编译成css
.footer {
width: 299px;
height: 45px;
}
列表参数之间使用空格隔开,不能使用逗号,否则函数将会出错
>> length(10px) -----1
>> length(10px 20px (border 1px solid) 2em)-----4
>> length(border 1px solid)--------3
>> length(10px,20px,(border 1px solid),2em)----报错
.footer {
background:nth(red green,2);
}
或是
$list:(red green);
.footer {
background:nth($list,2);
}
编译成css
.footer {
background: green;
}
注:在 nth($list,$n) 函数中的 $n 必须是大于 0 的整数
>> join(10px 20px, 30px 40px)
(10px 20px 30px 40px)
>> join((blue,red),(#abc,#def))
(#0000ff, #ff0000, #aabbcc, #ddeeff)
//多个列表连接,需要将多个join()函数合并在一起使用:
>> join((blue red), join((#abc #def),(#dee #eff)))
(#0000ff #ff0000 #aabbcc #ddeeff #ddeeee #eeffff)
用来指定列表连接之间的分隔符的,默认为auto,还有comma(逗号)和space(空格)!
>> append((blue green),red,comma)
(#0000ff, #008000, #ff0000)
>> append((blue green),red,space)
(#0000ff #008000 #ff0000)
>> append(10px 20px ,30px)
(10px 20px 30px)
将多个列表结合成一个多维的列表
>> zip(1px 2px 3px,solid dashed dotted,green blue red)
1px "solid" #008000, 2px "dashed" #0000ff, 3px "dotted" #ff0000
在使用zip()函数时,每个单一的列表个数值必须是相同的:
zip()函数组合出来就成了:
1px solid green, 2px dashed blue, 3px dotted red
第一个值就是1,第二个值就是 2,依此类推
>> index(1px solid red, 1px)-----1
>> index(1px solid red, solid)-----2
>> index(1px solid red, red)-----3
在 index() 函数中,如果指定的值不在列表中(没有找到相应的值),那么返回的值将是 false,相反就会返回对应的值在列表中所处的位置。
>> index(1px solid red,dotted) //列表中没有找到 dotted
false
>> index(1px solid red,solid) //列表中找到 solid 值,并且返回他的位置值 2
2
用来对值做一个判断的作用。
number 为数值型。 string 为字符串型。 bool 为布尔型。 color 为颜色型。
type-of(100)或是type-of(100px)----"number"
>> type-of("asdf")或是type-of(asdf)或是type-of(1 / 2 = 1)-----"string"
>> type-of(true)-----"bool"
>> type-of(#fff)或是type-of(blue)----"color"
用来获取一个值所使用的单位,碰到复杂的计算时,其能根据运算得到一个“多单位组合”的值,不过只充许乘、除运算:
>> unit(100)----""
>> unit(100px)----"px"
>> unit(20%)---"%"
>> unit(1em)----"em"
>> unit(10px * 3em)---"em*px"
>> unit(10px / 3em)----"px/em"
>> unit(10px * 2em / 3cm / 1rem)---"em/rem"
>> unit(1px + 1cm)---"px"
>> unit(1px - 1cm)---"px"
>> unit(1px + 1mm)---"px"
>> unit(10px * 2em - 3cm / 1rem)-----报错
>> unit(10px * 3em)---"em*px"
>> unit(10px / 3em)----"px/em"
>> unit(10px * 2em / 3cm / 1rem)---"em/rem"
上面运算出来的单位,对于在 CSS 中使用将是没有任何意义的。
>> unitless(100px)或是 unitless(100%)或是unitless(1px /2 + 2 )---false
>> unitless(100)或是 unitless(1 /2 )或是unitless(1 /2 + 2 )---true
@mixin adjust-location($x, $y) {
@if unitless($x) {
$x: 1px * $x;
}
@if unitless($y) {
$y: 1px * $y;
}
position: relative;
left: $x;
top: $y;
background:red;
}
.botton{
@include adjust-location(20px, 30);
}
编译过来的CSS:
.botton {
position: relative;
left: 20px;
top: 30px;
background: red;
}
主要是用来判断连俩个数是否可以进行“加,减”以及“合并”。如果可以返回的值为true,如果不可以返回的值是false:
到不同单位时,将会报错,除 px 与 cm、mm 运算之外:
>> comparable(2px,1px)或是 comparable(2px,1mm)或是 comparable(2cm,1mm)---true
>> comparable(2px,1%)或是comparable(2px,1em)或是comparable(2rem,1em)----false
A.rgb($red,$green,$blue):根据红、绿、蓝三个值创建一个颜色;
eg:rgb(200,40,88) //计算出一个十六进制颜色值 #c82858
B.rgba() 函数主要用来将一个颜色根据透明度转换成 rgba 颜色
俩种格式:
rgba($red,$green,$blue,$alpha):根据红、绿、蓝和透明度值创建一个颜色;
rgba($color,$alpha)
eg:rgba(#c82858,.65) //根据透明度计算出一个rgba颜色值
rgba(200, 40, 88, 0.65)
C.red($color):从一个颜色中获取其中红色值;
eg:red(#c82858) //从#c82858颜色值中得到红色值 200
D.green($color):从一个颜色中获取其中绿色值;
eg: green(#c82858) //从#c82858颜色值中得到绿色值 40
E.blue($color):从一个颜色中获取其中蓝色值;
eg:blue(#c82858) //从#c82858颜色值中得到蓝色值 88
F.mix($color-1,$color-2,[$weight]):把两种颜色混合在一起。
$color-1 和 $color-2 指的是你需要合并的颜色,颜色可以是任何表达式,也可以是颜色变量。
$weight 为 合并的比例(选择权重),默认值为 50%,其取值范围是 0~1 之间。
//SCSS
$color1: #a63;
$color2: #fff;
$bgColor1: #f36;
$bgColor2: #e36;
$borderColor1:#c36;
$borderColor2:#b36;
.mix {
background: mix($bgColor1,$bgColor2,.75);
color: mix($color1,$color2,.25);
border-color: mix($borderColor1,$bgColor2,.05);
}
编译的 css 代码:
//CSS
.mix {
background: #ee3366;
color: #fefefe;
border-color: #ed33
}
a.hsl($hue,$saturation,$lightness)
通过色相(hue)、饱和度(saturation)和亮度(lightness)的值创建一个颜色;
eg: hsl(200,30%,60%) //通过h200,s30%,l60%创建一个颜色#7aa3b8
b.hsla($hue,$saturation,$lightness,$alpha)
通过色相(hue)、饱和度(saturation)、亮度(lightness)和透明(alpha)的值创建一个颜色;
eg:hsla(200,30%,60%,.8)//通过h200,s30%,l60%,a80%创建一个颜色
rgba(122, 163, 184, 0.8)
c.hue($color)
从一个颜色中获取色相(hue)值;
eg:hue(#7ab)//得到#7ab颜色的色相值 195deg
d.saturation($color)
从一个颜色中获取饱和度(saturation)值;
eg:saturation(#7ab)//得到#7ab颜色的饱和度值 33.33333%
e.lightness($color)
从一个颜色中获取亮度(lightness)值;
eg:lightness(#7ab)//得到#7ab颜色的亮度值 60%
f.adjust-hue($color,$degrees)
通过改变一个颜色的色相值,创建一个新的颜色;
eg:adjust-hue(#f36,150deg) //改变#f36颜色的色相值为150deg
#33ff66
g.lighten($color,$amount)
通过改变颜色的亮度值,让颜色变亮,创建一个新的颜色;
eg:lighten(#f36,50%) //把#f36颜色亮度提高50%
#ffffff
h.darken($color,$amount)
通过改变颜色的亮度值,让颜色变暗,创建一个新的颜色;
eg:darken(#f36,50%) //把#f36颜色亮度降低50%
#33000d
i.saturate($color,$amount)
通过改变颜色的饱和度值,让颜色更饱和,从而创建一个新的颜色
eg:saturate(#f36,50%) //把#f36颜色饱和度提高50%
#ff3366
j.desaturate($color,$amount)
通过改变颜色的饱和度值,让颜色更少的饱和,从而创建出一个新的颜色;
eg:desaturate(#f36,50%) //把#f36颜色饱和度降低50%
#cc667f
k.grayscale($color)
将一个颜色变成灰色,相当于desaturate($color,100%);
eg:grayscale(#f36) //把#f36颜色变成灰色
#999999
l.complement($color)
返回一个补充色,相当于adjust-hue($color,180deg);
eg:complement(#f36)
#33ffcc
m.invert($color)
反回一个反相色,红、绿、蓝色值倒过来,而透明度不变。
eg:invert(#f36)
#00cc99
a.alpha($color) /opacity($color)获取颜色透明度值
eg:
.footer {
backfround:alpha(red)或是opacity(red)---1
color:alpha(rgba(red,.8))或是 opacity(rgba(red,.8))----0.8
}
b.rgba($color, $alpha)改变颜色的透明度值
eg:
>> rgba(red,.5)----rgba(255, 0, 0, 0.5)
>> rgba(rgb(34,45,44),.5)----rgba(34, 45, 44, 0.5)
>> rgba(rgba(33,45,123,.2),.5)---rgba(33, 45, 123, 0.5)
>> rgba(hsl(33,7%,21%),.5)-----rgba(57, 54, 50, 0.5)
>> rgba(hsla(33,7%,21%,.9),.5)------rgba(57, 54, 50, 0.5)
c.opacify($color, $amount) / fade-in($color, $amount)使颜色更不透明
eg:
>> opacify(rgba(22,34,235,.6),.5)---#1622eb
>> opacify(hsla(22,34%,23%,.6),.415)----#4f3527
>> opacify(red,.15)----#ff0000
>> fade-in(rgba(23,34,34,.5),.15)----rgba(23, 34, 34, 0.65)
>> fade-in(rgba(23,34,34,.5),.615)------#172222
d.transparentize($color, $amount) / fade-out($color, $amount)使颜色更加透明
eg:
>> transparentize(red,.5)-----rgba(255, 0, 0, 0.5)
>> fade-out(hsla(98,6%,23%,.5),.1)---rgba(58, 62, 55, 0.4)
案例七色卡:https://code.csdn.net/snippets_manage
Sass 的 map 常常被称为数据地图,也有人称其为数组,因为他总是以 key:value 成对的出现,但其更像是一个 JSON 数据。
$map: (
$key1: value1,
$key2: value2,
$key3: value3
)
中键 key 是用来查找相关联的值 value。使用 map 可以很容易收集键的值和动态插入。
eg:
$theme-color: (
default: (
color: #2196f3,
text-color: #444,
link-color: #39f
),
primary:(
color: #000,
text-color:#fff,
link-color: #93f
),
negative: (
color: #f36,
text-color: #fefefe,
link-color: #d4e
)
);
@each $keys,$values in $theme-color{
.theme-color-#{$keys}{
@each $key,$value in $values{
#{$key}:#{$value}
}
}
}
编译成css:
.theme-color-default {
color: #2196f3;
text-color: #444;
link-color: #39f;
}
.theme-color-primary {
color: #000;
text-color: #fff;
link-color: #93f;
}
.theme-color-negative {
color: #f36;
text-color: #fefefe;
link-color: #d4e;
}
$social-colors: (
dribble: #ea4c89,
facebook: #3b5998,
twitter: #55acee
);
.btn-dribble{
color: map-get($social-colors,facebook);
}
编译成css;
.btn-dribble {
color: #3b5998;
}
$color: (
text: #f36,
link: #f63,
border: #ddd,
backround: #fff
);
$typo:(
font-size: 12px,
line-height: 1.6
);
$newmap: map-merge($color,$typo);
.btn-dribble{
color: map-get($newmap,backround);
}
编译:
.btn-dribble {
color: #fff;
}
$map:map-remove($theme-color,color);
$theme-color: (
color: #2196f3,
text-color: #444,
link-color: #39f
);
$map:map-remove($theme-color,color);
.theme-color{
@each $key,$value in $map{
#{$key}:#{$value}
}
}
编译成css:
.theme-color {
text-color: #444;
link-color: #39f;
}
将会返回 $map 中的所有 key。这些值赋予给一个变量,那他就是一个列表:map-keys($social-colors);
$social-colors: (
dribble: #000,
facebook: #333,
twitter: #55acee
);
@function colors($color){
$names: map-keys($social-colors);
@if not index($names,$color){
@warn "Waring: `#{$color} is not a valid color name.`";
}
@return map-get($social-colors,$color);
}
@each $name in map-keys($social-colors){
.btn-#{$name}{
color: colors($name);
}
}
编译成css:
.btn-dribble {
color: #000;
}
.btn-facebook {
color: #333;
}
.btn-twitter {
color: #55acee;
}
$social-colors: (
dribble: #000,
facebook: #333,
twitter: #55acee
);
将会返回 $map 中的所有value。这些值赋予给一个变量,那他就是一个列表:map-values($social-colors)
$social-colors: (
dribble: #000,
facebook: #3b5998,
twitter: #55acee
);
@function colors($color){
@if not map-has-key($social-colors,$color){
@warn "No color found for `#{$color}` in $social-colors map. Property omitted.";
}
@return map-get($social-colors,$color);
}
@each $social-network,$social-color in $social-colors {
.btn-#{$social-network} {
color: colors($social-network);
}
}
编译成css:
.btn-dribble {
color: #000;
}
.btn-facebook {
color: #3b5998;
}
.btn-twitter {
color: #55acee;
}
注意:
i.自定义一个函数 colors()
ii.facebook 这个 key 已存在 $social-colors 这个 map 当中,能正常编译;如果你手误,将 facebook 输错了,则错。所以需要@if来判断
@mixin mycolors($args...){
$list: keywords($args);
@each $k,$v in $list{
.btn-#{$k}{
color:$v;
}
}
}
@include mycolors(
$dribble: #ea4c89,
$facebook: #3b5998,
$twitter: #55acee
);
编译成css:
.btn-dribble {
color: #ea4c89;
}
.btn-facebook {
color: #3b5998;
}
.btn-twitter {
color: #55acee;
}