注:配合查看:Sass和Compass設計師指南 css
Sass是基於Ruby編程語言的命令行工具。要使用它就必須先在電腦上安裝Ruby,Ruby的安裝能夠經過網址:http://rubyinstaller.org/downloads/,下載最新版Ruby進行安裝,安裝完後能夠使用ruby -v進行驗證是否安裝成功html
經過使用Ruby自帶的 RubyGems的系統來進行安裝程序員
$ gem install sass
使用sass -v驗證是否安裝成功web
sass test.scss
能夠在命令行顯示.scss文件轉化的css代碼編程
sass test.scss test.css
能夠將命令行顯示的結果保存成文件sass
編譯風格的使用:ruby
sass --style compressed test.scss test.css
sass --watch input.scss:output.css
監聽目錄app
sass --watch app/sass:public/stylesheets
$blue : #1875e7; div { color : $blue; }
若變量需嵌套在字符串中,就必須寫在#{}中編程語言
$side : left; .rounded { border-#{$side}-radius : 5px; }
body { margin : (14px/2); top : 50px + 100px; right: $var * 10%; }
div h1 { color: red; }
能夠寫成:ide
div { h1 { color: red; } }
屬性也能夠嵌套:
p { border: { color: red; } }
注:border後面必須加冒號
在嵌套的代碼塊內,能夠使用&引用父元素,例:a:hover能夠寫成
a { &:hover{ color: #ffb3ff;} }
SASS容許一個選擇器繼承另外一個選擇器。例:
.class1 { border: 1px solid #ddd; }
class2要繼承class1就要使用@extend命令
.class2 { @extend .class1; font-size: 100%; }
@mixin left{ float: left; margin-left: 10px; }
使用@include命令,調用這個宏
div { @include left; }
mixin的強大之處在於能夠指定參數和缺省值
@mixin left($value: 10px) { float: left; margin-left: $value; }
使用時根據狀況輸入參數
div { @include left(20px); }
示例:
@mixin rounded($vert, $horz, $radius: 10px) { border-#{$vert}-#{$horz}-radius: $radius; -moz-border-radius-#{$vert}#{$horz}: $radius; -webkit-border-#{$vert}-#{$horz}-radius: $radius; }
注:Firefox支持的廠商前綴寫法是非標準的-moz-border-radius-topleft,而不是-moz-border-top-left-radius
調用
#navbar li { @include rounded(top, left); } #footer { @include rounded(top, left, 5px); }
lighten(#cc3, 10%) // #d6d65c
darken(#cc3, 10%) // #a3a329
grayscale(#cc3) // #808080
complement(#cc3) // #33c
@if能夠用來判斷:
p { @if 1 + 1 == 2 {border: 1px solid #ddd; } @if 5 < 2 {border: 2px dotted #ccc; } }
以及@else配套使用
@if lightness($color) > 30% { background-color: #000; } @else { background-color: #fff; }
for循環
@for $i from 1 to 10 { .border-#{$i} { border: #{$i}px solid blue; } }
while循環
$i: 6; @while $i > 0 { .item-#{$i} {width: 2em * $i; } $i: $i - 2; }
each循環
@each $member in a, b, c, d { .#{$member} { background-image: url("test.jpg"); } }
@function double($n) { @return $n * 2; } #sidebar { width: double(2px); }