# SCSS 使用
# 变量的使用
- 形式1 $bg:#ddd;
- 形式2 $font:{ s:12px,m:14px,l:16px }
.bg{
background-color:$bg
}
.bg{
font-size: map-get('$font',m) //设置字体大小为14px
}
# 嵌套书写
//css
div p { background-color:red }
//scss嵌套书写
div{
p{
background-color:red
}
}
# &符号表示父节点
//scss
div{
p{
background-color:red
}
&.hover{
background-color:green
}
}
// 转换成css
div p { background-color:red }
div.hover{ background-color:green }
# @mixin混入
- 通过混入可以把一些样式单独提出来,当使用@minx时,通过@include 引入,并且可以传递参数
@minx theme($color) {
background-color:$color;
font-size:30px;
}
x1{
@include theme(red);
border:10px solid #ddd;
}
x2{
@include theme(green);
border:10px solid #ddd;
}
- 使用mixin,如果 x1元素和@mixin theme拥有相同的样式,会出现冗余。
@mixin n {
font-size:20px;
}
.x1{
@include n;
font-size:30px;
background-color:red;
}
//转换为css的效果
.x1 {
font-size: 20px;
font-size: 30px; //所以此时会取font-size:30px
background-color: red;
}
# @extends
- 定义基础类,被继承的子类,可以继承基础类,也可以覆盖父类
//scss
//定义父类
.n {
font-size:20px;
}
//子类
.x1{
@extend n;
font-size:30px;
}
.x2{
@extend n;
}
//转换为css
.n, .x1,x2 {
font-size: 20px;
}
.x1 {
font-size:30px;
}
.x2{
}
# @extend VS @mixin
当样式和选择器之间的关系在某些方面比较紧密的时候,使用@extend。除此之外,你可以使用@mixin在任何地方。
- @extend 不够灵活,不能传递参数
- @extend增加了选择器之间的联系。能为一些相关的元素设置样式,让他们共享样式看起来合情合理。
- @mixin主要的优势就是它能够接受参数。
- minx混入的样式,会混入到选择器中,可能产生重复的代码。
# DRY编码方式
DRY就是Donot repeat youself 消除重复编码方法。