sass学习笔记

1、    sass和scss的区别

sass是以严格的缩进式语法规则来书写,不带大括号({})和分号(;),scss和css写法比较相似

2、    Sass的编译的过程中,是不是支持“GBK”编码的。所以在创建 Sass 文件时,就需要将文件编码设置为“utf-8

3、    sass覆盖默认变量值是在他之前重新声明变量值(!default)

4、    使用@import引入文件的时候,要记得加上;不然会出错

5、    混合宏:@mixin font{}(当需要使用变量的时候用)

调用时使用:@include font

Sass 在调用相同的混合宏时,并不能智能的将相同的样式代码块合并在一起。这也是 Sass 的混合宏最不足之处。

6、    继承和扩展:@extend .class;(不需要使用变量的时候用,但是声明出来的基类,不管有没有被调用,都会出现在css里面)

7、    占位符:%(不需要使用变量的时候用,但是声明出来的基类,没有被调用,都不会出现在css里面)

@extend 调用的占位符,编译出来的代码会将相同的代码合并在一起

%placeholder 声明的代码,如果不被 @extend 调用的话,不会产生任何代码

8、    插值:#{}

使用在:比如是属性值的时候:border-#{left}

9、    运算

(1)     进行加减运算的时候,带单位的话,单位要相同。

(2)     进行乘法运算的时候,带单位的话,两个单位相同的话,会出现错误,只要其中一个带值就可以了。

(3)     进行除法运算的时候,“/”符号,如果有其他的运算符(+-*)的话就会生效,如果没有的话,要记得整个运算带括号,不然不会生效,另外,在 Sass 除法运算中,当用变量进行除法运算时,“/”符号也会自动被识别成除法。但在除法运算时,如果两个值带有相同的单位值时,除法运算之后会得到一个不带单位的数值

10、@for循环

@for $i from <start> through <end>

@for $i from <start> to <end>

$i 表示变量

start 表示起始值

end 表示结束值

这两个的区别是关键字 through 表示包括 end 这个数,而 to 则不包括 end 这个数。

11、@while

直到遇到false才会停止循环

@while $types > 0 {

    .while-#{$types} {

        width : $type-width + $types;

    }

    $types : $types - 1;  // 自减

}

12、@each循环

@each $var in <list>

13、函数功能

(1) 字符串函数

(2) 数字函数

(3) 列表函数

(4) 颜色函数

(5) Introspection 函数

(6) 三元函数等

(1)    字符串函数:用来处理字符串的函数

      unquote($string):删除字符串中的引号;只能删除字符串最前和最后的引号(双引号或单引号)

quote($string):给字符串添加引号。

To-upper-case() 函数将字符串小写字母转换成大写字母

To-lower-case() 函数将字符串转换成小写字母

(2)    数字函数

      percentage($value):将一个不带单位的数转换成百分比值;

      round($value):将数值四舍五入,转换成一个最接近的整数;

      ceil($value):将大于自己的小数转换成下一位整数;

      floor($value):将一个数去除他的小数部分;

      abs($value):返回一个数的绝对值;

      min($numbers…):找出几个数值之间的最小值;

      max($numbers…):找出几个数值之间的最大值;

      random(): 获取随机数

14、值列表

列表项之间可以用空格分开,也可以用,分开

(1)   nth函数(nth function) 可以直接访问值列表中的某一项;

(2)   join函数(join function) 可以将多个值列表连结在一起;

(3)   append函数(append function) 可以在值列表中添加值; 

(4)   @each规则(@each rule) 则能够给值列表中的每个项目添加样式。

15、列表函数

比如:

$list : #cdf,#ccc,#f00;

$list1 : 12px, 13px,14px;

$list2: #333, #666;

(1)     length($list):返回一个列表的长度值;

length($list)

(2)     nth($list, $n):返回一个列表中指定的某个标签值($n必须是大于 0 的整数,且$n从1开始)

nth($list, 1) –》#cdf

(3)     join($list1, $list2, [$separator])

将两个列给连接在一起,变成一个列表,多于2个会出错,但很多时候不只碰到两个列表连接成一个列表,这个时候就需要将多个 join() 函数合并在一起使用。

比如:join(join($list, $list2),$list3)

参数 $separator,这个参数主要是用来给列表函数连接列表值是,使用的分隔符号,默认值为 auto, 除了默认值 auto 之外,还有 comma 和 space 两个值,其中 comma 值指定列表中的列表项值之间使用逗号(,)分隔,space 值指定列表中的列表项值之间使用空格( )分隔。

1)        第一个列表中只有一个列表项,那么 join() 函数合并的列表项目中每个列表项目这间使用的分隔符号会根据第二个列表项中使用的

2)        如果列表中的第一个列表(不止一个值)中每个值之间使用的符号是什么,合并函数的列表会和它一致

3)        如果当两个列表中的列表项小于1时,将会以空格分隔

(4)     append($list1, $val, [$separator]):将某个值放在列表的最后;

append($list, #000)

1)        如果列表只有一个列表项时,那么插入进来的值将和原来的值会以空格的方式分隔。 append(#fff, #000, comma)

2)        如果列表中列表项是以空格分隔列表项,那么插入进来的(单个)列表项也将以空格分隔;

3)        如果列表中列表项是以逗号分隔列表项,那么插入进来的(单个)列表项也将以逗号分隔。

4)        当然,在 append() 函数中,可以显示的设置 $separator 参数,

如果取值为 comma 将会以逗号分隔列表项

如果取值为 space 将会以空格分隔列表项

(5)     zip($lists…):将几个列表结合成一个多维的列表;

1)        在使用zip()函数时,每个单一的列表个数值长度必须是相同的,同类型

2)        zip(1px  2px  3px, solid  dashed  dotted,  green  blue  red)生成

               1px  solid  green,  2px  dashed  blue,  3px  dotted  red

(6)     index($list, $value):返回一个值在列表中的位置值。index(1px solid red, red),

位置从1开始,没找到值的时候返回false

16、Introspection函数

(1)     type-of($value):返回一个值的类型

  • number 为数值型。 (带单位和没带单位都可以)
  • string 为字符串型。
  • bool 为布尔型。
  • color 为颜色型

(2)     unit($number):返回一个值的单位,如果有运算的时候,加减要同单位,乘除可以多单位,如果没有单位返回””,

(3)     unitless($number):判断一个值是否带有单位,返回boolean值,有单位返回false,没有单位返回true

(4)     comparable($number-1, $number-2):判断两个值是否可以做加、减和合并,返回boolean值。同单位或者一个不带单位的才可以,或者单位同类型

17、Miscellaneous函数(三元)

if($condition,$if-true,$if-false) // $condition是boolean值

18、Map(数据地图/json 以 key:value 成对的出现)

用个 $ 加上命名空间来声明 map。后面紧接是一个小括号 (),将数据以 key:value 的形式赋予,其中 key 和 value 是成对出现,并且每对之间使用逗号 (,) 分隔,其中最后一组后面没有逗号。

map可以相互嵌套

$theme-color: (
    default: (
        bgcolor: #fff,
        text-color: #444,
        link-color: #39f
    ),
    primary:(
        bgcolor: #000,
        text-color:#fff,
        link-color: #93f
    ),
    negative: (
        bgcolor: #f36,
        text-color: #fefefe,
        link-color: #d4e
    )
);

19、Sass Maps的函数

(1)     map-get($map,$key):根据给定的 key 值,返回 map 中相关的值。

根据 $key 参数,返回 $key 在 $map 中对应的 value 值。如果 $key 不存在 $map中,将返回 null 值

(2)     map-merge($map1,$map2):将两个 map 合并成一个新的 map。

(3)     map-remove($map,$key):从 map 中删除一个 key,返回一个新 map。

(4)     map-keys($map):返回 map 中所有的 key。

(5)     map-values($map):返回 map 中所有的 value。

(6)     map-has-key($map,$key):根据给定的 key 值判断 map 是否有对应的 value 值,如果有返回 true,否则返回 false。

(7)     keywords($args):返回一个函数的参数,这个参数可以动态的设置 key 和 value。

@mixin map($args...){

    @debug keywords($args); // (arg1: val, arg2: val)

}

@include map(

  $dribble: #ea4c89,

  $facebook: #3b5998,

  $github: #171515,

  $google: #db4437,

  $twitter: #55acee

);

(8)     遍历Map

@each $key, $value in $map {

  .element-#{$key} {

    background: $value;

  }

}

(9)     使用zip函数来压缩多值

$animation_config: (

  name: none,

  duration: 0s,

  timing: ease,

  delay: 0s,

  iteration: 1, // infinite

  direction: normal, // reverse, alternate, alternate-reverse

  fill-mode: none, // forwards, backwards, both

  play-state: running

);

@function sh-setup($config) {

  @return zip(map-values($config)...);

}

.object {

  animation: sh-setup($animation_config);

}

20、RGB颜色函数

开启 Sass 的函数计算:sass –i,  ctrl+D退出

(1)      rgb($red, $green, $blue):根据红、绿、蓝三个值创建一个颜色;

(2)      rgba($red,$green,$blue,$alpha):根据红、绿、蓝和透明度值创建一个颜色;

rgba($red,$green,$blue,$alpha)  //将一个rgba颜色转译出来,和未转译的值一样

rgba($color,$alpha)  //将一个Hex颜色转换成rgba颜色

(3)      red($color):从一个颜色中获取其中红色值;

(4)      green($color):从一个颜色中获取其中绿色值;

(5)      blue($color):从一个颜色中获取其中蓝色值;

(6)      mix($color-1,$color-2,[$weight]):把两种颜色混合在一起。

$weight 为 合并的比例(选择权重),默认值为 50%,其取值范围是 0~1 之间。它是每个 RGB 的百分比来衡量,当然透明度也会有一定的权重。默认的比例是 50%,这意味着两个颜色各占一半,如果指定的比例是 25%,这意味着第一个颜色所占比例为 25%,第二个颜色所占比例为75%。

21、HSL函数

开启 Sass 的函数计算:sass -i

(1)      hsl($hue,$saturation,$lightness):通过色相(hue)、饱和度(saturation)和亮度(lightness)的值创建一个颜色;

(2)      hsla($hue,$saturation,$lightness,$alpha):通过色相(hue)、饱和度(saturation)、亮度(lightness)和透明(alpha)的值创建一个颜色;

(3)      hue($color):从一个颜色中获取色相(hue)值;

(4)      saturation($color):从一个颜色中获取饱和度(saturation)值;

(5)      lightness($color):从一个颜色中获取亮度(lightness)值;

(6)      adjust-hue($color,$degrees):通过改变一个颜色的色相值,创建一个新的颜色;

第二个值可以是度数,也可以是百分比

(7)      lighten($color,$amount):通过改变颜色的亮度值,让颜色变亮,创建一个新的颜色;(第二个值是增加的值)

(8)      darken($color,$amount):通过改变颜色的亮度值,让颜色变暗,创建一个新的颜色;

(9)      saturate($color,$amount):通过改变颜色的饱和度值,让颜色更饱和,从而创建一个新的颜色

(10)  desaturate($color,$amount):通过改变颜色的饱和度值,让颜色更少的饱和,从而创建出一个新的颜色;

(11)  grayscale($color):将一个颜色变成灰色,相当于desaturate($color,100%);

(12)  complement($color):返回一个补充色,相当于adjust-hue($color,180deg);

(13)  invert($color):反回一个反相色,红、绿、蓝色值倒过来,而透明度不变。

22、Opacity函数

开启 Sass 的函数计算:sass -i

(1)      alpha($color) / opacity($color):获取颜色透明度值;

(2)      rgba($color, $alpha):改变颜色的透明度值;

(3)      opacify($color, $amount) / fade-in($color, $amount):使颜色更不透明;

接受两个参数,第一个参数是原始颜色,第二个参数是你需要增加的透明度值,其取值范围主要是在 0~1 之间。当透明度值增加到大于 1 时,会以 1 计算,表示颜色不具有任何透明度。

(4)      transparentize($color, $amount) / fade-out($color, $amount):使颜色更加透明。

让透明值做减法运算,当计算出来的结果小于 0 时会以 0 计算,表示全透明

23、@media

(1)      如果在样式中使用 @media 指令,它将冒泡到外面

24、@at-root  跳出根元素

不会嵌套,样式独立

25、@debug  调试

26、@warn

27、@error

原文地址:https://www.cnblogs.com/qzccl/p/5540536.html