一、介绍 Sass 是一款强化 CSS 的辅助工具,它在 CSS 语法的基础上增加了变量 (variables)、嵌套 (nested rules)、混合 (mixins)、导入 (inline imports) 等高级功能,这些拓展令 CSS 更加强大与优雅。使用 Sass 以及 Sass 的样式库,有助于更好地组织管理样式文件,以及更高效地开发项目。下面是对sass学习的记录笔记,篇幅有点长,请耐心阅读。
特色功能: 
二、安装 NPM安装 windows安装 我们可以使用 Windows 的包管理器 Chocolatey  来安装:
1 2 PLAINTEXT choco install sass 
Mac OS X (Homebrew)安装 Mac OS 可以使用 Homebrew  包管理器来安装:
1 2 PLAINTEXT brew install sass/sass/sass 
三、基本语法 1.把Sass编译成css 在终端输入(以下都是):
1 2 PLAINTEXT sass style.scss:style.css 
2.自动编译Sass 监视单个文件:
1 2 PLAINTEXT sass --watch sass:css 
监视整个文件夹:
1 2 PLAINTEXT sass --watch app/sass:public/css 
3.编译输出格式 格式:nested、 compact、 expanded、 compressed 
nested:嵌套格式 
1 2 PLAINTEXT sass --watch sass:css --style nested 
例子 
style.scss
1 2 3 4 SCSS body {     color: #f0f1f1;  } 
编译后:style.css
1 2 3 CSS body {   color: #f0f1f1; } 
compact:紧凑格式 
1 2 PLAINTEXT sass --watch sass:css --style compact 
例子 
style.scss
1 2 3 4 SCSS body {     color: #f0f1f1;  } 
编译后:style.css
1 2 CSS body { color: #f0f1f1; } 
expanded:展开格式 
1 2 PLAINTEXT sass --watch sass:css --style expanded 
例子 
style.scss
1 2 3 4 SCSS body {     color: #f0f1f1;  } 
编译后:style.css
1 2 3 4 CSS body {     color: #f0f1f1;  } 
compressed:压缩格式 
1 2 PLAINTEXT sass --watch sass:css --style compressed 
例子 
style.scss
1 2 3 4 5 6 7 SCSS body {     color: #f0f1f1;  } p {     font: size 1.2rem; } 
编译后:style.css
1 2 CSS body{color:#f0f1f1}p{font:size 1.2rem} 
4.变量 声明变量: 
1 2 3 4 5 6 7 8 SCSS $default_color: #1269b5; $default_border: 1px solid #b51212; body {     color: $default_color;     border: $default_border } 
5.嵌套 基本语法 
1 2 3 4 5 6 7 8 9 10 11 12 SCSS .nav {     height: 100px;     ul {         margin: 0;         li {             float: left;             list-style: none;             padding: 0;         }     } } 
嵌套时调用父选择器 
1 2 3 4 5 6 7 8 9 10 SCSS a{     display: block;     color: #000;     padding: 5px;     &:hover{         background-color: #0d2f7e;         color: #fff     } } 
嵌套属性 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 SCSS // 方法一 p {     font: {         family: "Helvetica Neue";         size: 12px;         width: normal;     } } // 方法二 .div {     border: 1px solid #000 {         left: 0;          right: 0;     } } 
6.混合—Mixins 基本语法 
1 2 3 4 5 6 7 8 9 SCSS @mixin divbox($color, $background-color) {     color: $color;     background-color: $background-color; } .seccess-box {     @include divbox(#f4fdf4, #00ff00 ); } 
7.继承 1 2 3 4 5 6 7 8 9 SCSS div { padding: 0; margin: 0; } .div {     @extend div;     background-color:#f4fdf4; } 
8.Import 如果需要导入 SCSS 或者 Sass 文件,但又不希望将其编译为 CSS,只需要在文件名前添加下划线,这样会告诉 Sass 不要编译这些文件,但导入语句中却不需要添加下划线。
例如,将文件命名为 _colors.scss,便不会编译 _colours.css 文件。
上面的例子,导入的其实是 _colors.scss 文件
注意,不可以同时存在添加下划线与未添加下划线的同名文件,添加下划线的文件将会被忽略。
9.控制指令 @if 当 @if 的表达式返回值不是 false 或者 null 时,条件成立,输出 {} 内的代码:
1 2 3 4 5 6 SCSS p {   @if 1 + 1 == 2 { border: 1px solid; }   @if 5 < 3 { border: 2px dotted; }   @if null  { border: 3px double; } } 
@for @for 指令可以在限制的范围内重复输出格式,每次按要求(变量的值)对输出结果做出变动。这个指令包含两种格式:@for $var from <start> through <end>,或者 @for $var from <start> to <end>,区别在于 through 与 to 的含义:当使用 through 时,条件范围包含 <start> 与 <end> 的值,而使用 to 时条件范围只包含 <start> 的值不包含 <end> 的值 。另外,$var 可以是任何变量,比如 $i;<start> 和 <end> 必须是整数值。
1 2 3 4 SCSS @for $i from 1 through 3 {   .item-#{$i} { width: 2em * $i; } } 
@each @each 指令的格式是 $var in <list>, $var 可以是任何变量名,比如 $length 或者 $name,而 <list> 是一连串的值,也就是值列表。
@each 将变量 $var 作用于值列表中的每一个项目,然后输出结果。
1 2 3 4 5 6 SCSS @each $animal in puma, sea-slug, egret, salamander {   .#{$animal}-icon {     background-image: url('/images/#{$animal}.png');   } } 
@while @while 指令重复输出格式直到表达式返回结果为 false。这样可以实现比 @for 更复杂的循环,只是很少会用到。例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 SCSS $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; } 
10.自定义函数 1 2 3 4 5 6 7 8 9 10 SCSS $colors: (light: #ffffff, dark: #000000); @function color($key){     @return map-get($colors,$key) }; body {     background-color: color(light) } 
设置警告 
1 2 3 4 5 6 7 8 9 SCSS $colors: (light: #ffffff, dark: #000000); @function color($key){     @if not map-get($colors,$key) {         @warn "在$clolors里边没有找到 #{$key} 这个值";     }     @return map-get($colors,$key) }; 
设置错误 
1 2 3 4 5 6 7 8 9 SCSS $colors: (light: #ffffff, dark: #000000); @function color($key){     @if not map-get($colors,$key) {         @error "在$clolors里边没有找到 #{$key} 这个值";     }     @return map-get($colors,$key) };