聊聊SCSS的語(yǔ)法(一)

后綴名


SCSS是SASS3的語(yǔ)法分支,其中以\*.scss結(jié)尾的是scss文件昭娩,以\*.sass結(jié)尾的是sass文件凛篙。scss文件和我們平時(shí)使用的css格式相同,表達(dá)式部分使用{}括起來(lái)题禀。

/* .sass文件的語(yǔ)法形式 - 縮進(jìn)式 不帶{}和分號(hào)*/
$baseFont: 14px
.main
  width: 100%
  height: 100vh
  p
    font-size: $baseFont

/* .scss文件的語(yǔ)法形式 */
$baseFont: 14px;
.main {
  width: 100%;
  height: 100vh;

  p {
    font-size: $baseFont;
  }
}


/* .css文件的語(yǔ)法形式 */
.main {
  width: 100%;
  height: 100vh;
}
.main p {
   font-size: 14px;
}

注釋


SCSS文件支持兩種注釋方式:/* *///鞋诗,其中 /**/是標(biāo)注注釋?zhuān)诰幾g的時(shí)候會(huì)被保留下來(lái)。而//單行注釋不會(huì)被轉(zhuǎn)譯出來(lái)迈嘹。

/*我是標(biāo)準(zhǔn)注釋 */
body {
  width: 100%;
  background: #fff;    // 設(shè)置背景顏色
}

編譯后的結(jié)果:

/*我是標(biāo)準(zhǔn)注釋 */
body {
  width: 100%;
  background: #fff;
}

單個(gè)文件引入 @import


/*! a.css*/
.f-s--lg {
  font-size: 22px;
}

/*! b.scss */
.m-t--lg {
  margin-top: 50px;
}

/*! c.scss */
@import './a.scss';
@import './b.scss';

.app-text--success {
  color: blue;
}

轉(zhuǎn)譯后:(c.css)

.m-t--lg {
  margin-top: 50px;
}

.app-text--success {
  color: blue;
}
.app-text--success {
  color: blue;
}

變量


Sass對(duì)于變量類(lèi)型不是非常嚴(yán)格,和JS一樣是弱類(lèi)型語(yǔ)言全庸。

scss的變量以$開(kāi)頭秀仲,后面緊跟變量名,變量名與變量之間用:隔開(kāi)壶笼。scss變量名大小寫(xiě)敏感神僵。如果在變量后加上 !default則表示默認(rèn)值。如果需要覆蓋默認(rèn)值覆劈,只需要在默認(rèn)變量之前定義一遍即可保礼。

$font-size: 14px;

$color-success: green;
$color-success: blue !default;  // 默認(rèn)值

p {
  font-size: $font-size;
  color: $color-success;
}

/*! 解析后的css */
p {
  font-size: 14px;
  color: green;
}

Scss 變量可以使用 type-of()函數(shù)來(lái)檢測(cè)這些變量的類(lèi)型

/*! 字符串類(lèi)型*/
// 分為:帶引號(hào)的和不帶引號(hào)的兩種字符串
$prefix: 'ui-';
$blod: blod;

/*! 數(shù)字類(lèi)型*/
$a: 10;  $b: 1.5; $c: 15px;

/*! 顏色類(lèi)型*/
$color1: #fff;
$color2: blue;
$color3: rgba(0,0,0,.5);

/*! 布爾類(lèi)型*/
$is-top: true / false;

/*! 空值類(lèi)型*/
$d: null;

/*! 值列表*/
$list: 10px 15px 10px;
$list2: Helvetica, Arial, sans-serif;

變量的特殊調(diào)用 #{$prefix}


在項(xiàng)目中為了防止樣式的覆蓋,會(huì)給css的類(lèi)名加上前綴责语。在一般的css文件中會(huì)一個(gè)一個(gè)的類(lèi)加上前綴炮障,在scss中則可以使用#{$prefix}的形式統(tǒng)一加上前綴。

$prefix: 'ui-'!default;
.#{$prefix}alert {
  // code ...
}

/*! 解析后的css */
.ui-alert{
  // code ...
}

多值變量之List


List相當(dāng)于JavaScript中的數(shù)組坤候,使用空格 或者 ,或者()分割多個(gè)值胁赢,可使用nth($val, $index)來(lái)取值。還有length($list),join($list1,$list2,[$separator])等方法白筹。具體參考SASS FUNCTION智末。
定義List

/*! 類(lèi)似JS中的一維數(shù)組*/
$list: 10px 15px 10px 5px;

/*! 類(lèi)似JS中的二維數(shù)組*/
$list2: (10px 15px) (20px 25px);
$list3: 10px 15px, 20px 30px;

使用

$font: 12px  14px;
$margin: (5px 10px) (15px 20px);
.main {
  margin: nth($margin, 2);
  font-size: nth($list, 1);
  
  p {
    margin: nth($margin, 1);
    font-size: nth($list, 2);
  }
}

/*! 轉(zhuǎn)譯后的css */
.main {
  margin: 15px 20px;
  font-size: 12px;
 }
.main p {
  margin: 5px 10px;
  font-size: 14px;
}

多值變量之Map


Map類(lèi)型以鍵值對(duì)形式出現(xiàn): $map: (key1: val1, key2: val2, ...),可以通過(guò)map-get($map, $key)取值谅摄。還有 map-keys($map) map-values($map)等。具體參考SASS FUNCTION系馆。
定義Map

$map: (h1: 2em, h2: 1.5em);

使用

$prefix: 'app-';
$color-list: (
  success: green,
  danger: red,
  wraning: orange
) !default;

@each $key, $val in $color-list {
  .#{$prefix}text--#{$key} {
    color: $val;
  }
}

/*! 轉(zhuǎn)譯后的css */
.app-text--success {color: green;}
.app-text--danger {color: red;}
.app-text--warning {color: orange;}

下期預(yù)告


  • 嵌套(Nesting)
  • 條件語(yǔ)句 (if/else)
  • 循環(huán) (for)
  • 遍歷 (each)
  • 運(yùn)算 (operation)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末送漠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子由蘑,更是在濱河造成了極大的恐慌闽寡,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纵穿,死亡現(xiàn)場(chǎng)離奇詭異下隧,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)谓媒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)淆院,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人句惯,你說(shuō)我怎么就攤上這事土辩。” “怎么了抢野?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵拷淘,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我指孤,道長(zhǎng)启涯,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任恃轩,我火速辦了婚禮结洼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘叉跛。我一直安慰自己松忍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布筷厘。 她就那樣靜靜地躺著鸣峭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪酥艳。 梳的紋絲不亂的頭發(fā)上摊溶,一...
    開(kāi)封第一講書(shū)人閱讀 49,749評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音玖雁,去河邊找鬼更扁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的浓镜。 我是一名探鬼主播溃列,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼膛薛!你這毒婦竟也來(lái)了听隐?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤哄啄,失蹤者是張志新(化名)和其女友劉穎雅任,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體咨跌,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡沪么,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了锌半。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片禽车。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖刊殉,靈堂內(nèi)的尸體忽然破棺而出殉摔,到底是詐尸還是另有隱情,我是刑警寧澤记焊,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布逸月,位于F島的核電站,受9級(jí)特大地震影響遍膜,放射性物質(zhì)發(fā)生泄漏碗硬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一瓢颅、第九天 我趴在偏房一處隱蔽的房頂上張望肛响。 院中可真熱鬧,春花似錦惜索、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至虎囚,卻和暖如春角塑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背淘讥。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工圃伶, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓窒朋,卻偏偏與公主長(zhǎng)得像搀罢,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子侥猩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容