1、使用全局变量
$font-stack: Helvetica, sans-serif; $primary-color: #333; body { font: 100% $font-stack; color: $primary-color; }
2、嵌套使用
nav { ul { margin: 0; padding: 0; list-style: none; } li { display: inline-block; } a { display: block; padding: 6px 12px; text-decoration: none; } }
3、引入别的文件
// _reset.scss html, body, ul, ol { margin: 0; padding: 0; } // base.scss @import 'reset'; body { font: 100% Helvetica, sans-serif; background-color: #efefef; }
SASS中引入片断时,可以缺省使用文件扩展名,因此上面代码中直接通过@import 'reset'引入,编译后生成的代码如下:
html, body, ul, ol { margin: 0; padding: 0; } body { font: 100% Helvetica, sans-serif; background-color: #efefef; }
4、混合
@mixin border-radius($radius) { border-radius: $radius; -ms-border-radius: $radius; -moz-border-radius: $radius; -webkit-border-radius: $radius; } .box { @include border-radius(10px); } /*使用之后*/ .box { border-radius: 10px; -ms-border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; }
混合也可以这样用
@mixin df { display: -webkit-flex; display: -moz-flex; display: flex; } /*使用*/ .test{ @include fa; }
5、继承,继承是SASS中非常重要的一个特性,可以通过@extend指令在选择器之间复用CSS属性,并且不会产生冗余的代码
// 这段代码不会被输出到最终生成的CSS文件,因为它没有被任何代码所继承。 %other-styles { display: flex; flex-wrap: wrap; } // 下面代码会正常输出到生成的CSS文件,因为它被其接下来的代码所继承。 %message-common { border: 1px solid #ccc; padding: 10px; color: #333; } .message { @extend %message-common; } .success { @extend %message-common; border-color: green; } .error { @extend %message-common; border-color: red; } .warning { @extend %message-common; border-color: yellow; } /*解析之后*/ .message, .success, .error, .warning { border: 1px solid #ccc; padding: 10px; color: #333; } .success { border-color: green; } .error { border-color: red; } .warning { border-color: yellow; }
6、操作符
.container { width: 100%; } article[role="main"] { float: left; width: 600px / 960px * 100%; } aside[role="complementary"] { float: right; width: 300px / 960px * 100%; } /*使用之后*/ .container { width: 100%; } article[role="main"] { float: left; width: 62.5%; } aside[role="complementary"] { float: right; width: 31.25%; }
7、引用父级选择器"&"
/*===== SCSS =====*/ a { font-weight: bold; text-decoration: none; &:hover { text-decoration: underline; } body.firefox & { font-weight: normal; } } /*===== CSS =====*/ a { font-weight: bold; text-decoration: none; } a:hover { text-decoration: underline; } body.firefox a { font-weight: normal; }