基本規則:
- 變數用$定義
- 偽類用&定義
-
樣式可巢狀定義,如
#example{ a { body.ie & hover { color: red } color: white; } div {background:black;} }
- body.ie & hover { color: red } <=> body.ie #example a:hover { color: red }
- 巢狀規則適用群組選擇器,> + ~選擇器(sass的巢狀其實就是拼接空格)
-
border: {
style: left: right:
}
<=>border-style: border-left: border-right:
@import的使用:
原生的只有執行到才會載入,速度較慢;而sass的@import在生成檔案時就匯入,相當於合併css檔案
- 區域性檔案,約定用下劃線定義,如(_example.scss),區域性scss檔案不會單獨編譯,只會存在於引用的檔案中.
- 區域性檔案中的變數新增!default( 如 $val = red !default; ),代表預設值,未定義時生效,全域性變數新增!global.
- 巢狀中可呼叫區域性檔案,只在當前巢狀中有效
- 使用原生@import的情況:
檔案字尾為.css;
檔名為URL地址(如http://www.sass.hk/css/css.css;
檔名為CSS的url()值
靜默註釋
編譯後不會顯示,格式: // 註釋
混合器
- 通過@mixin mixin($a:red,$b)定義,@include 呼叫,:後面為預設值
- 使用時機: 能否為這個混合器想出一個好的簡短的名字
繼承
- @extend定義,繼承與父樣式有關的一切樣式(如: .child @extend .father)
- 可以使用選擇器,只對選擇器命中的樣式生效(後面部分),也對子類生效(前面部分).
- 繼承相當於 .father .child,因此會出現複雜的選擇器.
-
為了避免生成大量選擇器,不要在css規則中使用後代選擇器
.foo .bar { @extend .baz; } .bip .baz { a: b; }
這個例子有三個情況 foo->bip->bar 、(foo,bip)->foo->bar、bip-> bar,如果其中一條規則的後代選擇器更復雜則程式碼量呈指數增長.
理解
scss本質上是字串的格式編譯,比如變數,因為是從上到下格式化成css,所以變數只能寫在最前面,編譯器讀取變數值然後替換引用的部分;又比如偽類、巢狀樣式,&則不新增空格直接拼接,:則新增一個-字元。