css本身很有趣,但是随着样式表变大,会越来越复杂,更加难以管理。css预处理器在这里就能帮上忙了。SASS 让你使用在css中不存在的特性,譬如变量、嵌套、mixins(混入),继承和一些其他好的特性,这些新特性会让你写css会更有趣。
了解变量
想想如果使用一个变量存储信息然后在样式表中反复重用该变量,可以存储颜色、字体大小和任何其他你能想到的CSS值。SASS使用$来声明变量。
当SASS编译处理后, 它会使用我们定义的 $font-stack 和 $primary-color 两个值然后输出正常的CSS。当我们需要改值的时候这会非常方便,我们只需要改一处地方而不需要到处搜索该值。
编译前代码:
$font-stack: Helvetica, sans-serif; $primary-color: #333; body { font: 100% $font-stack; color: $primary-color; }
编译后代码:
body { font: 100% Helvetica, sans-serif; color: #333; }
了解嵌套
css有时候会有过度的嵌套和层级关系。譬如:
nav ul { margin: 0; padding: 0; list-style: none;}nav li { display: inline-block;}nav a { display: block; padding: 6px 12px; text-decoration: none;}
如果我们只写一个nav该多好,而SASS赋予了我们这样的权利,SASS处理器会帮助编译成上面的样式
编译前代码:
nav { ul { margin: 0; padding: 0; list-style: none; } li { display: inline-block; } a { display: block; padding: 6px 12px; text-decoration: none; } }
编译后代码
nav ul { margin: 0; padding: 0; list-style: none; } nav li { display: inline-block; } nav a { display: block; padding: 6px 12px; text-decoration: none; }
了解局部模块
scss文件名如果命名成斜杠开头如_partial.scss,那么这个文件不会被编译处理,但是你可以通过@import partial 来导入该模块。
这样就可以大大简化和方便管理CSS代码。
了解导入(Import)
导入这个命令可以让你的css划分成更小的部分,更容易管理。在css中如果使用@import命令会导致 增加http请求,并且这个导入的css会在页面所有内容加载完成后才应用到页面上。而SASS的Import与CSS中的不同,它不会增加额外的请求, 被导入和导入的文件最后会合并成一个css文件,例如我们将_reset.scss导入到base.scss
编译前代码:
// _reset.scss html, body, ul, ol { margin: 0; padding: 0; }
/* base.scss */ @import 'reset'; body { font: 100% Helvetica, sans-serif; background-color: #efefef; }
编译后代码:
html, body, ul, ol { margin: 0; padding: 0; } body { font: 100% Helvetica, sans-serif; background-color: #efefef; }
了解Mixins
有些CSS写起来是相当冗长乏味的,特别是CSS3的一些浏览器兼容的前缀,mixin让你事先声明一组重复使用的CSS,你甚至可以传递变量给这组CSS
编译前代码:
@mixin border-radius($radius) { -webkit-border-radius: $radius; -moz-border-radius: $radius; -ms-border-radius: $radius; border-radius: $radius; } .box { @include border-radius(10px); }
编译后代码:
.box { -webkit-border-radius: 10px; -moz-border-radius: 10px; -ms-border-radius: 10px; border-radius: 10px; }
扩展/继承(Extend/Inheritance)
这是SASS的一组最重要的特性,使用@extend让你从一个选择器分享一组CSS属性,我们下面将创建一些错误消息、警告、和成功的样式。这可以避免你写过多重复的样式。
编译前代码:
.message { border: 1px solid #ccc; padding: 10px; color: #333; } .success { @extend .message; border-color: green; } .error { @extend .message; border-color: red; } .warning { @extend .message; border-color: yellow; }
编译后代码:
.message, .success, .error, .warning { border: 1px solid #cccccc; padding: 10px; color: #333; } .success { border-color: green; } .error { border-color: red; } .warning { border-color: yellow; }
运算符
在css中如果可以做运算操作就非常方便,SASS支持了一系列运算符:+, -, *, /, 和 %,下面是一个创建流式布局的例子,width 转换成百分比
编译前代码:
.container { 100%; } article[role="main"] { float: left; 600px / 960px * 100%; } aside[role="complimentary"] { float: right; 300px / 960px * 100%; }
编译后代码:
.container { 100%; } article[role="main"] { float: left; 62.5%; } aside[role="complimentary"] { float: right; 31.25%; }