SASS是什麼 傳統的CSS是一種單純的描述性樣式文件,然而SASS可以對CSS進行預編譯處理。 在SASS源碼中可以使用變數、函數、繼承等動態語言的特性,並且可以編譯成CSS文件。 安裝與使用 安裝 由於sass是ruby寫的,所以想要使用sass就需要安裝ruby環境。然後再使用gem安裝sas ...
SASS是什麼
傳統的CSS是一種單純的描述性樣式文件,然而SASS可以對CSS進行預編譯處理。 在SASS源碼中可以使用變數、函數、繼承等動態語言的特性,並且可以編譯成CSS文件。
安裝與使用
安裝
由於sass是ruby寫的,所以想要使用sass就需要安裝ruby環境。然後再使用gem安裝sass。 輸入下麵的命令進行安裝sass:
gem install sass
可以使用sass -v
命令查看sass的版本。
使用
新建一個尾碼名為.scss
源碼文件,就可以編輯sass源碼了。 然後使用下麵的命令可以將源碼文件編譯轉換為css並顯示在屏幕上。
sass test.scss
也可以在後面加上尾碼名為.css
的文件名,就可以在當前目錄生成css文件。如下:
sass test.scss test.css
註:.sass
與.scss
這兩種的區別在於.sass
文件對代碼的排版有著非常嚴格的要求,而且沒有大括弧,沒有分號。
命令參數
--style:編譯風格
sass提供四種編譯風格選項:
- nested:嵌套縮進的css代碼,它是預設值。
- expanded:沒有縮進的、擴展的css代碼。
- compact:簡潔格式的css代碼。
- compressed:壓縮後的css代碼。
e.g.
sass test.scss test.css --style compressed
--watch:監聽文件變動
sass可以監聽源文件變動,並自動生成編譯後的版本。 e.g.
//監聽單個文件
sass --watch test.scss:test.css
//監聽目錄
sass --watch sassFileDirectory:cssFileDirectory
變數
SASS使用$
開頭定義變數
$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;
}
Mixin
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;
}
需要註意的是,必須先定義沒有預設值的參數,後指定有預設值的參數。
Import
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迴圈
使用@for
來定義迴圈體。 $i
表示迴圈變數,from
後面跟上開始數值,to
後面跟結束數值。
@for $i from 1 to 20 {
.page-index#{$i} {
color: #FFFFFF;
}
}
WHILE迴圈
使用@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);
}
轉載