SCSS語法 - SassScript - Variables、除減法運算

 

以下要點不打算多做說明,只列出scss語法與結果

一、SassScript

Scss也提供類似程式化的語法給開發者,目地是讓轉CSS時更有彈性。

我們可以下command line的方式來試著驗證程式寫得對不對,

於command line下打入「$sass -i」,進入sass指令模式,如下範例

$ sass -i
>> "Hello, Sassy World!"
"Hello, Sassy World!"
>> 1px + 1px + 1px
3px
>> #777 + #777
#eeeeee
>> #777 + #888
white

 

1、Variables

scss輸入

$my-color:#333;

body {
color: $my-color;
}

輸出css

body {
  color: #333;
}

 

如果想在各個範圍使用該變數的話,除了將變數宣告在最外層的方法之外,

就是外加!global flag,如下範例

scss輸入

#main {
  $width: 5em !global;
  width: $width;
}

#sidebar {
width: $width;
}

輸出css

#main {
  width: 5em;
}

#sidebar {
width: 5em;
}

 

2、除法運算

SCSS支援除法運算,但是在特定情形下才會被翻成除法,

滿足以上其中一個條件即可,

a、如果「/」符號包含著一個變數或是function的回傳值,則「/」符號被翻成除法

p {
    $width: 1000px;
    width: $width/2;    
    width: round(1.5)/2;
}
p {
    $font-size: 12px;
    $line-height: 30px;
    font: #{$font-size}/#{$line-height}; //注意,使用#{}起來的變數被視為plain css
}

b、如果「/」符號外被括號所括起來,則「/」符號被翻成除法,但不包含外圍被括號所括起來的List

p {
    height: (500px/2);
}
p {
    font: (italic bold 10px/8px); //不被視為除法
}

c、如果「/」符號和其他運算式所結合,則「/」符號被翻成除法

p {
    margin-left: 5px + 8px/2px;
}

 

3、減法運算

減法運算應用於屬性值裡基本上都很安全,但以下幾個狀況則不被視別減法運算

a、被視為負數

p {
    width: -100px;
}

b、被視為identifier

p {
    font-weight: 100;
}

 

4、字串可以使用「+」來組合字串

scss輸入

p:before {
    content: "Foo " + Bar;
    font-family: sans- + "serif";
}

輸出css

p:before {
  content: "Foo Bar";
  font-family: sans-serif;
}

 

5、顏色也可以拿來做運算

 

6、Variable Defaults

scss輸入

$content: "First content";
$content: "Second content?" !default;
$new_content: "First time reference" !default;

#main {
content: $content;
new-content: $new_content;
}

輸出css

#main {
  content: "First content";
  new-content: "First time reference";
}

如上範例,加上「!default」修飾詞時表示,該變數值沒被指定時則使用該預設值。

有含「!default」修飾詞的變數與不含「!default」修飾詞的變數誰先宣告並沒有先後順序之分。