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); }