-
- 為什麼要學習Sass和Compass
- 簡單來說主要目标
- 那麼到底哪些人需要來學習sass和compass呢
- Sass的工作流程
- sass文法分類
- Sass文法
- Scss文法
- sass文法分類
- Sass和compass安裝
- Ruby的安裝
- 安裝Sass和檔案建立
- compass安裝和檔案建立
- sass文法使用
- 變量操作
- 為什麼要學習Sass和Compass
為什麼要學習Sass和Compass
簡單來說,主要目标:
- 使用Sass和compass可以寫出更加優秀的CSS
- 可以解決CSS編寫過程中的一些痛點問題,如精靈圖合成sprite 等
- 能夠有效的組織樣式,圖檔,字型等項目元素
當然前提是你要首先會寫CSS,要不然也不會寫出好的Sass和compass,不過也不排除意外。
那麼到底哪些人需要來學習sass和compass呢
- 擔任重構工作的同學,寫很多CSS,不知如何自動化.
- 前端JS工程師,希望在項目周期内更好組織項目内容。
Sass的工作流程

- 首選第一步編寫字尾為.scss或者.sass的代碼檔案,這裡為什麼會有兩種不同的字尾命名方式呢,這要和sass的曆史和CSS3的發展有關.最早的sass檔案都是以.sass為字尾檔案,随着CSS3的發展Sass加入了.scss的類似CSS代碼編寫風格的檔案。
- 通過Sass引擎compass編譯生成字尾為*.css檔案最後将樣式代碼Deploy到代碼倉庫(git或者github)上,生成靜态頁面網頁呈現。
sass文法分類
.Sass文法
h1
color: #000
background: #fff;
.Scss文法
h1{
color: #000;
background: #fff;
}
注意:一個項目中可混合使用兩種文法,但不能在一個檔案中使用兩種文法
Sass和compass安裝
由于Sass底層開發環境是由Ruby開發的,是以需要部署安裝Ruby進行Sass的安裝和編譯使用,下面介紹一下Ruby的安裝。
注意:這裡說明一點,由于中國網絡的限制,一般Ruby的安裝是需要翻牆的,具體怎麼翻,相信大家都有自己的方法,網上也可以搜到很對,這裡就不做介紹了
Ruby的安裝
登入Ruby的官方網站http://www.ruby-lang.orrg/en/進行下載下傳安裝,可以下載下傳Mac,Linux,Windows 版本,這裡講一下Windows版本的安裝,其他作業系統類似。
安裝Ruby,選擇檔案目錄,注意添加Ruby的執行程式到你安裝的路徑中。
檢視Ruby版本号
這裡同樣由于網絡原因,需要将Amazon上的Ruby資源路徑換成國内淘寶Ruby資源路徑
執行
gem sources --remove https://rubygems.org/ //移除原來資源檔案
gem sources -a https://ruby.taobao.org/ //換成淘寶資源
安裝Sass和檔案建立
gem install sass
同時可以指定sass安裝版本号3.3
解除安裝指定版本
建立一個名為learn-sass-cli的檔案
mkdir learn-sass-cli //建立檔案
cd learn-sass-cli/ //進入檔案目錄
echo off >main.scss //建立main.scss檔案
sass main.scss mian.css //将main.scss檔案編譯成main.css檔案
打開main.scss檔案,輸入簡單的全局設定樣式
*{
margin: ;
pading: ;
}
編譯生成的檔案目錄如下所示
其中.sass-cache是一個編譯緩存檔案,main.scss是一個sass檔案,main.css.map是一個映射檔案,main.css便是最終編譯生成的樣式檔案。
至此sass的安裝和檔案建立便完成了,下面介紹compass的安裝和建立
compass安裝和檔案建立
comapss安裝類似sass
gem install compass
compass -v //檢視版本号
建立workspace工作檔案
mkdir workspace
cd workspace/
compass create learn-compass-init //建立compass檔案
實時監聽檔案變化
cd learn-compass-init/
compass watch
workspace工程目錄如下所示
在sass目錄下建立一個存放變量的_variable.scss檔案
分别定義headline-ff和main-sec-ff兩個字型變量,輸入相應的字型内容:
$headline-ff: Braggadocio, Arial, Verdana, Helvetica, scans-serif;
$main-sec-ff: Arial, Verdana, Helvetica, scans-serif;
之後在
screen.scss
檔案中導入該檔案和系統自定義的樣式重置檔案,
screen.scss
稱為“宿主檔案”:
@import "variable", "compass/reset";
注意:這裡的@import不同于CSS原生的@import,CSS中原生的@import指令有兩大弊端,1,@import始終要放在代碼的最前面2,對性能不利
編寫主題樣式和頁面主題樣式
//主标題樣式
.headline{
font-family: $headline-ff;
}
/* 頁面主題内容樣式 */
.main-sec{
font-family: $main-sec-ff;
.headline{
font:{
family: $main-sec-ff;
size: px;
}
}
.detail {
font-size: px;
}
}
在screen.css檔案中編譯生成的代碼如下:
/* line 25, ../sass/screen.scss */
.headline {
font-family: Braggadocio, Arial, Verdana, Helvetica, scans-serif;
}
/* 頁面主題内容樣式 */
/* line 30, ../sass/screen.scss */
.main-sec {
font-family: Arial, Verdana, Helvetica, scans-serif;
}
/* line 33, ../sass/screen.scss */
.main-sec .headline {
font-family: Arial, Verdana, Helvetica, scans-serif;
font-size: px;
}
/* line 40, ../sass/screen.scss */
.main-sec .detail {
font-size: px;
}
上面代碼中使用了類似CSS編寫過程中的中文注釋,這裡有些中文注釋會在終端compss監聽中報錯,主要是ruby引擎的問題,解決方法是:找到rubyd 的安裝目錄裡面的sass子產品,路徑如下:C:\Ruby\lib\ruby\gems\1.9.1\gems\sass-3.3.14\lib\sass,檔案裡面有個engine.rb,打開之後在所有的require XXXX後面添加代碼
Encoding.default_external = Encoding.find('utf-8)
。現在一般浏覽器都是用的utf-8字元。
sass文法使用
1. 變量操作
①直接操作變量,即變量表達式。
在_variable.scss檔案中統一定義變量,變量定義用$開頭
調用變量
div{
color: $color;
}
編譯生成的css檔案
div{
color: #fff;
}
②通過函數
-
跟代碼無關的函數,多是自己内置函數,稱為functions
自定義函數
@function trible($i){
@return $i * ;
}
//trible函數傳回三倍資料
調用
div{
width: trible(px);
}
編譯實作效果
div{
widt: px;
}
-
可重用的代碼塊,稱為mixin
mixinl類似于C中的宏定義,可以多次調用代碼塊,有
和@include
兩種不同方式,同樣首先建立外部_mixin.scss外部代碼檔案@extend
Sass和Compass學習筆記(1)
1.使用
@include
方法
定義響應式代碼塊col-6子產品,
@mixin col-6{
width: %;
float: left;
}
使用
@include
指令調用,首先同樣需要将mixin塊import進來
@import "mixin";
.demo{
@include col-6();
&:hover{
background-color: #fff;
}
}
編譯轉換效果
.demo{
width: %;
float: left;
}
.demo:hover{background: #fff;}
2.使用mixin還能指定參數和預設值
@mixin col($width){
width: $width;
float: left;
}
調用
.demo{
@include col(50%);
}
編譯生成效果
.demo{
width: %;
float: left;
}
3.使用
@extend
方法
現有兩個錯誤級别,error和serious-error,
①第一張方案,serious-error中複用error中的color屬性設定,造成了代碼的備援
.error{
color: red;
}
.serious-error{
color: red;
font-size: px;
}
html檔案
<div class="error">基本錯誤</div>
<div class="serious-error">嚴重錯誤</div>
②第二種方案,在html中同時引入error類,不有利于語義化
.error{
color: red;
}
.serious-error{
font-size: px;
}
html檔案
<div class="error">基本錯誤</div>
<div class="error serious-error">嚴重錯誤</div>
③使用
@extend
方案
.error{
color: red;
}
.serious-error{
@extend: .error;
font-size: px;
}
編譯生成css代碼效果
.error, .serious-error{
color: red;
}
.serious-error{
font-size: px;
}
- 使用&符号,生成a标簽的hover僞類
a{
&:hover {color: #f0f0f0;}
}
生成css檔案
a:hover{
color: #f0f0f0;
}
内部屬性嵌套,在頭檔案中字型font定義:
.headline{
font:{
size: px;
family: "微軟雅黑";
}
}
編譯生成css代碼:
.headline{
font-size: px;
font-family: "微軟雅黑";
}
(end)