Dabao's Tech Blog
Archives
Label
About
GitHub
Facebook

[ CSS ] 在Linux上安裝SCSS/SASS

logo

到今天我們公司依然還未找到美術/前端,因為一直在支援前端需求,寫了一堆的CSS後,我真的覺得這些寫法相當不smart,感覺一直在做重複的事情 ... ,所以我決定引進SCSS來用XD

SASS 安裝步驟

因為安裝過程需要 rubygems,所以優先安裝 rubygems

yum install rubygems
gem install sass

不過因為我在安裝時,遇到了個小問題↓

[root@dev webuser]# gem install sass
Building native extensions.  This could take a while...
ERROR:  Error installing sass:
        ERROR: Failed to build gem native extension.

這是因為我的機器並不是完整的Ruby環境導致(我的機器跟我寫的程式是PHP為主),所以導致出錯,解法如下↓

yum install ruby-devel

Ruby 升級

但是 !!! 當我要再安裝一次時又出現版本不同 … 系統中的ruby default版本1.8.7太低了,至少要1.9以上,所以我又刪除重新安裝

yum remove ruby ruby-devel
yum groupinstall "Development Tools"
yum install openssl-devel
wget http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.gz
tar xvfvz ruby-2.1.2.tar.gz
cd ruby-2.1.2
./configure
make
make install

裝好之後,基本的更新

gem update --system
gem install bundler
gem update

ruby --version
rubygems --version

繼續安裝 SASS

gem install sass

裝好之後測試一下有沒有成功~

vim style.scss

body {
    font-family:arial;
    content {
        color:red;
    }
}

sass –watch style.scss:style.css 這行指令是監控style.scss 只要有變動就會重新生成style.css

還有以下幾種指令可以參考

SASS語法

/* function */
@mixin rounded-top {
$side: top;
$radius: 10px;

border-#{$side}-radius: $radius;
-moz-border-radius-#{$side}: $radius;
-webkit-border-#{$side}-radius: $radius;
}

/* include  */
#navbar li { @include rounded-top; }
#footer { @include rounded-top; }

/* extend */
/* 原始內容 */
.error {
border: 1px #f00;
background-color: #fdd;
}
.seriousError {
border: 1px #f00;
background-color: #fdd;
border-width: 3px;
}
使用 extend, 可寫成下述:
.error {
border: 1px #f00;
background-color: #fdd;
}
.seriousError {
@extend .error;
border-width: 3px;
}

/* Parent References */
/* 原始內容 */
a {
color: #ce4dd6;
&:hover { color: #ffb3ff; }
&:visited { color: #c458cb; }
}
Compile 
a:hover, a:visited ...

/* Arguments */
@mixin rounded($side, $radius: 10px) {
border-#{$side}-radius: $radius;
-moz-border-radius-#{$side}: $radius;
-webkit-border-#{$side}-radius: $radius;
width: $navbar - width / $items - 10px; # 可以做運算
}

#navbar li { @include rounded(top); }
#footer { @include rounded(top, 5px); }
#sidebar { @include rounded(left, 8px); }

/* 拉入另外一個scss檔案,scss 的檔名前面要有 "_" */
/* _rounded.scss => style.scss */
@import "rounded";

/* Interpolation 全域變數 */
/* 原始內容 */
$name: foo;
$attr: border;
p.#{$name} { #{$attr}-color: blue }
Compile 
p.foo { border-color: blue; }

sass 還有個好朋友 compass ,不過我目前沒有用到,以後有機會用到再來介紹它~