SCSS(SASS、CSS)學習

來源:互聯網
上載者:User

標籤: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)學習

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.