Sass基礎
變數Variable
變數是在樣式單中重用資訊的一種方式。 你可以儲存顏色,字型設定 或者其它的你要重用的CSS值。 Sass使用$
標記變數, 這裡是一個例子:
1 2 3 4 5 6 7
|
$font-stack: Helvetica, sans-serif; $primary-color: #333; body { font: 100% $font-stack; color: $primary-color; }
|
當處理Sass時, 它得到變數$font-stack
和$primary-color
的值, 並用它們替換CSS中的變數為正常的CSS的值。 當處理已命名的顏色時這個功能相當強大,可以讓CSS保持一致。
1 2 3 4
|
body { font: 100% Helvetica, sans-serif; color: #333; }
|
巢狀Nesting
當寫HTML程式碼時, 你可能注意到它有一個清晰的巢狀和視覺化的繼承關係(意者按:DOM)。 而CSS缺乏這個功能。
Sass可以讓你巢狀你的CSS選擇器(selector), 就像HTML的視覺化繼承關係一樣。注意過度的巢狀也可能導致過度設計的CSS。 這會很難維護,通常被認為的差的實踐。
考慮到這一點, 這裡是一個站點導航的典型的樣式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
nav { ul { margin: 0; padding: 0; list-style: none; } li { display: inline-block; } a { display: block; padding: 6px 12px; text-decoration: none; } }
|
這裡的ul
,li
,a
選擇器都巢狀在nav
中。 這是一個極佳的組織CSS的方式, 讓CSS變的更可讀。 當你產生CSS時你會得到:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
nav ul { margin: 0; padding: 0; list-style: none; } nav li { display: inline-block; } nav a { display: block; padding: 6px 12px; text-decoration: none; }
|
分部檔案Partial
你可以建立部分的Sass檔案,這些檔案包含CSS的小的可以插入到其它Sass檔案的片段。這又是一個極佳的模版化CSS的方式, 可以更好的維護CSS。一個分部檔案的名字以下劃線開頭比如_partial.scss. 下劃線讓Sass知道這個檔案是一個分部檔案,不會為它單獨產生一個CSS檔案。可以使用@import匯入分部檔案.
匯入Import
CSS有一個匯入(import)選項。 它可以讓你的CSS檔案分割成一些小的更易維護的檔案。 唯一的缺點是你需要在CSS使用 @import
, 它會產生另外一個HTTP請求 (?)。 Sass在構建頂層CSS時不會請求新的HTTP request,而是得到你要引入的檔案並把它插入到當前檔案中。所以你只會得到唯一一個CSS檔案.
來看兩個檔案 _reset.scss
and base.scss
. 我們會匯入 _reset.scss
到 base.scss
.
1 2 3 4 5 6 7 8 9
|
// _reset.scss html, body, ul, ol { margin: 0; padding: 0; }
|
1 2 3 4 5 6 7 8
|
/* base.scss */ @import 'reset'; body { font-size: 100% Helvetica, sans-serif; background-color: #efefef; }
|
注意在檔案base.scss
中你使用的是@import 'reset'
; 當你匯入一個檔案時你不必包含字尾 .scss
. Sass足夠聰明,會正確工作. 當產生CSS檔案後,你會得到:
1 2 3 4 5 6 7 8 9
|
html, body, ul, ol { margin: 0; padding: 0; } body { background-color: #efefef; font-size: 100% Helvetica, sans-serif; }
|
Mixins
有些東西在CSS中編寫起來相當乏味, 尤其是當許多供應商的字首 ( vendor prefixes, 指-webkit-XXXX等)存在時。 mixin可以為CSS宣告分組, 可以在站點中重用。你甚至可以傳遞給它一些引數, 這相當靈活. mixin一個很好的應用就是處理瀏覽器變種的字首。 請看 border-radius
的例子.
1 2 3 4 5 6 7 8
|
@mixin border-radius($radius) { -webkit-border-radius: $radius; -moz-border-radius: $radius; -ms-border-radius: $radius; border-radius: $radius; } .box { @include border-radius(10px); }
|
你可以使用 @mixin
建立mixin, 並賦予一個名字. 這裡我們命名這個mixin 為border-radius
. 我們在圓括號裡使用變數作為引數, 這樣我們可以傳入一個我們想要的值。 當你建立了你的mixin, 你可以用@include
使用它作為CSS宣告。 @include緊跟著 mixin的名字. 當生成CSS後, 生成的CSS會是這樣:
1 2 3 4 5 6
|
.box { -webkit-border-radius: 10px; -moz-border-radius: 10px; -ms-border-radius: 10px; border-radius: 10px; }
|
擴充套件/繼承Extend/Inheritance
這是Sass最有用的特性之一。使用 @extend
可以讓一個selector共享另外一個selector的CSS屬性。 它可以讓你的Sass遵循DRY原則(Don’t repeat yourself). 下面的例子中我們會建立一個系列訊息類如 error, warning 和 success.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
.message { border: 1px solid #ccc; padding: 10px; color: #333; } .success { @extend .message; border-color: green; } .error { @extend .message; border-color: red; } .warning { @extend .message; border-color: yellow; }
|
上面的程式碼允許你獲取.message
的CSS屬性並將它們應用到.success
, .error
和 .warning
上. 魔法在生成的CSS上呈現, 它幫助你避免在一個HTML元素上寫多個類名。 結果看起來就像:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
.message, .success, .error, .warning { border: 1px solid #cccccc; padding: 10px; color: #333; } .success { border-color: green; } .error { border-color: red; } .warning { border-color: yellow; }
|
Operator
在CSS中的數學運算很有幫助. Sass可以使用標準的數學運算 +
, -
, *
, /
, and %
. 這個例子我們會計算aside
&article
的寬度.
1 2 3 4 5 6 7 8 9 10 11
|
.container { width: 100%; } article[role="main"] { float: left; width: 600px / 960px * 100%; } aside[role="complimentary"] { float: right; width: 300px / 960px * 100%; }
|
我們已經建立了一個簡單的960px流式表格. Sass運算子可以使用畫素值並輕易地把它轉為百分比的表示。產生的CSS如下:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
.container { width: 100%; } article[role="main"] { float: left; width: 62.5%; } aside[role="complimentary"] { float: right; width: 31.25%; }
|
相關文章
- [sass 基礎] .sass 和 .scss 區別CSS
- Sass/Scss 基礎篇CSS
- css預編譯--sass基礎篇CSS編譯
- sass學習
- sass安裝
- sass簡介
- webpack+sassWeb
- Sass入門
- sass變數詳解——你不知道的sass。變數
- 【FPGA基礎】Latch基礎FPGA
- webpack+vue+sass專案中,sass提取全域性引用WebVue
- Java基礎-語法基礎Java
- Pandas 基礎 (2) - Dataframe 基礎
- 前端基礎之jQuery基礎前端jQuery
- [今日白學]元件的基礎的基礎的基礎元件
- sublime px -> rem sassREM
- sass學習篇
- SASS元件開發元件
- SASS知識點
- Sass使用總結
- SASS樣式指南
- SASS用法指南
- SASS 新手指南
- 【web前端基礎 | JS基礎】物件Web前端JS物件
- scala基礎語法-----Spark基礎Spark
- Java基礎-物件導向基礎Java物件
- 【基礎篇索引】索引基礎(四)索引
- 【基礎篇索引】索引基礎(三)索引
- 【基礎篇索引】索引基礎(二)索引
- 【基礎篇索引】索引基礎(一)索引
- python基礎中的基礎Python
- 基礎
- 【Sass/SCSS】我花4小時整理了的Sass的函式CSS函式
- SCSS 和 SASS 區別CSS
- 總結Sass 變數變數
- webstrom配置sass與lessWeb
- sass與gulp應用
- Sass 語法規則