混合样式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@mixin block($el){
color:$el
}
.demo{
@include block(red);
// 相当于把它的样式拿过来
}
可以配合@content用法
@mixin max-screen($res){
@media only screen and (max-width: $res) {
@content; // 放的是自己的样式 当声明@content时 里面的东西是引用mixin的内容
}
}
@mixin可以用=表示,而@include可以用+表示 当@content在指令中出现多次或者在循环中时 额外的代码将被导入到每一个地方
引入scss
1
2
一般的公共文件是以下划线开头 如:_common.scss 导入时使用 @import "common" 无需后缀名和下划线
@import "item"; 就相当于把他所有内容拿过来
继承
1
2
3
4
5
6
7
8
9
10
// 普通继承 当节点使用继承后 该节点会和继承的节点共享样式 .dvs,.demo{样式},自己单独拥有的样式 会另外开一个代码块存放
// 占位继承 当不想显示父节点的样式编译结果时 使用 在名字前加 单独的样式还是单独的一个代码块 继承的是一个代码块 多个继承还是一样写一块
%f{
width: 100px;
max-height: 1000px;
}
.dvs{
@extend %f;
max-height: 100px;
}
函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
函数是通过@function定义一个函数实现加减乘除的逻辑算法 并通过@return返回
@baseFontSize:16px !default;
@function pxToRem($num){
@return $num / $baseFontSize * 1rem;
}
.demo{
font-size:$baseFontSize;
}
.demo1{
font-size:pxToRem(16px);
}
四则运算
表示涉及带数值的样式设置时,可直接进行加减乘除运算 在代码块中直接就可以进行运算
运算乘除时要先把单位拿出来 最后+单位
判断
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$show:true;
$type:test;
.demo{
@if @show{
color:red;
}
@else if $type==test{
color:yellow;
}
@else{
color:blue;
}
}
三目运算 即 三元运算
.demo{
color:if(true,1px,2px); // color:1px 真选择1px 假即2px
}
循环
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// 相当于定义变量i 起始值为1 小于等于3 然后循环
@for $i from 1 through 3{
.through-#{$i}{
width: 2em * $i;
}
}
// 相当于定义 i初始值为1 小于3
@for $i from 1 to 3{
.to#{$i}{
height: 2em * $i;
}
}
// 一维数组
$arr:red,yellow,blue;
// 二维数组
$brr:(a1,a2,a3),(a4,a5,a6);
// map对象格式
$map:(key1:value1,key2:value2);
//$each 遍历 将一个个元素拿出来循环
@each $val in $arr{
.#{$val}-icon{
background-image: url('/image/#{$val}.jpg');
}
}
// 多维数组遍历
$arr:(a,b,c,d),(e,f,g,h),(i,j,k,o);
// 当声明一个变量时 三个数组 每个都是这个变量
// 当声明的变量等于每个数组元素的个数的时候 第一个变量的是每个数组的第一个元素 以此类推
@each $v1 in $arr{
.#{$v1}{
text:$v1;
}
}
// map对象遍历
@each $key,$val in $map{
#{$key}{
font-size:$val;
}
}
变量
在外部声明的变量默认为全局变量 在代码块内部声明的变量的默认为局部变量 可以将局部转全局 在声明的变量后面 $width:10px !global;