ScssScript 支持 6 种主要的数据类型:

  • 数字,1, 2, 13, 10px
  • 字符串,有引号字符串与无引号字符串,"foo", 'bar', baz
  • 颜色,blue, #04a3f9, rgba(255,0,0,0.5)
  • 布尔型,true, false
  • 空值,null
  • 数组 (list),用空格或逗号作分隔符,1.5em 1em 0 2em, Helvetica, Arial, sans-serif
  • maps, 相当于 JavaScript 的 object,(key1: value1, key2: value2)
type-of方法用于检测数据类型

数字的基本运算
2+8  10
8/2  8/2
(8/2)  4
5px + 5px   10px
5px * 2  10px
5px * 5px  25px*px
(10px / 2px)  5 
(10px / 2)  5px
混合运算
3 + 2 * 5px  13px

关于数字的函数运算

abs()  绝对值
round()  四舍五入
cell() 向上取整
floor() 向下取整
percentage() 转换%  percentage(650px / 100px) => 65%
min()
max(1,2,3)  3

字符串的基本运算

 "ni" + hao   "nihao"
 ni-hao       "ni-hao"
 ni / hao     "ni/hao"

字符串的函数运算

to-upper-case()
to-lower-case()
str-length() 
str-index(a,b)  a是被查找的字符串 b是指要查找的字符  索引从 1 开始 
str-index("nihao","i")   2
str-insert(a,b,c)  
str-insert("nihao","hyh",6)  nihaohyh

颜色的函数运算

$a: hsl(0,100%,50%, 0.5)
HSL(a)  色相H 0-360deg 饱和度S 0-100% 明度L 0-100%  a透明度 0-1
adjust-hue(a, b)  调整色相  a 要调整的颜色  b 要调整的值  185deg
lighten(a, b)     加亮调整明度  a 要调整的颜色  b 要增加的值  30%  => 80%
darken(a, b)      降低明度     a 要调整的颜色  b 要减少的值  30%   => 20%
saturate(a, b)   加亮饱和度       同上
desaturate(a, b) 降低饱和度
opacify           增加透明度的值      0.3   => 0.8
transparentize     降低透明度的值    0.3  => 0.2

数组 (list)

$list-data:1px solid #000;
length($list-data)    3
nth($list-data, 1)  => 1px  获取指定序号的值
index($list-data,solid)  2
append($list-data,10px)  1px solid #000 10px
join(5px 10px, 10px 1px,[comma]) => 5px 10px 10px 1px  comma指定各项的分隔符 默认空格

Map运算

$map:(key1:value1,key2:value2)
length($map)   2
map-get($map,key1)   value1
map-keys($map)   (key1,key2)
map-values($map)  (value1,value2)
map-has-key($map,key1)  true
map-merge($map,(key3:value3)   =>  (key1:value1,key2:value2,key3:value3)
$map2 = map-merge($map,(key3:value3)
map-remove($map2,key3,key2)    => (key1:value1)
Boolean运算
< > >= <= == and(&&) or(||)   not(!) 
Interpolation 插入
定义变量
$name : "info";
$atrr : "border";

// 使用形式   #{$name}
/* 注释中也可以使用 #{$name} */
.alert-#{$name} {
    #{$atrr}-color:#ccc;
}

控制语句

// if else 语句

$theme : "dark";
.theme{
    @if $theme == "dark"{
        background-color: #000;
    } @else if $theme == "light"{
        background-color: #fff;
    } @else {
        background-color: #666;
    }
}
@for语句
@for $var from <开始值> through <结束值>{ }    包含结束值的循环
@for $var from <开始值> to <结束值>{ } 不包含结束值的循环
$columns : 4;
@for $i from 1 through $columns {
    .col-#{$i}{
        width:100% / $columns * $i
    }
}
.col-1{
    width: 25%;
}
.col-2{
    width: 50%;
}
.col-3{
    width: 75%;
}
.col-4{
    width: 100%;
}

@for $i from 1 to $columns {
    .col-#{$i}{
        width:100% / $columns * $i
    }
}
.col-1{
    width: 25%;
}
.col-2{
    width: 50%;
}
.col-3{
    width: 75%;
}
@each 遍历数组
$icons : success error warning;

@each $icon in $icons{
    .icon-#{$icon} {
        background-image: url(./image/#{$icon}.png)
    }
}

@while
@while 条件 {}
$i:6;
@while $i > 0{
    .item-#{$i}{
        width:5px * $i;
    }
    $i:$i-2;
}
@function
$colors:(light:#fff,dark:#000);
@function color ($key) {
    @return map-get($colors, $key);
}
// 错误信息提示
// @error 在打包文件中提示
// @warn 在控制台提示
$colors:(light:#fff,dark:#000);
@function color ($key) {
    @if not map-has-key($map: $colors, $key: $key){
        @warn "在 $colors 里面没有找到 #{$key} 这个key"
    }
    @return map-get($colors, $key);
}
@import 和 Partials
Partials 是指一个scss文件,命名规则是以 _ 开头,例如 _base.scss
引入该文件,不会创建一个http请求,而是会编译进当前的scss文件,输出
一个css文件,在引入的过程中,只需要 @import "base"; 不需要_ 不同目录需要相对路径
// 例如:
// 文件1 _base.scss
body{
    margin: 0;
    padding: 0;
}
// 文件2 style.scss
@import "base";
div{
    color: #000;
}
// 编译为一个文件 style.css
body{
    margin: 0;
    padding: 0;
}
div{
    color: #000;
}
注释三种情况:
/*多行注释 不会出现在压缩的编译情况下*/
// 单行注释 所有的编译模式都不会出现
/*!
强制注释 ,出现在所有的编译模式下
*/