傳統的CSS是一種單純的描述性樣式文件,然而SASS能夠對CSS進行預編譯處理。 在SASS源碼中能夠使用變量、函數、繼承等動態語言的特性,而且能夠編譯成CSS文件。css
因爲sass是ruby寫的,因此想要使用sass就須要安裝ruby環境。而後再使用gem安裝sass。 輸入下面的命令進行安裝sass:sass
gem install sass
能夠使用sass -v
命令查看sass的版本。ruby
新建一個後綴名爲.scss
源碼文件,就能夠編輯sass源碼了。 而後使用下面的命令能夠將源碼文件編譯轉換爲css並顯示在屏幕上。函數
sass test.scss
也能夠在後面加上後綴名爲.css
的文件名,就能夠在當前目錄生成css文件。以下:url
sass test.scss test.css
注:.sass
與.scss
這兩種的區別在於.sass
文件對代碼的排版有着很是嚴格的要求,並且沒有大括號,沒有分號。code
--style:編譯風格
sass提供四種編譯風格選項:繼承
e.g.字符串
sass test.scss test.css --style compressed
--watch:監聽文件變更
sass能夠監聽源文件變更,並自動生成編譯後的版本。 e.g.源碼
//監聽單個文件 sass --watch test.scss:test.css //監聽目錄 sass --watch sassFileDirectory:cssFileDirectory
SASS使用$
開頭定義變量scss
$white:#FFFFFF; body{ color: $white; }
若是須要將變量插入到字符串中,須要將變量寫在#{}
中
$imgUrl:"../img/test.png"; body{ background-image: url(#{$imgUrl}); }
SASS容許在代碼中使用算式
$min-left:10px; body{ margin-left:$min-left+20px; }
SASS容許嵌套規則
div{ //選擇器嵌套 p{ color:#FFFFFF; } //屬性嵌套 margin:{ left:10px; } //僞類嵌套 &:hover{ color:#F4F4F4; } }
編譯成CSS樣式爲:
div { margin-left: 10px; } div p { color: #FFFFFF; } div:hover { color: #F4F4F4; }
SASS能夠使用@extend
繼承於另外一個選擇器。
.page{ background-color:#F7F7F7; } .div1{ @extend .page; color:#FFFFFF; }
SASS提供Mixin
相似「函數」的重用代碼塊。 使用@mixin
定義樣式代碼塊,而後使用@include
調用該樣式。 不一樣於@extend
的是Mixin
定義樣式不會編譯輸出在CSS樣式中,而且能夠指定參數和默認值。
//不帶參數的mixin @mixin page{ background-color:#F7F7F7; } //帶參數的mixin @mixin setDefMargin($left, $right, $bottom: 10px,$top: 10px){ margin:$top $right $bottom $left; } .test{ @include page; @include setDefMargin(20px,30px); color:#FFFFFF; }
須要注意的是,必須先定義沒有默認值的參數,後指定有默認值的參數。
sass能夠使用@import
語句,來引用指定的外部文件。
//引入scss文件 @import "variable.scss"; //引入css樣式文件 @import "style.css";
使用@if
和@else
語句能夠用來作條件判斷
$min-margin: 10px; @mixin init-margin($left){ //判斷傳入的參數是否大於最小值 @if $left > $min-margin { margin-left: $left; } @else { margin-left: $min-margin; } } body { @include init-margin(5px); }
使用@for
來定義循環體。 $i
表示循環變量,from
後面跟上開始數值,to
後面跟結束數值。
@for $i from 1 to 20 { .page-index#{$i} { color: #FFFFFF; } }
使用@while
定義循環體,後面跟循環條件。
//循環變量 $i: 2; @while $i<10{ page-index#{$i} { color: #F4F4F4; } $i=$i=1; }
使用@function
語句能夠自定義函數,@return
表示函數的返回值
@function calcNumber($num) { @return $num+10; } body { margin-left: calcNumber(20px); }