"CSS預(yù)處理器"(css preprocessor)。它的基本思想是沃暗,用一種專門的編程語言悠栓,進(jìn)行網(wǎng)頁樣式設(shè)計卡乾,然后再編譯成正常的CSS文件缰雇。
SASS是一種CSS的開發(fā)工具衡查,提供了許多便利的寫法个盆,大大節(jié)省了設(shè)計者的時間吧凉,使得CSS的開發(fā),變得簡單和可維護怎栽。
.Sass和SCSS的區(qū)別
文件擴展名不同:“.sass”和“.scss”丽猬;
Sass是以嚴(yán)格縮進(jìn)式語法規(guī)則來書寫的,不帶大括號和分號熏瞄;
而SCSS的語法和CSS書寫語法類似脚祟。
SASS是Ruby語言寫的,但是兩者的語法沒有關(guān)系强饮。不懂Ruby由桌,照樣使用。只是必須先安裝Ruby邮丰,然后再安裝SASS行您。
假定你已經(jīng)安裝好了Ruby,接著在命令行輸入下面的命令:
gem install sass
SASS文件就是普通的文本文件剪廉,里面可以直接使用CSS語法娃循。文件后綴名是.scss,意思為Sassy CSS
下面的命令斗蒋,可以在屏幕上顯示.scss文件轉(zhuǎn)化的css代碼捌斧。(假設(shè)文件名為test)
sass test.scss
如果要將顯示結(jié)果保存成文件,后面再跟一個.css文件名泉沾。
sass test.scss test.css
SASS提供四個編譯風(fēng)格的選項:
* nested:嵌套縮進(jìn)的css代碼捞蚂,它是默認(rèn)值。
* expanded:沒有縮進(jìn)的爆哑、擴展的css代碼。
* compact:簡潔格式的css代碼舆吮。
* compressed:壓縮后的css代碼揭朝。
生產(chǎn)環(huán)境當(dāng)中队贱,一般使用最后一個選項。
sass --style compressed test.sass test.css
你也可以讓SASS監(jiān)聽某個文件或目錄潭袱,一旦源文件有變動柱嫌,就自動生成編譯后的版本。
// watch a file
sass --watch input.scss:output.css
// watch a directory
sass --watch app/sass:public/stylesheets
三屯换、基本用法
變量
SASS允許使用變量编丘,所有變量以$開頭。
$blue : #1875e7;
div {
color : $blue;
}
如果變量需要鑲嵌在字符串之中彤悔,就必須需要寫在#{}之中嘉抓。
$side : left;
.rounded {
border-#{$side}-radius: 5px;
}
計算功能
SASS允許在代碼中使用算式:
body {
margin: (14px/2);
top: 50px + 100px;
right: $var * 10%;
}
嵌套
SASS允許選擇器嵌套。比如晕窑,下面的CSS代碼:
div h1 {
color : red;
}
可以寫成:
div {
hi {
color:red;
?} }
屬性也可以嵌套抑片,比如border-color屬性,可以寫成:
p {
border: {
color: red;
}? }
注意杨赤,border后面必須加上冒號敞斋。
在嵌套的代碼塊內(nèi),可以使用&引用父元素疾牲。比如a:hover偽類植捎,可以寫成
a {
&:hover { color: #ffb3ff; }
}
注釋
SASS共有三種注釋風(fēng)格。
標(biāo)準(zhǔn)的CSS注釋 /* comment */ 阳柔,會保留到編譯后的文件焰枢。
單行注釋 // comment,只保留在SASS源文件中盔沫,編譯后被省略医咨。
在/*后面加一個感嘆號,表示這是"重要注釋"架诞。即使是壓縮模式編譯拟淮,也會保留這行注釋,通城从牵可以用于聲明版權(quán)信息很泊。
/*!
重要注釋!
*/
繼承
SASS允許一個選擇器沾谓,繼承另一個選擇器委造。比如,現(xiàn)有class1:
.class1 {
border: 1px solid #ddd;
}
class2要繼承class1均驶,就要使用@extend命令:
.class2 {
@extend .class1;
font-size:120%;
}
Mixin
Mixin有點像C語言的宏(macro)昏兆,是可以重用的代碼塊。
使用@mixin命令妇穴,定義一個代碼塊
@mixin left {
float: left;
margin-left: 10px;
}
使用@include命令爬虱,調(diào)用這個mixin隶债。
div {
@include left;
}
mixin的強大之處,在于可以指定參數(shù)和缺省值跑筝。
@mixin left($value: 10px) {
float: left;
margin-right: $value;
}
使用的時候死讹,根據(jù)需要加入?yún)?shù):
div {
@include left(20px);
}
顏色函數(shù)
SASS提供了一些內(nèi)置的顏色函數(shù),以便生成系列顏色
lighten(#cc3, 10%) // #d6d65c
darken(#cc3, 10%) // #a3a329
grayscale(#cc3) // #808080
complement(#cc3) // #33c
插入文件
@import命令曲梗,用來插入外部文件赞警。
@import "path/filename.scss";
如果插入的是.css文件,則等同于css的import命令虏两。
@import "foo.css";
條件語句
@if可以用來判斷:
p {
@if 1 + 1 == 2 { border: 1px solid; }
@if 5 < 3 { border: 2px dotted; }
}
配套的還有@else命令:
@if lightness($color) > 30% {
background-color: #000;
} @else {
background-color: #fff;
}
循環(huán)語句
SASS支持for循環(huán):
@for $i from 1 to 10 {
.border-#{$i} {
border: #{$i}px solid blue;
} }
也支持while循環(huán):
$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");
}? }
自定義函數(shù)
SASS允許用戶編寫自己的函數(shù)
@function double($n) {
@return $n * 2;
}
#sidebar {
width: double(5px); }