sass依赖Ruby, 因此Windows要先安装Ruby, Mac自带无需安装css
$ gem install sass
.sass : 它使用 “缩进” 代替 “花括号” 表示属性属于某个选择器,用 “换行” 代替 “分号” 分隔属性, 容易阅读 书写更快html
.scss : CSS3 语法写法相同缓存
两者可互相转换: sass
$ sass-convert style.sass style.scss
提高从新编译的速度ruby
在 .sass_cache 文件夹中app
禁用缓存 :cache 设置为 falseless
$highlight-color 好比建立一个文件用来存放全部color变量ide
#content { article { h1 { color: #333 } p { margin-bottom: 1.4em } } aside { background-color: #EEE } }
.container h1, .container h2, .container h3 { margin-bottom: .8em } 变成 .container { h1, h2, h3 {margin-bottom: .8em} }
nav { border: { style: solid; width: 1px; color: #ccc; } }
会导入 themes/_night-sky.scss文件
b. 用于变量,含义是:若是这个变量被声明赋值了,那就用它声明的值,不然就用这个默认值。 a. @import"themes/night-sky";!default
$fancybox-width: 400px !default; .fancybox { width: $fancybox-width; }
c. 导入css文件, 把原始的css
文件更名为.scss
后缀,便可直接导入了函数
d. 若是须要导入 SCSS 或者 Sass 文件,但又不但愿将其编译为 CSS,只须要在文件名前添加下划线,这样会告诉 Sass 不要编译这些文件,但导入语句中却不须要添加下划线。url
body { color: #333; // 这种注释内容不会出如今生成的css文件中, 静默注释 padding: 0; /* 这种注释内容会出如今生成的css文件中 */ }
$version: "1.2.3"; /* This CSS is generated by My Snazzy Framework version #{$version}. */
经过sass
的 @mixin 实现大段样式的重用。@include 引用。容许传参数。 判断一组属性是否应该组合成一个混合器,一条经验法则就是你可否为这个混合器想出一个好的名字。
@mixin link-colors($normal, $hover, $visited) { color: $normal; &:hover { color: $hover; } &:visited { color: $visited; } } a { @include link-colors( $normal: blue, $visited: green, $hover: red ); } @mixin apply-to-ie6-only { * html { @content; } } @include apply-to-ie6-only { #logo { background-image: url(/logo.gif); } }
@extend 告诉 Sass 将一个选择器下的全部样式继承给另外一个选择器。实现样式的组合。明确各个样式之间的关系。
.error { border: 1px #f00; background-color: #fdd; } .seriousError { @extend .error; border-width: 3px; } .criticalError { @extend .seriousError; position: fixed; top: 10%; bottom: 10%; left: 10%; right: 10%; } 编译成 .error, .seriousError, .criticalError { border: 1px #f00; background-color: #fdd; } .seriousError, .criticalError { border-width: 3px; } .criticalError { position: fixed; top: 10%; bottom: 10%; left: 10%; right: 10%; }
@debug 10em + 12em;
@warn "Assuming #{$x} to be in pixels";
@error "$x may not be unitless, was #{$x}.";
$type: monster; p { @if $type == ocean { color: blue; } @else if $type == matador { color: red; } @else if $type == monster { color: green; } @else { color: black; } } @for $i from 1 through 3 { .item-#{$i} { width: 2em * $i; } } @each $animal, $color, $cursor in (puma, black, default), (sea-slug, blue, pointer), (egret, white, move) { .#{$animal}-icon { background-image: url('/images/#{$animal}.png'); border: 2px solid $color; cursor: $cursor; } } $i: 6; @while $i > 0 { .item-#{$i} { width: 2em * $i; } $i: $i - 2; }
$grid-width: 40px; $gutter-width: 10px; @function grid-width($n) { @return $n * $grid-width + ($n - 1) * $gutter-width; } #sidebar { width: grid-width(5); }