一、什麼是SASS
SASS是一中CSS的開發工具,提供了許多方便的寫法,大大節約了設計者們的時間,使得CSS的開發,變得簡單和可維護。本文總結了SASS的主要方法。我們的目標是,有了這篇文章,日常的一般使用就不需要看官方文件了。
二、安裝和使用
2.1 安裝
SASS是Ruby語言寫的,但是兩者的語法沒有關係。不明白Ruby,照樣使用,只要先安裝Ruby,在安裝SASS,假設你已經安裝RUby,接著指令列輸入下面的指令:
gem insrall sass
然後就可以使用了。
2.2使用
SASS文件就是普通的文字文件,裡面可以直接使用CSS語法。後綴名是.Scss,意思是Sassy CSS。下面的命令,可以在螢幕上顯示.scss檔轉換為css的程式碼。 (假設文件名稱為test)
sass test.scss
如果要將顯示結果儲存文件,後面再接一個.css檔案名稱。
sass test.scss test.css
SASS提供四個程式風格的選項
*nested:嵌套縮排的css程式碼,他是預設值。
*expanded:沒有縮排的,擴充的css程式碼。
*compact:簡潔格式的css程式碼。
*compressed:壓縮後的css程式碼
生產環境當中,一般使用最後一個選項
sass ---style commpressed test.sass test.css
他也可以讓SASSASS檔案有變動,就自動產生編譯後的版本。
//watch a file
sass --watch input.scss
//watch a directory
sass --watch app/sass:public/stylesheets
SASS的官方網站,提供了一個線上轉換器,提供了一個線上轉換器你可以在那裡運行下面的各種例子
三、基本用法
3.1變量
SASS允許使用變量,所以變量用$開頭。
$blue : #1875e7;
div{
color :$blue
}
如果變數需要鑲嵌在字串中,就必須寫在#{}之中。
$side : left;
.rounded{
border-#{side}-radius:5px;
}
3.2 (14px/2);
top : 50px + 100px;
right : $var * 10%;
}
3.3嵌套
S
}3.3嵌套S}。例如下面的CSS程式碼
div h1{
color : red;
}
可以寫成
div{
? ,例如border-color屬性,可以寫成
p{
border:{
color:red;
}
}
}
}
號必須注意假號。
在巢狀程式碼內,可以使用&引用父元素。例如border-color屬性,可以寫成:
a{
&:hover{ color :#ffb3ff; }
}
3.4註解SAS
S共有兩種註解風格。 標準的CSS註解/* comment */,會保留編譯後的檔案。 單行註解//comment,只保留在SASS原始檔中,編譯後省略。 在/*後面加一個感嘆號,”表示這種是重要註釋”,即使是壓縮模式編譯,也會保留這行註釋 ,通常可以用於聲明版權信息。 /*!重要註解*/四、程式碼的重用4.1 繼承SASS允許一個選擇器,例如另一個選擇器,例如現有class1:01.
border:1px solid #ddd;}class2要繼承class1,就要使用@extend指令:.class{ @extend.class1; }4.2 MixinMixin有點像C語言的宏(macro),是可以重複使用的程式碼區塊。 使用@mixin指令,定義一個程式碼區塊。 @mixin left{float:left;margin-left:10px}使用@include-g;強大之處,在於可以指定參數和預設值。 @mimin left($value:10px){float:left;Margin-right:$value}使用的時候,依需求加入參數);
}
下面是一個mixin的實例,用來產生瀏覽器前綴。
@mixin rounded($vert,$horz,$radius:10px){
border-#{$vert}-#{$horz}-radius:$radius;
-moz-border-radius-{# $vert}#{$horz}:$radius;
-webkit-border-#{$vert}-#{$horz}-radius:$radius;
}
使用的時候,可以像下面這樣調用
#navbar li{ @include rounded(top,left);}
#navbar li{ @include rounded(top,left);}#navbar li{ @include rounded(top,left);}
#navbar li{ @include rounded(top,left);}#navbar li{ @include rounded(top,left);}
#footer{ @include rounded(top,left,5px);}
4.3顏色函數
顏色。
lighten(#cc3,10%)//#d6d65c
darken(#cc3,10%)//#a3a329
grayscale(#cc3)//#808080
grayscale(#cc3)//#808080
4.4插入檔案@import 指令,用來插入外部檔案。 @import “path/filename.scss”;如果插入的是.css文件,則等同於css的import指令。 @import “foo.css”;五、進階用法
5.1 條件語句
@if可以用來判斷;
p{
@if 1+1 ==2{border:1px solid ;}
2px dotted;}}配對的還有@else指令:@if lightness($color)>30%{ }@else{SASS支援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指令,作用與for類似:@each $member in a,b,c,d{.#{$member}{Background-image:url(“image/#{$member}. jpg”);}}5.3自訂函數SASS允許使用者編寫自己的函數。 @function double($n){@return $n*2;}#sidebar{Width:double(5px);