標籤:text 簡潔 基本用法 css 壓縮 進階 bar targe 20px
看的這篇文章 http://www.frostsky.com/2014/07/sass-scss/ 寫的還比較清晰
SASS是CSS3的一個擴充,增加了規則嵌套、變數、混合、選取器繼承等等。通過使用命令列的工具或WEB架構外掛程式把它轉換成標準的、格式良好的CSS代碼。
SCSS即是SASS的新文法,是Sassy CSS的簡寫,是CSS3文法的超集,也就是說所有有效CSS3樣式也同樣適合於SASS。
SASS與SCSS的區別如下:
Sass 有兩種文法規則(syntaxes),目前新的文法規則(從 Sass 3開始)被稱為 “SCSS”( 時髦的css(Sassy CSS)),它是css3文法的的拓展級,
就是說每一個文法正確的CSS3檔案也是合法的SCSS檔案,SCSS檔案使用.scss作為拓展名。第二種文法別成為縮排文法(或者 Sass),它受到了Haml的簡潔精鍊的啟發,它是為了人們可以用和css相近的但是更精簡的方式來書寫css而誕生的。它沒有括弧,分號,它使用 行縮排 的方式來指定css 塊,雖然sass不是最原始的文法,但是縮排文法將繼續被支援,在縮排文法的檔案以 .sass 為拓展名。
以下是一些例子:
———————————在SCSS中使用變數———————————$blue: #3bbfce;$margin: 16px;.content-navigation {border-color: $blue;color:darken($blue, 9%);}.border {padding: $margin / 2;margin: $margin / 2;border-color: $blue;}轉換成CSS如下:/* CSS */.content-navigation {border-color: #3bbfce;color: #2b9eab;}.border {padding: 8px;margin: 8px;border-color: #3bbfce;}
——————————————-
SCSS嵌套:
——————————————-
table.hl {margin: 2em 0;td.ln {text-align: right;}}li {font: {family: serif;weight: bold;size: 1.2em;}}轉換成CSS如下:/* CSS */table.hl {margin: 2em 0;}table.hl td.ln {text-align: right;}li {font-family: serif;font-weight: bold;font-size: 1.2em;}
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 compressed test.sass test.css
你也可以讓SASS監聽某個檔案或目錄,一旦源檔案有變動,就自動產生編譯後的版本。
// watch a file
sass –watch input.scss:output.css
// watch a directory
sass –watch app/sass:public/stylesheets
基本用法
3.1 變數
SASS允許使用變數,所有變數以$開頭。$blue : #1875e7;div {color : $blue;}如果變數需要鑲嵌在字串之中,就必須需要寫在#{}之中。$side : left;.rounded {border-#{$side}-radius: 5px;}
3.2 計算功能
SASS允許在代碼中使用算式:body {margin: (14px/2);top: 50px + 100px;right: $var * 10%;}
3.3 嵌套
SASS允許選取器嵌套。比如,下面的CSS代碼:div h1 {color : red;}可以寫成:div {hi {color:red;}}屬性也可以嵌套,比如border-color屬性,可以寫成:p {border: {color: red;}}注意,border後面必須加上冒號。在嵌套的代碼塊內,可以使用$引用父元素。比如a:hover偽類,可以寫成:a {&:hover { color: #ffb3ff; }}
3.4 注釋
SASS共有兩種注釋風格。標準的CSS注釋 /* comment */ ,會保留到編譯後的檔案。單行注釋 // comment,只保留在SASS源檔案中,編譯後被省略。在/*後面加一個驚嘆號,表示這是”重要注釋”。即使是壓縮模式編譯,也會保留這行注釋,通常可以用於聲明著作權資訊。/*!重要注釋!*/
四、代碼的重用
4.1 繼承
SASS允許一個選取器,繼承另一個選取器。比如,現有class1:.class1 {border: 1px solid #ddd;}class2要繼承class1,就要使用@extend命令:.class2 {@extend .class1;font-size:120%;}
4.2 Mixin
Mixin有點像C語言的宏(macro),是可以重用的代碼塊。使用@mixin命令,定義一個代碼塊。@mixin left {float: left;margin-left: 10px;}使用@include命令,調用這個mixin。div {@include left;}mixin的強大之處,在於可以指定參數和預設值。@mixin left($value: 10px) {float: left;margin-right: $value;}使用的時候,根據需要加入參數:div {@include left(20px);}下面是一個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); }#footer { @include rounded(top, left, 5px); }
4.3 顏色函數
SASS提供了一些內建的顏色函數,以便產生系列顏色。lighten(#cc3, 10%) // #d6d65cdarken(#cc3, 10%) // #a3a329grayscale(#cc3) // #808080complement(#cc3) // #33c
4.4 插入檔案
@import命令,用來插入外部檔案。@import “path/filename.scss”;如果插入的是.css檔案,則等同於css的import命令。@import “foo.css”;
五、進階用法
5.1 條件陳述式
@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;}
5.2 迴圈語句
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);}
SCSS(SASS、CSS)學習