一、常用命令
项目中常用:
sass --watch sass:css --style compact
格式转换
sass-convert style.sass style.scss
运行sass
sass input.css output.css
监视sass文件,每次更新时,自动编译成css
sass --watch input.scss: output.css
监视整个文件夹
sass --watch app/sass:public/stylesheets
更多命令行
sass --help
紧凑输出方式 campact
sass --watch test.scss:test.css --style compact
压缩输出方式 campact
sass --watch test.scss:test.css --style compressed
二、基本用法
1、变量
使用$开头
1
2
3
4$blue : #1875e7;
div{
color: $blue;
}如果变量需要镶嵌在字符串中,就必须需要写在#{}之中
1
2
3
4$side: left;
.rounded {
border-#{$side}-radius: 5px;
}
2、计算功能
- 例如
1
2
3
4
5
6$var: 500px;
body{
margin: (14px/2);
top:50px + 100px;
right:$var * 10%
}
3、嵌套
标签嵌套
1
2
3
4
5div{
h1{
color:red;
}
}属性嵌套
1
2
3
4
5p{
border:{
color:red;
}
}伪类
1
2
3
4
5a {
&:hover{
color:#ffb3ff;
}
}
4、注释
- 会保留到编译后的文件
/* */
- 只保留在sass源文件中,编译后被省略
//
- 主要注释,即使是压缩模式编译,也会保留这行注释,通常用作声明版权信息
1
2
3/*!
重要注释
*/
三、代码重用
4、继承
- 例如
1
2
3
4
5
6
7
8.class1{
border: 1px solid #ddd;
}
.class2{
@extend .class1;
font-size: 120%;
}
5、Mixin
可以重用的代码块
1
2
3
4
5
6
7
8@mixin left($value: 10px){
float: left;
margin-right: $value;
}
div{
@include left;
}可以指定参数和缺省值
1
2
3
4
5
6
7
8
9
10
11
12
13@mixin rounded($vert, $horz, $radius: 10px){
border-#{$vert}-#{$horz}-radius: $radius;
-moz-border-#{$vert}-#{$horz}-radius: $radius;
-webkit-border-#{$vert}-#{$horz}-radius: $radius;
}
#navbar li{
@include rounded(top, left);
}
#footer{
@include rounded(top, left, 5px);
}
6、颜色函数
1 | lighten(#cc3, 10%) // #d6d65c |
7、插入文件
@import命令,用来插入外部文件。
1
@import "path/filename.scss";
如果插入的是.css文件,则等同于css的import命令。
1
@import "foo.css";
四、高级用法
1、条件语句
例1
1
2
3
4
5
6
7
8
9p {
@if 1 + 1 == 2 { border:1px solid #eee; }
@if 5 < 3 { border:2px dotted #eee; }
}
等同于:
p { border: 1px solid #eee; }例2
1
2
3
4
5
6
7
8
9
10p{
@if lightness($color) > 30% {
background-color: #000;
} @else {
background-color: #fff;
}
}
等同于:
p { background-color: #000; }
2、循环语句
for循环
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16@for $i from 1 to 10{
.border-#{$i}{
border: #{$i}px solid blue;
}
}
等同于:
.border-1 {border: 1px solid blue; }
.border-2 {border: 2px solid blue; }
.border-3 {border: 3px solid blue; }
.border-4 {border: 4px solid blue; }
.border-5 {border: 5px solid blue; }
.border-6 {border: 6px solid blue; }
.border-7 {border: 7px solid blue; }
.border-8 {border: 8px solid blue; }
.border-9 {border: 9px solid blue; }while循环
1
2
3
4
5
6
7
8
9
10
11
12
13$i: 6;
@while $i > 0{
.item-#{$i}{
width: 2em * $i;
}
$i: $i - 2;
}
等同于:
.item-6 {width: 12em; }
.item-4 {width: 8em; }
.item-2 {width: 4em; }each
1
2
3
4
5
6
7
8
9
10
11@each $member in a,b,c,d{
.#{$member} {
background-image:url("/image/#{$member}.jpg");
}
}
等同于:
.a {background-image: url("/image/a.jpg"); }
.b {background-image: url("/image/b.jpg"); }
.c {background-image: url("/image/c.jpg"); }
.d {background-image: url("/image/d.jpg"); }
3、自定义函数
- 例如:
1
2
3
4
5
6
7
8
9
10@function double($n){
@return $n * 2;
}
#sidebar {
width: double(5px);
}
等同于:
#sidebar { width: 10px; }